spree_backend 4.3.3 → 4.4.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (263) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +222 -0
  3. data/.codeclimate.yml +36 -0
  4. data/.editorconfig +22 -0
  5. data/.eslintignore +7 -0
  6. data/.eslintrc.cjs +29 -0
  7. data/.gem_release.yml +4 -0
  8. data/.github/CONTRIBUTING.md +1 -0
  9. data/.github/ISSUE_TEMPLATE/bug_report.md +47 -0
  10. data/.github/ISSUE_TEMPLATE/feature_request.md +20 -0
  11. data/.github/ISSUE_TEMPLATE.md +39 -0
  12. data/.github/dependabot.yml +7 -0
  13. data/.github/workflows/spelling_lint.yml +34 -0
  14. data/.gitignore +63 -0
  15. data/.rubocop.yml +197 -0
  16. data/.solargraph.yml +20 -0
  17. data/.stylelintignore +4 -0
  18. data/.stylelintrc +6 -0
  19. data/CODE_OF_CONDUCT.md +22 -0
  20. data/Gemfile +59 -3
  21. data/README.md +123 -0
  22. data/SECURITY.md +1 -0
  23. data/app/assets/config/spree_backend_manifest.js +1 -1
  24. data/app/assets/images/backend-cloud-arrow-up.svg +4 -0
  25. data/app/assets/images/backend-eye-open.svg +1 -1
  26. data/app/assets/images/backend-file-earmark-font.svg +4 -0
  27. data/app/assets/images/backend-file-earmark-image.svg +4 -0
  28. data/app/assets/images/backend-file-earmark-music.svg +4 -0
  29. data/app/assets/images/backend-file-earmark-pdf.svg +4 -0
  30. data/app/assets/images/backend-file-earmark-play.svg +4 -0
  31. data/app/assets/images/backend-file-earmark-spreadsheet.svg +3 -0
  32. data/app/assets/images/backend-file-earmark-zip.svg +4 -0
  33. data/app/assets/images/backend-file-earmark.svg +3 -0
  34. data/app/assets/images/backend-hdd.svg +4 -0
  35. data/app/assets/images/backend-link.svg +4 -0
  36. data/app/assets/images/backend-view.svg +1 -1
  37. data/app/assets/javascripts/spree/backend/adjustments.js +5 -5
  38. data/app/assets/javascripts/spree/backend/admin.js +4 -6
  39. data/app/assets/javascripts/spree/backend/calculator.js +1 -1
  40. data/app/assets/javascripts/spree/backend/checkouts/edit.js +1 -1
  41. data/app/assets/javascripts/spree/backend/cms/links.es6 +1 -1
  42. data/app/assets/javascripts/spree/backend/cms/live_preview.es6 +1 -1
  43. data/app/assets/javascripts/spree/backend/cms/page.es6 +22 -40
  44. data/app/assets/javascripts/spree/backend/cms/section.es6 +1 -1
  45. data/app/assets/javascripts/spree/backend/gateway.js +1 -1
  46. data/app/assets/javascripts/spree/backend/general_settings.js +1 -1
  47. data/app/assets/javascripts/spree/backend/global/_index.js +3 -1
  48. data/app/assets/javascripts/spree/backend/global/alerts.es6 +1 -1
  49. data/app/assets/javascripts/spree/backend/global/animate_css.es6 +19 -0
  50. data/app/assets/javascripts/spree/backend/global/fetch_request_utility.es6 +114 -0
  51. data/app/assets/javascripts/spree/backend/global/flatpickr.es6 +2 -1
  52. data/app/assets/javascripts/spree/backend/global/info_alert.es6 +1 -1
  53. data/app/assets/javascripts/spree/backend/global/radio_panel_toggle.es6 +1 -1
  54. data/app/assets/javascripts/spree/backend/global/ransack.es6 +7 -5
  55. data/app/assets/javascripts/spree/backend/global/responsive_menus.es6 +1 -1
  56. data/app/assets/javascripts/spree/backend/global/select2_autocomplete.es6 +4 -4
  57. data/app/assets/javascripts/spree/backend/global/select2_populate.es6 +2 -2
  58. data/app/assets/javascripts/spree/backend/global/side_scroll_indication.es6 +2 -2
  59. data/app/assets/javascripts/spree/backend/global/sortable.es6 +1 -1
  60. data/app/assets/javascripts/spree/backend/global/tinymce.es6 +3 -2
  61. data/app/assets/javascripts/spree/backend/line_items.js +7 -9
  62. data/app/assets/javascripts/spree/backend/line_items_on_order_edit.js +23 -28
  63. data/app/assets/javascripts/spree/backend/menus/_index.es6 +0 -1
  64. data/app/assets/javascripts/spree/backend/menus/menu_item.es6 +1 -1
  65. data/app/assets/javascripts/spree/backend/multi_currency.js +2 -2
  66. data/app/assets/javascripts/spree/backend/option_type_autocomplete.js +1 -1
  67. data/app/assets/javascripts/spree/backend/orders/edit.js +1 -1
  68. data/app/assets/javascripts/spree/backend/payments/edit.js +32 -22
  69. data/app/assets/javascripts/spree/backend/payments/new.js +1 -1
  70. data/app/assets/javascripts/spree/backend/product_picker.js +16 -25
  71. data/app/assets/javascripts/spree/backend/progress.js +5 -3
  72. data/app/assets/javascripts/spree/backend/promotions.js +3 -1
  73. data/app/assets/javascripts/spree/backend/returns/expedited_exchanges_warning.js +1 -1
  74. data/app/assets/javascripts/spree/backend/returns/return_item_selection.js +1 -1
  75. data/app/assets/javascripts/spree/backend/shipments.js +80 -79
  76. data/app/assets/javascripts/spree/backend/spree-select2.js +1 -1
  77. data/app/assets/javascripts/spree/backend/states.js +1 -1
  78. data/app/assets/javascripts/spree/backend/stock_location.js +1 -1
  79. data/app/assets/javascripts/spree/backend/stock_management.js +1 -1
  80. data/app/assets/javascripts/spree/backend/stock_movement.js +58 -13
  81. data/app/assets/javascripts/spree/backend/stock_transfer.js +62 -32
  82. data/app/assets/javascripts/spree/backend/taxon_autocomplete.js +9 -8
  83. data/app/assets/javascripts/spree/backend/taxons.js +17 -14
  84. data/app/assets/javascripts/spree/backend/user_picker.js +1 -1
  85. data/app/assets/javascripts/spree/backend/users/edit.js +1 -1
  86. data/app/assets/javascripts/spree/backend/variant_autocomplete.js +19 -11
  87. data/app/assets/javascripts/spree/backend/variant_management.js +1 -1
  88. data/app/assets/javascripts/spree/backend/zone.js +1 -1
  89. data/app/assets/javascripts/spree/backend.js +13 -33
  90. data/app/assets/javascripts/spree.js +2 -9
  91. data/app/assets/stylesheets/spree/backend/components/_main.scss +8 -0
  92. data/app/assets/stylesheets/spree/backend/plugins/_nav_x.scss +1 -1
  93. data/app/assets/stylesheets/spree/backend/plugins/_select2_custom.scss +1 -1
  94. data/app/assets/stylesheets/spree/backend/shared/_forms.scss +1 -1
  95. data/app/assets/stylesheets/spree/backend/shared/_sortable_tree.scss +62 -0
  96. data/app/assets/stylesheets/spree/backend/spree_admin.css.scss +3 -0
  97. data/app/assets/stylesheets/spree/backend/views/_digitals.scss +33 -0
  98. data/app/assets/stylesheets/spree/backend/views/_taxonomies.scss +3 -0
  99. data/app/controllers/spree/admin/base_controller.rb +4 -13
  100. data/app/controllers/spree/admin/digitals_controller.rb +33 -0
  101. data/app/controllers/spree/admin/general_settings_controller.rb +0 -5
  102. data/app/controllers/spree/admin/images_controller.rb +1 -1
  103. data/app/controllers/spree/admin/oauth_applications_controller.rb +17 -0
  104. data/app/controllers/spree/admin/orders/customer_details_controller.rb +2 -2
  105. data/app/controllers/spree/admin/orders_controller.rb +10 -2
  106. data/app/controllers/spree/admin/payment_methods_controller.rb +2 -2
  107. data/app/controllers/spree/admin/payments_controller.rb +1 -1
  108. data/app/controllers/spree/admin/products_controller.rb +4 -2
  109. data/app/controllers/spree/admin/promotions_controller.rb +1 -1
  110. data/app/controllers/spree/admin/properties_controller.rb +1 -1
  111. data/app/controllers/spree/admin/resource_controller.rb +9 -4
  112. data/app/controllers/spree/admin/return_index_controller.rb +1 -1
  113. data/app/controllers/spree/admin/stock_transfers_controller.rb +2 -2
  114. data/app/controllers/spree/admin/store_credits_controller.rb +2 -2
  115. data/app/controllers/spree/admin/stores_controller.rb +2 -2
  116. data/app/controllers/spree/admin/taxons_controller.rb +23 -38
  117. data/app/controllers/spree/admin/users_controller.rb +6 -19
  118. data/app/controllers/spree/admin/variants_controller.rb +1 -2
  119. data/app/controllers/spree/admin/webhooks_subscribers_controller.rb +48 -0
  120. data/app/helpers/spree/admin/base_helper.rb +27 -9
  121. data/app/helpers/spree/admin/digital_helper.rb +28 -0
  122. data/app/helpers/spree/admin/menu_helper.rb +0 -21
  123. data/app/helpers/spree/admin/navigation_helper.rb +19 -9
  124. data/app/helpers/spree/admin/sortable_tree_helper.rb +31 -0
  125. data/app/helpers/spree/admin/stores_helper.rb +1 -1
  126. data/app/helpers/spree/admin/webhooks_subscribers_helper.rb +31 -0
  127. data/app/javascript/spree/dashboard/controllers/clipboard_controller.js +12 -0
  128. data/app/javascript/spree/dashboard/controllers/password_toggle_controller.js +14 -0
  129. data/app/javascript/spree/dashboard/controllers/sortable_tree_controller.js +55 -0
  130. data/app/javascript/spree/dashboard/controllers/spree_controller.js +25 -0
  131. data/app/javascript/spree/dashboard/controllers/upload_button_controller.js +13 -0
  132. data/app/javascript/spree/dashboard/controllers/webhooks_subscriber_events_controller.js +19 -0
  133. data/app/javascript/spree/dashboard/index.js +49 -0
  134. data/app/{assets/javascripts/spree/backend/global/bootstrap.es6 → javascript/spree/dashboard/utilities/bootstrap.js} +6 -2
  135. data/app/javascript/spree/dashboard/utilities/request_utility.js +54 -0
  136. data/app/models/spree/backend_configuration.rb +11 -0
  137. data/app/views/spree/admin/adjustments/_adjustments_table.html.erb +2 -2
  138. data/app/views/spree/admin/adjustments/_form.html.erb +2 -2
  139. data/app/views/spree/admin/adjustments/index.html.erb +1 -0
  140. data/app/views/spree/admin/cms_pages/_form.html.erb +8 -8
  141. data/app/views/spree/admin/cms_pages/edit.html.erb +1 -6
  142. data/app/views/spree/admin/cms_sections/_form.html.erb +2 -2
  143. data/app/views/spree/admin/cms_sections/types/_featured_article.html.erb +6 -6
  144. data/app/views/spree/admin/cms_sections/types/_hero_image.html.erb +6 -6
  145. data/app/views/spree/admin/cms_sections/types/_image_gallery.html.erb +12 -12
  146. data/app/views/spree/admin/cms_sections/types/_rich_text_content.html.erb +1 -1
  147. data/app/views/spree/admin/cms_sections/types/_side_by_side_images.html.erb +12 -12
  148. data/app/views/spree/admin/countries/_form.html.erb +4 -4
  149. data/app/views/spree/admin/customer_returns/new.html.erb +1 -1
  150. data/app/views/spree/admin/digitals/_form.html.erb +35 -0
  151. data/app/views/spree/admin/digitals/index.html.erb +25 -0
  152. data/app/views/spree/admin/general_settings/edit.html.erb +1 -22
  153. data/app/views/spree/admin/menu_items/_form.html.erb +6 -6
  154. data/app/views/spree/admin/menus/_form.html.erb +3 -3
  155. data/app/views/spree/admin/menus/edit.html.erb +18 -18
  156. data/app/views/spree/admin/oauth_applications/_form.html.erb +22 -0
  157. data/app/views/spree/admin/oauth_applications/create.turbo_stream.erb +38 -0
  158. data/app/views/spree/admin/oauth_applications/edit.html.erb +13 -0
  159. data/app/views/spree/admin/oauth_applications/index.html.erb +51 -0
  160. data/app/views/spree/admin/oauth_applications/new.html.erb +15 -0
  161. data/app/views/spree/admin/option_types/_form.html.erb +3 -3
  162. data/app/views/spree/admin/option_types/_option_value_fields.html.erb +2 -2
  163. data/app/views/spree/admin/orders/_channel_form.html.erb +1 -1
  164. data/app/views/spree/admin/orders/_form.html.erb +1 -0
  165. data/app/views/spree/admin/orders/_line_items_edit_form.html.erb +1 -0
  166. data/app/views/spree/admin/orders/_order_actions.html.erb +6 -0
  167. data/app/views/spree/admin/orders/_search.html.erb +151 -0
  168. data/app/views/spree/admin/orders/index.html.erb +2 -151
  169. data/app/views/spree/admin/payment_methods/_form.html.erb +2 -2
  170. data/app/views/spree/admin/payments/_list.html.erb +1 -1
  171. data/app/views/spree/admin/products/_form.html.erb +19 -19
  172. data/app/views/spree/admin/products/index.html.erb +2 -0
  173. data/app/views/spree/admin/products/new.html.erb +6 -6
  174. data/app/views/spree/admin/promotion_actions/create.js.erb +1 -1
  175. data/app/views/spree/admin/promotion_categories/_form.html.erb +2 -2
  176. data/app/views/spree/admin/promotions/_form.html.erb +5 -5
  177. data/app/views/spree/admin/properties/_form.html.erb +3 -3
  178. data/app/views/spree/admin/prototypes/_form.html.erb +4 -4
  179. data/app/views/spree/admin/refunds/new.html.erb +2 -2
  180. data/app/views/spree/admin/reimbursement_types/_form.html.erb +2 -2
  181. data/app/views/spree/admin/return_authorizations/_form.html.erb +3 -3
  182. data/app/views/spree/admin/roles/_form.html.erb +1 -1
  183. data/app/views/spree/admin/shared/_account_nav.html.erb +1 -1
  184. data/app/views/spree/admin/shared/_address_form.html.erb +4 -4
  185. data/app/views/spree/admin/shared/_head.html.erb +4 -8
  186. data/app/views/spree/admin/shared/_main_menu.html.erb +12 -0
  187. data/app/views/spree/admin/shared/_new_resource_links.html.erb +1 -1
  188. data/app/views/spree/admin/shared/_product_tabs.html.erb +8 -0
  189. data/app/views/spree/admin/shared/_version.html.erb +1 -1
  190. data/app/views/spree/admin/shared/cms/_spree_product.html.erb +2 -2
  191. data/app/views/spree/admin/shared/cms/_spree_taxon.html.erb +2 -2
  192. data/app/views/spree/admin/shared/linkables/_spree_cms_page.erb +2 -2
  193. data/app/views/spree/admin/shared/linkables/_spree_product.html.erb +2 -2
  194. data/app/views/spree/admin/shared/linkables/_spree_taxon.html.erb +2 -2
  195. data/app/views/spree/admin/shared/linkables/_url.html.erb +1 -1
  196. data/app/views/spree/admin/shared/named_types/_form.html.erb +1 -1
  197. data/app/views/spree/admin/{menus/nested_menu_items/_item_bar.html.erb → shared/sortable_tree/_menu.html.erb} +10 -7
  198. data/app/views/spree/admin/shared/sortable_tree/_taxonomy.html.erb +34 -0
  199. data/app/views/spree/admin/shared/sub_menu/_apps.html.erb +3 -0
  200. data/app/views/spree/admin/shared/sub_menu/_integrations.html.erb +3 -0
  201. data/app/views/spree/admin/shipping_categories/_form.html.erb +1 -1
  202. data/app/views/spree/admin/shipping_methods/_form.html.erb +8 -8
  203. data/app/views/spree/admin/states/_form.html.erb +2 -2
  204. data/app/views/spree/admin/stock_locations/_form.html.erb +2 -2
  205. data/app/views/spree/admin/stock_movements/_form.html.erb +3 -3
  206. data/app/views/spree/admin/store_credit_categories/_form.html.erb +1 -1
  207. data/app/views/spree/admin/store_credits/_form.html.erb +4 -4
  208. data/app/views/spree/admin/stores/_form.html.erb +280 -227
  209. data/app/views/spree/admin/tax_categories/_form.html.erb +4 -4
  210. data/app/views/spree/admin/tax_rates/_form.html.erb +4 -3
  211. data/app/views/spree/admin/taxonomies/_form.html.erb +2 -2
  212. data/app/views/spree/admin/taxonomies/edit.html.erb +34 -29
  213. data/app/views/spree/admin/taxons/_form.html.erb +101 -57
  214. data/app/views/spree/admin/taxons/edit.html.erb +6 -3
  215. data/app/views/spree/admin/taxons/index.html.erb +1 -1
  216. data/app/views/spree/admin/taxons/new.html.erb +16 -0
  217. data/app/views/spree/admin/users/_form.html.erb +3 -3
  218. data/app/views/spree/admin/users/edit.html.erb +0 -40
  219. data/app/views/spree/admin/variants/_autocomplete.js.erb +5 -5
  220. data/app/views/spree/admin/variants/_autocomplete_line_items_stock.js.erb +2 -2
  221. data/app/views/spree/admin/variants/_autocomplete_stock.js.erb +6 -6
  222. data/app/views/spree/admin/variants/_split.js.erb +1 -1
  223. data/app/views/spree/admin/variants/index.html.erb +4 -1
  224. data/app/views/spree/admin/webhooks_subscribers/_form.html.erb +101 -0
  225. data/app/views/spree/admin/webhooks_subscribers/edit.html.erb +13 -0
  226. data/app/views/spree/admin/webhooks_subscribers/index.html.erb +47 -0
  227. data/app/views/spree/admin/webhooks_subscribers/new.html.erb +13 -0
  228. data/app/views/spree/admin/webhooks_subscribers/show.html.erb +59 -0
  229. data/app/views/spree/admin/zones/_country_members.html.erb +1 -1
  230. data/app/views/spree/admin/zones/_form.html.erb +2 -2
  231. data/app/views/spree/admin/zones/_state_members.html.erb +1 -1
  232. data/app/views/spree/layouts/admin.html.erb +1 -11
  233. data/codespell.txt +8 -0
  234. data/config/locales/en.yml +273 -0
  235. data/config/routes.rb +8 -4
  236. data/lib/generators/spree/backend/install/install_generator.rb +4 -2
  237. data/lib/generators/spree/backend/install/templates/app/javascript/spree-dashboard.js +7 -0
  238. data/lib/spree/backend/engine.rb +2 -1
  239. data/lib/spree/backend/testing_support/capybara_utils.rb +53 -0
  240. data/lib/spree/backend/testing_support/flash.rb +38 -0
  241. data/lib/spree/backend/testing_support/flatpickr_capybara.rb +126 -0
  242. data/lib/spree/backend/version.rb +9 -0
  243. data/lib/spree/backend.rb +2 -1
  244. data/lib/spree_backend.rb +17 -0
  245. data/license.md +13 -0
  246. data/package.json +46 -0
  247. data/rollup.config.js +41 -0
  248. data/spree_backend.gemspec +17 -16
  249. data/vendor/assets/javascripts/purify.js +1 -1
  250. data/vendor/assets/stylesheets/animate.css +2 -4
  251. data/yarn.lock +959 -0
  252. metadata +120 -38
  253. data/app/assets/javascripts/spree/backend/menus/menu.es6 +0 -57
  254. data/app/assets/javascripts/spree/backend/taxon_permalink_preview.js +0 -11
  255. data/app/assets/javascripts/spree/backend/taxon_tree_menu.js +0 -35
  256. data/app/assets/javascripts/spree/backend/taxonomy.js +0 -178
  257. data/app/views/spree/admin/taxonomies/_js_head.html.erb +0 -7
  258. data/vendor/assets/javascripts/jquery.jstree/jquery.jstree.js +0 -4564
  259. data/vendor/assets/javascripts/js.cookie.js +0 -163
  260. data/vendor/assets/javascripts/modernizr.js +0 -3
  261. data/vendor/assets/stylesheets/jquery.jstree/themes/spree/style.scss +0 -230
  262. data/vendor/assets/stylesheets/jquery.jstree/themes/spree/throbber.gif +0 -0
  263. /data/app/assets/stylesheets/spree/backend/views/{prototypes.scss → _prototypes.scss} +0 -0
@@ -0,0 +1,126 @@
1
+ module Spree
2
+ module Backend
3
+ module TestingSupport
4
+ module FlatpickrCapybara
5
+ def fill_in_date_manually(label_text, options = {})
6
+ with_open_flatpickr(label_text) do |field|
7
+ fill_in field[:id], with: string_date(options)
8
+ end
9
+ end
10
+
11
+ def fill_in_date_picker(label_text, options = {})
12
+ if options[:hour].blank? && options[:minute].blank?
13
+ flatpickr_date_only(label_text, options)
14
+ else
15
+ flatpickr_date_time(label_text, options)
16
+ end
17
+ end
18
+
19
+ def fill_in_date_with_js(label_text, options = {})
20
+ date_field = find("input[id='#{label_text}']")
21
+ script = "document.querySelector('#{date_field}').flatpickr().setDate('#{string_date(options)}');"
22
+
23
+ page.execute_script(script)
24
+ end
25
+
26
+ private
27
+
28
+ def flatpickr_date_only(label_text, options = {})
29
+ within_open_flatpickr(label_text) do
30
+ within_flatpickr_months do
31
+ fill_in_flatpickr_year(options[:year].to_i)
32
+ sleep(0.25) # Pause to let JavaScript adjust the month selector in the flatpickr cal in relation to any related FROM...TO cal.
33
+
34
+ select_flatpickr_month(options[:month].to_i)
35
+ sleep(0.25) # Pause to let JavaScript adjust the day selection area in the flatpickr cal in relation to any related FROM...TO cal.
36
+
37
+ click_on_flatpickr_day(options[:day].to_i)
38
+ end
39
+ end
40
+ end
41
+
42
+ def flatpickr_date_time(label_text, options = {})
43
+ within_open_flatpickr(label_text) do
44
+ within_flatpickr_months do
45
+ fill_in_flatpickr_year(options[:year].to_i)
46
+ sleep(0.25) # Pause to let JavaScript adjust the month selector in the flatpickr cal in relation to any related FROM...TO cal.
47
+
48
+ select_flatpickr_month(options[:month].to_i)
49
+ sleep(0.25) # Pause to let JavaScript adjust the day selection area in the flatpickr cal in relation to any related FROM...TO cal.
50
+
51
+ click_on_flatpickr_day(options[:day].to_i)
52
+ end
53
+
54
+ within_flatpickr_time do
55
+ select_flatpickr_hour(options[:hour].to_i)
56
+ select_flatpickr_min(options[:minute].to_i)
57
+ end
58
+ end
59
+ end
60
+
61
+ def with_open_flatpickr(label_text)
62
+ field_label = find_field(id: label_text, type: :hidden)
63
+
64
+ date_field = field_label.sibling('.flatpickr-alt-input')
65
+ date_field.click # Open the flatpickr cal.
66
+ sleep(0.25) # Pause to let JavaScript populate DOM with an open flatpickr cal.
67
+
68
+ yield(date_field) # Complete required action within the open flatpickr cal.
69
+
70
+ date_field.send_keys :tab # Close the date flatpickr cal.
71
+ sleep(0.25) # Pause to let JavaScript adjust any DOM values in relation to any related FROM...TO cal.
72
+ end
73
+
74
+ def within_open_flatpickr(label_text, &block)
75
+ with_open_flatpickr(label_text) do
76
+ within find('.flatpickr-calendar.open', &block)
77
+ end
78
+ end
79
+
80
+ def within_flatpickr_months(&block)
81
+ within find('.flatpickr-months > .flatpickr-month > .flatpickr-current-month', &block)
82
+ end
83
+
84
+ def within_flatpickr_time(&block)
85
+ within find('.flatpickr-time', &block)
86
+ end
87
+
88
+ def select_flatpickr_month(month)
89
+ accurate_month = (month.to_i - 1)
90
+
91
+ find("select.flatpickr-monthDropdown-months > option[value='#{accurate_month}']").select_option
92
+ end
93
+
94
+ def fill_in_flatpickr_year(year)
95
+ find('input.cur-year').set(year)
96
+ end
97
+
98
+ def click_on_flatpickr_day(day)
99
+ within_flatpickr_days do
100
+ find('.flatpickr-day:not(.prevMonthDay):not(.nextMonthDay)', text: day, exact_text: true).click
101
+ end
102
+ end
103
+
104
+ def within_flatpickr_days(&block)
105
+ within find('.flatpickr-innerContainer > .flatpickr-rContainer > .flatpickr-days > .dayContainer', &block)
106
+ end
107
+
108
+ def select_flatpickr_hour(hour)
109
+ find('input.flatpickr-hour').set(hour)
110
+ end
111
+
112
+ def select_flatpickr_min(min)
113
+ find('input.flatpickr-minute').set(min)
114
+ end
115
+
116
+ def string_date(options)
117
+ if options[:hour].present? && options[:minute].present?
118
+ "#{options[:year]}-#{options[:month]}-#{options[:day]}-#{options[:hour]}-#{options[:minute]}"
119
+ else
120
+ "#{options[:year]}-#{options[:month]}-#{options[:day]}"
121
+ end
122
+ end
123
+ end
124
+ end
125
+ end
126
+ end
@@ -0,0 +1,9 @@
1
+ module Spree
2
+ module Backend
3
+ VERSION = '4.4.0.rc1'.freeze
4
+
5
+ def self.version
6
+ VERSION
7
+ end
8
+ end
9
+ end
data/lib/spree/backend.rb CHANGED
@@ -9,8 +9,9 @@ require 'select2-rails'
9
9
  require 'flatpickr'
10
10
  require 'bootstrap'
11
11
  require 'glyphicons'
12
- require 'popper_js'
12
+ require 'hotwire-rails'
13
13
  require 'inline_svg'
14
+ require 'jsbundling-rails'
14
15
  require 'responders'
15
16
  require 'tinymce-rails'
16
17
 
data/lib/spree_backend.rb CHANGED
@@ -1 +1,18 @@
1
1
  require 'spree/backend'
2
+
3
+ module Spree
4
+ def self.admin_path
5
+ Spree::Backend::Config[:admin_path]
6
+ end
7
+
8
+ # Used to configure admin_path for Spree
9
+ #
10
+ # Example:
11
+ #
12
+ # write the following line in `config/initializers/spree.rb`
13
+ # Spree.admin_path = '/custom-path'
14
+
15
+ def self.admin_path=(path)
16
+ Spree::Backend::Config[:admin_path] = path
17
+ end
18
+ end
data/license.md ADDED
@@ -0,0 +1,13 @@
1
+ Spree License
2
+ =============
3
+
4
+ Copyright © 2007-2021, Spree Commerce Inc., Spark Solutions Sp. z o.o. and other contributors.
5
+ All rights reserved.
6
+
7
+ Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
8
+
9
+ * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
10
+ * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
11
+ * Neither the name of Spree Commerce Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
12
+
13
+ _This software is provided by the copyright holders and contributors "as is" and any express or implied warranties, including, but not limited to, the implied warranties of merchantability and fitness for a particular purpose are disclaimed. In no event shall the copyright owner or contributors be liable for any direct, indirect, incidental, special, exemplary, or consequential damages (including, but not limited to, procurement of substitute goods or services; loss of use, data, or profits; or business interruption) however caused and on any theory of liability, whether in contract, strict liability, or tort (including negligence or otherwise) arising in any way out of the use of this software, even if advised of the possibility of such damage._
data/package.json ADDED
@@ -0,0 +1,46 @@
1
+ {
2
+ "name": "@spree/dashboard",
3
+ "version": "0.0.3",
4
+ "description": "Spree Dashboard",
5
+ "main": "app/assets/javascripts/spree-dashboard.js",
6
+ "type": "module",
7
+ "files": [
8
+ "app/assets/javascripts/*.js",
9
+ "src/*.js"
10
+ ],
11
+ "homepage": "https://spreecommerce.org/",
12
+ "repository": {
13
+ "type": "git",
14
+ "url": "git+https://github.com/spree/spree_backend.git"
15
+ },
16
+ "bugs": {
17
+ "url": "https://github.com/spree/spree_backend/issues"
18
+ },
19
+ "author": "Spark Solutions <hi@sparksolutions.co>",
20
+ "license": "MIT",
21
+ "dependencies": {
22
+ "@hotwired/stimulus": "^3.0.1",
23
+ "@hotwired/turbo": "^7.0.1",
24
+ "@rails/request.js": "^0.0.5",
25
+ "@spree/dashboard": "^0.0.3",
26
+ "bootstrap": "4.6.1",
27
+ "flatpickr": "^4.6.9",
28
+ "jquery": "3.5.1",
29
+ "popper.js": "1.16.1",
30
+ "sortablejs": "^1.14.0",
31
+ "stimulus-sortable": "^3.1.0"
32
+ },
33
+ "devDependencies": {
34
+ "@rollup/plugin-commonjs": "^19.0.1",
35
+ "@rollup/plugin-node-resolve": "^11.0.1",
36
+ "eslint": "^8.2.0",
37
+ "rollup": "^2.35.1",
38
+ "rollup-plugin-terser": "^7.0.2"
39
+ },
40
+ "scripts": {
41
+ "build": "rollup --config rollup.config.js",
42
+ "watch": "rollup --config rollup.config.js -w",
43
+ "lint": "eslint app/javascript",
44
+ "prepublishOnly": "rm -rf src && cp -R app/javascript/spree/dashboard src"
45
+ }
46
+ }
data/rollup.config.js ADDED
@@ -0,0 +1,41 @@
1
+ import resolve from "@rollup/plugin-node-resolve"
2
+ import commonjs from "@rollup/plugin-commonjs"
3
+ import { terser } from "rollup-plugin-terser"
4
+
5
+ const terserOptions = {
6
+ mangle: false,
7
+ compress: false,
8
+ format: {
9
+ beautify: true,
10
+ indent_level: 2
11
+ }
12
+ }
13
+
14
+ export default [
15
+ {
16
+ input: "app/javascript/spree/dashboard/index.js",
17
+ output: {
18
+ file: "app/assets/javascripts/spree-dashboard.js",
19
+ format: "umd",
20
+ name: "SpreeDashboard"
21
+ },
22
+ plugins: [
23
+ resolve(),
24
+ commonjs(),
25
+ terser(terserOptions)
26
+ ]
27
+ },
28
+
29
+ {
30
+ input: "app/javascript/spree/dashboard/index.js",
31
+ output: {
32
+ file: "app/assets/javascripts/spree-dashboard.esm.js",
33
+ format: "es"
34
+ },
35
+ plugins: [
36
+ resolve(),
37
+ commonjs(),
38
+ terser(terserOptions)
39
+ ]
40
+ }
41
+ ]
@@ -1,10 +1,10 @@
1
1
  # encoding: UTF-8
2
- require_relative '../core/lib/spree/core/version.rb'
2
+ require_relative 'lib/spree/backend/version.rb'
3
3
 
4
4
  Gem::Specification.new do |s|
5
5
  s.platform = Gem::Platform::RUBY
6
6
  s.name = 'spree_backend'
7
- s.version = Spree.version
7
+ s.version = Spree::Backend.version
8
8
  s.authors = ['Sean Schofield', 'Spark Solutions']
9
9
  s.email = 'hello@spreecommerce.org'
10
10
  s.summary = 'Admin Dashboard for Spree eCommerce platform'
@@ -13,10 +13,10 @@ Gem::Specification.new do |s|
13
13
  s.license = 'BSD-3-Clause'
14
14
 
15
15
  s.metadata = {
16
- "bug_tracker_uri" => "https://github.com/spree/spree/issues",
17
- "changelog_uri" => "https://github.com/spree/spree/releases/tag/v#{s.version}",
16
+ "bug_tracker_uri" => "https://github.com/spree/spree_backend/issues",
17
+ "changelog_uri" => "https://github.com/spree/spree_backend/releases/tag/v#{s.version}",
18
18
  "documentation_uri" => "https://dev-docs.spreecommerce.org/",
19
- "source_code_uri" => "https://github.com/spree/spree/tree/v#{s.version}",
19
+ "source_code_uri" => "https://github.com/spree/spree_backend/tree/v#{s.version}",
20
20
  }
21
21
 
22
22
  s.required_ruby_version = '>= 2.5'
@@ -25,19 +25,20 @@ Gem::Specification.new do |s|
25
25
  s.require_path = 'lib'
26
26
  s.requirements << 'none'
27
27
 
28
- s.add_dependency 'spree_api', ">= #{s.version}"
29
- s.add_dependency 'spree_core', ">= #{s.version}"
28
+ s.add_dependency 'spree', ">= 4.4.0.rc1"
30
29
 
31
30
  s.add_dependency 'babel-transpiler', '~> 0.7'
32
- s.add_dependency 'bootstrap', '~> 4.0'
33
- s.add_dependency 'glyphicons', '~> 1.0'
34
- s.add_dependency 'flatpickr', '~> 4.6'
35
- s.add_dependency 'inline_svg', '~> 1.5'
36
- s.add_dependency 'jquery-rails', '~> 4.3'
37
- s.add_dependency 'jquery-ui-rails', '~> 6.0'
31
+ s.add_dependency 'bootstrap', '~> 4.0'
32
+ s.add_dependency 'glyphicons', '~> 1.0'
33
+ s.add_dependency 'flatpickr', '~> 4.6'
34
+ s.add_dependency 'hotwire-rails'
35
+ s.add_dependency 'inline_svg', '~> 1.5'
36
+ s.add_dependency 'jsbundling-rails'
37
+ s.add_dependency 'jquery-rails', '~> 4.3'
38
+ s.add_dependency 'jquery-ui-rails', '~> 6.0'
38
39
  s.add_dependency 'responders'
39
- s.add_dependency 'sass-rails', '>= 5'
40
- s.add_dependency 'select2-rails', '~> 4.0'
41
- s.add_dependency 'sprockets', '~> 4.0'
40
+ s.add_dependency 'sass-rails', '>= 5'
41
+ s.add_dependency 'select2-rails', '~> 4.0'
42
+ s.add_dependency 'sprockets', '~> 4.0'
42
43
  s.add_dependency 'tinymce-rails'
43
44
  end
@@ -347,7 +347,7 @@
347
347
  * DOMPurify. */
348
348
  var RETURN_DOM_IMPORT = false;
349
349
 
350
- /* Try to return a Trusted Type object instead of a string, retrun a string in
350
+ /* Try to return a Trusted Type object instead of a string, return a string in
351
351
  * case Trusted Types are not supported */
352
352
  var RETURN_TRUSTED_TYPE = false;
353
353
 
@@ -1,8 +1,6 @@
1
-
2
- @charset "UTF-8";
3
- /*!
1
+ @charset "UTF-8";/*!
4
2
  * animate.css - https://animate.style/
5
- * Version - 4.0.0
3
+ * Version - 4.1.1
6
4
  * Licensed under the MIT license - http://opensource.org/licenses/MIT
7
5
  *
8
6
  * Copyright (c) 2020 Animate.css