spree_backend 4.2.0.rc1 → 4.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (171) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/spree/backend.js +1 -2
  3. data/app/assets/javascripts/spree/backend/address_states.js +20 -9
  4. data/app/assets/javascripts/spree/backend/admin.js +9 -15
  5. data/app/assets/javascripts/spree/backend/calculator.js +2 -0
  6. data/app/assets/javascripts/spree/backend/checkouts/edit.js +99 -71
  7. data/app/assets/javascripts/spree/backend/line_items_on_order_edit.js +1 -1
  8. data/app/assets/javascripts/spree/backend/option_type_autocomplete.js +31 -37
  9. data/app/assets/javascripts/spree/backend/option_value_picker.js +50 -23
  10. data/app/assets/javascripts/spree/backend/product_picker.js +35 -19
  11. data/app/assets/javascripts/spree/backend/promotions.js +32 -27
  12. data/app/assets/javascripts/spree/backend/shipments.js +28 -37
  13. data/app/assets/javascripts/spree/backend/spree-select2.js +33 -14
  14. data/app/assets/javascripts/spree/backend/stock_transfer.js +32 -13
  15. data/app/assets/javascripts/spree/backend/taxon_autocomplete.js +30 -43
  16. data/app/assets/javascripts/spree/backend/taxons.js +60 -47
  17. data/app/assets/javascripts/spree/backend/user_picker.js +16 -18
  18. data/app/assets/javascripts/spree/backend/variant_autocomplete.js +23 -22
  19. data/app/assets/stylesheets/spree/backend/components/_badges.scss +1 -1
  20. data/app/assets/stylesheets/spree/backend/components/_tables.scss +2 -2
  21. data/app/assets/stylesheets/spree/backend/global/_mixins.scss +19 -0
  22. data/app/assets/stylesheets/spree/backend/global/_variables.scss +1 -1
  23. data/app/assets/stylesheets/spree/backend/plugins/_flatpickr.scss +94 -76
  24. data/app/assets/stylesheets/spree/backend/plugins/_select2_custom.scss +11 -0
  25. data/app/assets/stylesheets/spree/backend/plugins/select2_bootstrap4.scss +622 -0
  26. data/app/assets/stylesheets/spree/backend/shared/_base.scss +4 -0
  27. data/app/assets/stylesheets/spree/backend/spree_admin.css.scss +3 -1
  28. data/app/controllers/spree/admin/base_controller.rb +2 -0
  29. data/app/controllers/spree/admin/general_settings_controller.rb +1 -1
  30. data/app/controllers/spree/admin/images_controller.rb +3 -3
  31. data/app/controllers/spree/admin/orders/customer_details_controller.rb +1 -1
  32. data/app/controllers/spree/admin/orders_controller.rb +15 -2
  33. data/app/controllers/spree/admin/prices_controller.rb +0 -13
  34. data/app/controllers/spree/admin/products_controller.rb +2 -2
  35. data/app/controllers/spree/admin/states_controller.rb +1 -1
  36. data/app/controllers/spree/admin/stores_controller.rb +12 -14
  37. data/app/controllers/spree/admin/taxons_controller.rb +15 -5
  38. data/app/helpers/spree/admin/base_helper.rb +68 -6
  39. data/app/helpers/spree/admin/navigation_helper.rb +11 -1
  40. data/app/helpers/spree/admin/payments_helper.rb +3 -3
  41. data/app/helpers/spree/admin/stock_movements_helper.rb +2 -0
  42. data/app/helpers/spree/admin/stores_helper.rb +9 -0
  43. data/app/views/kaminari/admin-twitter-bootstrap-4/_first_page.html.erb +2 -2
  44. data/app/views/kaminari/admin-twitter-bootstrap-4/_gap.html.erb +2 -2
  45. data/app/views/kaminari/admin-twitter-bootstrap-4/_last_page.html.erb +2 -2
  46. data/app/views/kaminari/admin-twitter-bootstrap-4/_next_page.html.erb +2 -2
  47. data/app/views/kaminari/admin-twitter-bootstrap-4/_page.html.erb +2 -2
  48. data/app/views/kaminari/admin-twitter-bootstrap-4/_paginator.html.erb +2 -2
  49. data/app/views/kaminari/admin-twitter-bootstrap-4/_prev_page.html.erb +2 -2
  50. data/app/views/spree/admin/adjustments/index.html.erb +2 -2
  51. data/app/views/spree/admin/countries/index.html.erb +6 -6
  52. data/app/views/spree/admin/customer_returns/_return_item_decision.html.erb +48 -46
  53. data/app/views/spree/admin/customer_returns/_return_item_selection.html.erb +3 -1
  54. data/app/views/spree/admin/customer_returns/edit.html.erb +1 -1
  55. data/app/views/spree/admin/customer_returns/index.html.erb +2 -2
  56. data/app/views/spree/admin/customer_returns/new.html.erb +1 -1
  57. data/app/views/spree/admin/general_settings/edit.html.erb +27 -4
  58. data/app/views/spree/admin/images/edit.html.erb +1 -1
  59. data/app/views/spree/admin/log_entries/index.html.erb +1 -1
  60. data/app/views/spree/admin/option_types/_form.html.erb +9 -0
  61. data/app/views/spree/admin/option_types/index.html.erb +3 -1
  62. data/app/views/spree/admin/orders/_add_line_item.html.erb +1 -1
  63. data/app/views/spree/admin/orders/_add_product.html.erb +1 -1
  64. data/app/views/spree/admin/orders/_adjustments.html.erb +2 -2
  65. data/app/views/spree/admin/orders/_channel_form.html.erb +18 -0
  66. data/app/views/spree/admin/orders/_form.html.erb +6 -10
  67. data/app/views/spree/admin/orders/_line_items.html.erb +1 -1
  68. data/app/views/spree/admin/orders/_line_items_edit_form.html.erb +5 -8
  69. data/app/views/spree/admin/orders/_order_actions.html.erb +1 -2
  70. data/app/views/spree/admin/orders/_risk_analysis.html.erb +3 -3
  71. data/app/views/spree/admin/orders/_shipment.html.erb +3 -2
  72. data/app/views/spree/admin/orders/_shipment_manifest.html.erb +1 -1
  73. data/app/views/spree/admin/orders/_store_form.html.erb +1 -1
  74. data/app/views/spree/admin/orders/cart.html.erb +1 -1
  75. data/app/views/spree/admin/orders/channel.html.erb +7 -0
  76. data/app/views/spree/admin/orders/customer_details/_autocomplete.js.erb +35 -12
  77. data/app/views/spree/admin/orders/customer_details/_form.html.erb +3 -3
  78. data/app/views/spree/admin/orders/customer_details/edit.html.erb +1 -1
  79. data/app/views/spree/admin/orders/edit.html.erb +1 -1
  80. data/app/views/spree/admin/orders/index.html.erb +12 -11
  81. data/app/views/spree/admin/payment_methods/_form.html.erb +65 -46
  82. data/app/views/spree/admin/payment_methods/index.html.erb +2 -2
  83. data/app/views/spree/admin/payments/_form.html.erb +2 -3
  84. data/app/views/spree/admin/payments/show.html.erb +1 -2
  85. data/app/views/spree/admin/payments/source_forms/_gateway.html.erb +3 -4
  86. data/app/views/spree/admin/payments/source_views/_gateway.html.erb +1 -1
  87. data/app/views/spree/admin/prices/_variant_prices.html.erb +5 -5
  88. data/app/views/spree/admin/prices/index.html.erb +2 -2
  89. data/app/views/spree/admin/product_properties/index.html.erb +3 -4
  90. data/app/views/spree/admin/products/_form.html.erb +8 -9
  91. data/app/views/spree/admin/products/index.html.erb +3 -2
  92. data/app/views/spree/admin/products/new.html.erb +5 -3
  93. data/app/views/spree/admin/products/stock.html.erb +2 -2
  94. data/app/views/spree/admin/promotion_rules/create.js.erb +1 -1
  95. data/app/views/spree/admin/promotions/_actions.html.erb +2 -3
  96. data/app/views/spree/admin/promotions/_form.html.erb +10 -11
  97. data/app/views/spree/admin/promotions/_rules.html.erb +1 -1
  98. data/app/views/spree/admin/promotions/actions/_create_adjustment.html.erb +1 -1
  99. data/app/views/spree/admin/promotions/actions/_create_item_adjustments.html.erb +1 -1
  100. data/app/views/spree/admin/promotions/actions/_create_line_items.html.erb +1 -1
  101. data/app/views/spree/admin/promotions/index.html.erb +7 -5
  102. data/app/views/spree/admin/promotions/rules/_option_value.html.erb +8 -7
  103. data/app/views/spree/admin/promotions/rules/_product.html.erb +1 -1
  104. data/app/views/spree/admin/promotions/rules/_taxon.html.erb +1 -1
  105. data/app/views/spree/admin/promotions/rules/_user.html.erb +1 -1
  106. data/app/views/spree/admin/prototypes/_form.html.erb +1 -1
  107. data/app/views/spree/admin/prototypes/show.html.erb +1 -1
  108. data/app/views/spree/admin/refunds/edit.html.erb +2 -2
  109. data/app/views/spree/admin/refunds/new.html.erb +3 -3
  110. data/app/views/spree/admin/reimbursements/edit.html.erb +5 -4
  111. data/app/views/spree/admin/reimbursements/show.html.erb +3 -1
  112. data/app/views/spree/admin/return_authorizations/_form.html.erb +7 -5
  113. data/app/views/spree/admin/return_authorizations/index.html.erb +2 -2
  114. data/app/views/spree/admin/return_index/customer_returns.html.erb +2 -2
  115. data/app/views/spree/admin/return_index/return_authorizations.html.erb +2 -2
  116. data/app/views/spree/admin/roles/index.html.erb +1 -1
  117. data/app/views/spree/admin/shared/_account_nav.html.erb +3 -3
  118. data/app/views/spree/admin/shared/_address_form.html.erb +9 -9
  119. data/app/views/spree/admin/shared/_error_messages.html.erb +1 -1
  120. data/app/views/spree/admin/shared/_head.html.erb +6 -2
  121. data/app/views/spree/admin/shared/_header.html.erb +0 -2
  122. data/app/views/spree/admin/shared/_main_menu.html.erb +1 -1
  123. data/app/views/spree/admin/shared/_order_summary.html.erb +25 -21
  124. data/app/views/spree/admin/shared/_order_tabs.html.erb +9 -0
  125. data/app/views/spree/admin/shared/_refunds.html.erb +2 -2
  126. data/app/views/spree/admin/shared/_report_order_criteria.html.erb +4 -2
  127. data/app/views/spree/admin/shared/_translations.html.erb +9 -38
  128. data/app/views/spree/admin/shared/_update_order_state.js.erb +6 -2
  129. data/app/views/spree/admin/shared/named_types/_index.html.erb +1 -1
  130. data/app/views/spree/admin/shipping_categories/index.html.erb +2 -2
  131. data/app/views/spree/admin/shipping_methods/_form.html.erb +2 -2
  132. data/app/views/spree/admin/shipping_methods/index.html.erb +7 -3
  133. data/app/views/spree/admin/states/index.html.erb +2 -2
  134. data/app/views/spree/admin/stock_locations/_form.html.erb +2 -2
  135. data/app/views/spree/admin/stock_locations/_transfer_stock_form.html.erb +1 -1
  136. data/app/views/spree/admin/stock_locations/index.html.erb +6 -6
  137. data/app/views/spree/admin/stock_movements/_form.html.erb +1 -1
  138. data/app/views/spree/admin/stock_movements/index.html.erb +2 -2
  139. data/app/views/spree/admin/stock_transfers/_stock_movements.html.erb +1 -1
  140. data/app/views/spree/admin/stock_transfers/index.html.erb +42 -37
  141. data/app/views/spree/admin/stock_transfers/new.html.erb +1 -1
  142. data/app/views/spree/admin/stock_transfers/show.html.erb +0 -1
  143. data/app/views/spree/admin/stores/_form.html.erb +88 -24
  144. data/app/views/spree/admin/stores/index.html.erb +16 -9
  145. data/app/views/spree/admin/tax_categories/index.html.erb +3 -3
  146. data/app/views/spree/admin/tax_rates/index.html.erb +8 -8
  147. data/app/views/spree/admin/taxonomies/_js_head.html.erb +1 -2
  148. data/app/views/spree/admin/taxonomies/_list.html.erb +1 -1
  149. data/app/views/spree/admin/taxons/_form.html.erb +38 -35
  150. data/app/views/spree/admin/taxons/_taxon_table.html.erb +2 -2
  151. data/app/views/spree/admin/taxons/index.html.erb +1 -1
  152. data/app/views/spree/admin/users/_addresses_form.html.erb +4 -6
  153. data/app/views/spree/admin/users/_form.html.erb +0 -1
  154. data/app/views/spree/admin/users/edit.html.erb +1 -1
  155. data/app/views/spree/admin/users/index.html.erb +2 -2
  156. data/app/views/spree/admin/users/items.html.erb +1 -1
  157. data/app/views/spree/admin/variants/_form.html.erb +5 -3
  158. data/app/views/spree/admin/zones/_country_members.html.erb +1 -1
  159. data/app/views/spree/admin/zones/_form.html.erb +2 -2
  160. data/app/views/spree/admin/zones/index.html.erb +1 -1
  161. data/app/views/spree/admin/zones/new.html.erb +1 -1
  162. data/app/views/spree/layouts/admin.html.erb +2 -3
  163. data/config/initializers/assets.rb +1 -1
  164. data/config/routes.rb +7 -1
  165. data/spree_backend.gemspec +2 -2
  166. metadata +20 -19
  167. data/app/assets/javascripts/spree/backend/flatpickr_locals.js +0 -37
  168. data/app/assets/javascripts/spree/backend/tag_picker.js +0 -52
  169. data/app/assets/stylesheets/spree/backend/plugins/_select2.scss +0 -190
  170. data/app/helpers/spree/admin/currency_helper.rb +0 -14
  171. data/app/views/spree/admin/general_settings/_form.html.erb +0 -27
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: fd66fb6fa4c26e09eec76a0c48d70fefc870615eee858e1e6d9b7329e06adc74
4
- data.tar.gz: 3c859535b7b1e606c5477354d6fe5fb36b1d13e61456024e339d58ecf17fadb5
3
+ metadata.gz: 0a77e87c4b85d35709151d5f3e17ed234d4575c3d7cf8d9ba25406271471cee9
4
+ data.tar.gz: 03b7a255af3e75e9b0376dd92f844db6ec9cc7acd714b0c586f87ad31fa5fe5e
5
5
  SHA512:
6
- metadata.gz: 2a8c12edc73c766fd9c96de625ea6141af5535c55667e6e7d17f2414a56be8ad3463d45c48dd5aff35abceb7f89a07145c271512e7b05cdeab24d2d3a1271157
7
- data.tar.gz: 9033d1be3fe6f19793df6aa606e8a75e0723a81d8466def2d556af311c2da9dbea7aa8e5205e15ba0c43b5b29207803437916baf75e99e4027ab01f315dfce24
6
+ metadata.gz: ac1ea6505ba5b55b63ffe801062503660190ee11bac23dab2084b67d4e79f424f19a6fba6ab804d0d1c357e1bb62726377afaee1f9d9a47289ee7ff9823d8db9
7
+ data.tar.gz: a50b60c3e76c03b17297f33a96b6599f98c9a6746011bc0aec0d056f917d68499b51c70a1e4eba4e194c6e5f99be4772c479e9cb1a77d041316646825cd953a1
@@ -11,7 +11,7 @@
11
11
  //= require jquery.jstree/jquery.jstree
12
12
  //= require jquery_ujs
13
13
  //= require jquery-ui/widgets/autocomplete
14
- //= require select2
14
+ //= require select2-full
15
15
  //= require underscore-min.js
16
16
 
17
17
  //= require spree
@@ -50,7 +50,6 @@
50
50
  //= require spree/backend/taxons
51
51
  //= require spree/backend/users/edit
52
52
  //= require spree/backend/user_picker
53
- //= require spree/backend/tag_picker
54
53
  //= require spree/backend/variant_autocomplete
55
54
  //= require spree/backend/variant_management
56
55
  //= require spree/backend/zone
@@ -1,31 +1,42 @@
1
1
  // eslint-disable-next-line camelcase, no-unused-vars
2
- function update_state (region, done) {
2
+ function update_state(region, done) {
3
3
  'use strict'
4
4
 
5
- var country = $('span#' + region + 'country .select2').select2('val')
6
- var stateSelect = $('span#' + region + 'state select.select2')
7
- var stateInput = $('span#' + region + 'state input.state_name')
5
+ var countryId = $('#' + region + 'country select').val()
6
+ var stateContainer = $('#' + region + 'state').parent()
7
+ var stateSelect = $('#' + region + 'state select')
8
+ var stateInput = $('#' + region + 'state input.state_name')
8
9
 
9
- $.get(Spree.routes.states_search + '?country_id=' + country, function (data) {
10
+ $.get(Spree.routes.states_search + '?country_id=' + countryId, function (data) {
10
11
  var states = data.states
12
+ var statesRequired = data.states_required
11
13
  if (states.length > 0) {
12
14
  stateSelect.html('')
13
15
  var statesWithBlank = [{
14
16
  name: '',
15
17
  id: ''
16
18
  }].concat(states)
17
- $.each(statesWithBlank, function (pos, state) {
19
+ $.each(statesWithBlank, function (_pos, state) {
18
20
  var opt = $(document.createElement('option'))
19
21
  .prop('value', state.id)
20
22
  .html(state.name)
21
- stateSelect.append(opt)
23
+ stateSelect.append(opt).trigger('change')
22
24
  })
23
25
  stateSelect.prop('disabled', false).show()
24
26
  stateSelect.select2()
25
27
  stateInput.hide().prop('disabled', true)
28
+ stateContainer.show()
26
29
  } else {
27
- stateInput.prop('disabled', false).show()
28
- stateSelect.select2('destroy').hide()
30
+ stateSelect.val(null).trigger('change')
31
+ if (stateSelect.data('select2')) {
32
+ stateSelect.select2('destroy')
33
+ }
34
+ stateSelect.hide()
35
+ if (statesRequired) {
36
+ stateInput.prop('disabled', false).show()
37
+ } else {
38
+ stateContainer.hide()
39
+ }
29
40
  }
30
41
 
31
42
  if (done) done()
@@ -5,9 +5,6 @@ Hopefully, this will evolve into a propper class.
5
5
  **/
6
6
 
7
7
  /* global AUTH_TOKEN, order_number, Sortable, flatpickr, DOMPurify */
8
-
9
- //= require spree/backend/flatpickr_locals
10
-
11
8
  jQuery(function ($) {
12
9
  // Add some tips
13
10
  $('.with-tip').each(function() {
@@ -123,7 +120,7 @@ jQuery(function ($) {
123
120
  $('.js-filterable').each(function () {
124
121
  var $this = $(this)
125
122
 
126
- if ($this.val() !== null && $this.val() !== '' && $this.val().length !== 0) {
123
+ if ($this.val() !== null && $this.val() !== '' && $this.val().length !== 0 && !$this.hasClass('flatpickr-alt-input')) {
127
124
  var ransackValue, filter
128
125
  var ransackFieldId = $this.attr('id')
129
126
  var label = $('label[for="' + ransackFieldId + '"]')
@@ -226,29 +223,26 @@ $.fn.radioControlsVisibilityOfElement = function (dependentElementSelector) {
226
223
  }
227
224
 
228
225
  document.addEventListener('DOMContentLoaded', function() {
229
- var dateFrom = flatpickr('.datePickerFrom', {
226
+ flatpickr.setDefaults({
227
+ altInput: true,
230
228
  time_24hr: true,
231
- dateFormat: Spree.translations.date_picker,
232
- monthSelectorType: 'static',
229
+ altInputClass: 'flatpickr-alt-input',
230
+ locale: Spree.translations.flatpickr_locale
231
+ })
232
+
233
+ var dateFrom = flatpickr('.datePickerFrom', {
233
234
  onChange: function(selectedDates) {
234
235
  dateTo.set('minDate', selectedDates[0])
235
236
  }
236
237
  })
237
238
 
238
239
  var dateTo = flatpickr('.datePickerTo', {
239
- monthSelectorType: 'static',
240
- time_24hr: true,
241
- dateFormat: Spree.translations.date_picker,
242
240
  onChange: function(selectedDates) {
243
241
  dateFrom.set('maxDate', selectedDates[0])
244
242
  }
245
243
  })
246
244
 
247
- flatpickr('.datepicker', {
248
- monthSelectorType: 'static',
249
- time_24hr: true,
250
- dateFormat: Spree.translations.date_picker
251
- })
245
+ flatpickr('.datepicker', { })
252
246
  })
253
247
 
254
248
  $(document).ready(function() {
@@ -6,10 +6,12 @@ $(function () {
6
6
  // eslint-disable-next-line
7
7
  if (calculatorSelect.prop('value') == originalCalcType) {
8
8
  $('div.calculator-settings').show()
9
+ $('#shipping_method_calculator_attributes_preferred_currency').removeAttr('disabled')
9
10
  $('.calculator-settings-warning').hide()
10
11
  $('.calculator-settings').find('input, textarea').prop('disabled', false)
11
12
  } else {
12
13
  $('div.calculator-settings').hide()
14
+ $('#shipping_method_calculator_attributes_preferred_currency').attr('disabled', 'disabled')
13
15
  $('.calculator-settings-warning').show()
14
16
  $('.calculator-settings').find('input, textarea').prop('disabled', true)
15
17
  }
@@ -1,85 +1,109 @@
1
- //= require_self
2
- /* global customerTemplate, update_state */
3
- // eslint-disable-next-line camelcase
4
- var clear_address_fields = function () {
5
- var fields = ['firstname', 'lastname', 'company', 'address1', 'address2', 'city', 'zipcode', 'state_id', 'country_id', 'phone']
6
- $.each(fields, function (i, field) {
7
- $('#order_bill_address_attributes_' + field).val('')
8
- $('#order_ship_address_attributes_' + field).val('')
1
+ function clearAddressFields(addressKinds) {
2
+ if (addressKinds === undefined) {
3
+ addressKinds = ['ship', 'bill']
4
+ }
5
+ addressKinds.forEach(function(addressKind) {
6
+ ADDRESS_FIELDS.forEach(function(field) {
7
+ $('#order_' + addressKind + '_address_attributes_' + field).val('')
8
+ })
9
9
  })
10
10
  }
11
11
 
12
- $(document).ready(function () {
13
- if ($('#customer_autocomplete_template').length > 0) {
14
- window.customerTemplate = Handlebars.compile($('#customer_autocomplete_template').text())
12
+ function formatCustomerResult(customer) {
13
+ var escapedResult = window.customerTemplate({
14
+ customer: customer,
15
+ bill_address: customer.bill_address,
16
+ ship_address: customer.ship_address
17
+ })
18
+ return $(escapedResult)
19
+ }
20
+
21
+ function formatCustomerAddress(address, kind) {
22
+ $('#order_' + kind + '_address_attributes_firstname').val(address.firstname)
23
+ $('#order_' + kind + '_address_attributes_lastname').val(address.lastname)
24
+ $('#order_' + kind + '_address_attributes_address1').val(address.address1)
25
+ $('#order_' + kind + '_address_attributes_company').val(address.company)
26
+ $('#order_' + kind + '_address_attributes_address2').val(address.address2)
27
+ $('#order_' + kind + '_address_attributes_city').val(address.city)
28
+ $('#order_' + kind + '_address_attributes_zipcode').val(address.zipcode)
29
+ $('#order_' + kind + '_address_attributes_phone').val(address.phone)
30
+ $('#order_' + kind + '_address_attributes_phone').val(address.phone)
31
+ $('#order_' + kind + '_address_attributes_country_id').val(address.country_id)
32
+ $('#order_' + kind + '_address_attributes_country_id').trigger('change')
33
+
34
+ var stateSelect = $('#order_' + kind + '_address_attributes_state_id')
35
+
36
+ update_state(kind.charAt(0), function() {
37
+ stateSelect.val(address.state_id).trigger('change')
38
+ })
39
+ }
40
+
41
+ function formatCustomerSelection(customer) {
42
+ $('#order_email').val(customer.email)
43
+ $('#order_user_id').val(customer.id)
44
+ $('#guest_checkout_true').prop('checked', false)
45
+ $('#guest_checkout_false').prop('checked', true)
46
+ $('#guest_checkout_false').prop('disabled', false)
47
+
48
+ var billAddress = customer.bill_address
49
+ var shipAddress = customer.ship_address
50
+
51
+ if (billAddress) {
52
+ formatCustomerAddress(billAddress, 'bill')
53
+ } else {
54
+ clearAddressFields(['bill'])
15
55
  }
16
56
 
17
- var formatCustomerResult = function (customer) {
18
- return customerTemplate({
19
- customer: customer,
20
- bill_address: customer.bill_address,
21
- ship_address: customer.ship_address
22
- })
57
+ if (shipAddress) {
58
+ formatCustomerAddress(shipAddress, 'ship')
59
+ } else {
60
+ clearAddressFields(['ship'])
23
61
  }
24
62
 
25
- if ($('#customer_search').length > 0) {
26
- $('#customer_search').select2({
27
- placeholder: Spree.translations.choose_a_customer,
28
- ajax: {
29
- url: Spree.routes.users_api,
30
- datatype: 'json',
31
- cache: true,
32
- data: function (term, page) {
33
- return {
34
- q: {
35
- 'm': 'or',
36
- 'email_start': term,
37
- 'ship_address_firstname_start': term,
38
- 'ship_address_lastname_start': term,
39
- 'bill_address_firstname_start': term,
40
- 'bill_address_lastname_start': term
41
- },
42
- token: Spree.api_key
43
- }
44
- },
45
- results: function (data, page) {
46
- return { results: data.users }
63
+ return customer.email
64
+ }
65
+
66
+ $.fn.customerAutocomplete = function() {
67
+ this.select2({
68
+ minimumInputLength: 3,
69
+ placeholder: Spree.translations.choose_a_customer,
70
+ ajax: {
71
+ url: Spree.routes.users_api,
72
+ datatype: 'json',
73
+ data: function (params) {
74
+ return {
75
+ q: {
76
+ 'm': 'or',
77
+ email_start: params.term,
78
+ ship_address_firstname_start: params.term,
79
+ ship_address_lastname_start: params.term,
80
+ bill_address_firstname_start: params.term,
81
+ bill_address_lastname_start: params.term
82
+ },
83
+ token: Spree.api_key
47
84
  }
48
85
  },
49
- dropdownCssClass: 'customer_search',
50
- formatResult: formatCustomerResult,
51
- formatSelection: function (customer) {
52
- $('#order_email').val(customer.email)
53
- $('#order_user_id').val(customer.id)
54
- $('#guest_checkout_true').prop('checked', false)
55
- $('#guest_checkout_false').prop('checked', true)
56
- $('#guest_checkout_false').prop('disabled', false)
57
-
58
- var billAddress = customer.bill_address
59
- if (billAddress) {
60
- $('#order_bill_address_attributes_firstname').val(billAddress.firstname)
61
- $('#order_bill_address_attributes_lastname').val(billAddress.lastname)
62
- $('#order_bill_address_attributes_company').val(billAddress.company)
63
- $('#order_bill_address_attributes_address1').val(billAddress.address1)
64
- $('#order_bill_address_attributes_address2').val(billAddress.address2)
65
- $('#order_bill_address_attributes_city').val(billAddress.city)
66
- $('#order_bill_address_attributes_zipcode').val(billAddress.zipcode)
67
- $('#order_bill_address_attributes_phone').val(billAddress.phone)
68
-
69
- $('#order_bill_address_attributes_country_id').select2('val', billAddress.country_id).promise().done(function () {
70
- update_state('b', function () {
71
- $('#order_bill_address_attributes_state_id').select2('val', billAddress.state_id)
72
- })
73
- })
74
- } else {
75
- clear_address_fields()
76
- }
77
- return Select2.util.escapeMarkup(customer.email)
86
+ processResults: function (data) {
87
+ return { results: data.users }
78
88
  }
79
- })
89
+ },
90
+ templateResult: formatCustomerResult
91
+ }).on('select2:select', function (e) {
92
+ var data = e.params.data;
93
+ formatCustomerSelection(data)
94
+ })
95
+ }
96
+
97
+ document.addEventListener('DOMContentLoaded', function() {
98
+ $('#customer_search').customerAutocomplete()
99
+
100
+ if ($('#customer_autocomplete_template').length > 0) {
101
+ window.customerTemplate = Handlebars.compile($('#customer_autocomplete_template').text())
80
102
  }
81
103
 
104
+ // Handle Billing Shipping Address
82
105
  var orderUseBillingInput = $('input#order_use_billing')
106
+
83
107
  var orderUseBilling = function () {
84
108
  if (!orderUseBillingInput.is(':checked')) {
85
109
  $('#shipping').show()
@@ -88,13 +112,17 @@ $(document).ready(function () {
88
112
  }
89
113
  }
90
114
 
91
- orderUseBillingInput.click(orderUseBilling)
115
+ // On page load hide shipping address from
92
116
  orderUseBilling()
93
117
 
118
+ // On click togggle shipping address from
119
+ orderUseBillingInput.click(orderUseBilling)
120
+
121
+ // If guest checkout clear fields
94
122
  $('#guest_checkout_true').change(function () {
95
123
  $('#customer_search').val('')
96
124
  $('#order_user_id').val('')
97
125
  $('#order_email').val('')
98
- clear_address_fields()
126
+ clearAddressFields()
99
127
  })
100
128
  })
@@ -19,7 +19,7 @@ $(document).ready(function () {
19
19
 
20
20
  function addVariant () {
21
21
  $('#stock_details').hide()
22
- var variantId = $('input.variant_autocomplete').val()
22
+ var variantId = $('select.variant_autocomplete').val()
23
23
  var quantity = $('input#variant_quantity').val()
24
24
 
25
25
  adjustLineItems(order_number, variantId, quantity)
@@ -1,43 +1,37 @@
1
- $(document).ready(function () {
1
+ $.fn.optionTypeAutocomplete = function () {
2
2
  'use strict'
3
3
 
4
- function formatOptionType (optionType) {
5
- return Select2.util.escapeMarkup(optionType.presentation + ' (' + optionType.name + ')')
6
- }
7
-
8
- if ($('#product_option_type_ids').length > 0) {
9
- $('#product_option_type_ids').select2({
10
- placeholder: Spree.translations.option_type_placeholder,
11
- multiple: true,
12
- initSelection: function (element, callback) {
13
- var url = Spree.url(Spree.routes.option_types_api, {
14
- ids: element.val(),
4
+ this.select2({
5
+ minimumInputLength: 2,
6
+ multiple: true,
7
+ ajax: {
8
+ url: Spree.routes.option_types_api,
9
+ datatype: 'json',
10
+ data: function (params) {
11
+ var query = {
12
+ q: {
13
+ name_cont: params.term
14
+ },
15
15
  token: Spree.api_key
16
- })
17
- return $.getJSON(url, null, function (data) {
18
- return callback(data)
19
- })
20
- },
21
- ajax: {
22
- url: Spree.routes.option_types_api,
23
- quietMillis: 200,
24
- datatype: 'json',
25
- data: function (term) {
26
- return {
27
- q: {
28
- name_cont: term
29
- },
30
- token: Spree.api_key
31
- }
32
- },
33
- results: function (data) {
34
- return {
35
- results: data
36
- }
37
16
  }
17
+
18
+ return query
38
19
  },
39
- formatResult: formatOptionType,
40
- formatSelection: formatOptionType
41
- })
42
- }
20
+ processResults: function (data) {
21
+ return {
22
+ results: data
23
+ }
24
+ }
25
+ },
26
+ templateResult: function (optionType) {
27
+ return optionType.name
28
+ },
29
+ templateSelection: function (optionType) {
30
+ return optionType.text
31
+ }
32
+ })
33
+ }
34
+
35
+ $(document).ready(function () {
36
+ $('#product_option_type_ids').optionTypeAutocomplete()
43
37
  })
@@ -5,40 +5,67 @@ $.fn.optionValueAutocomplete = function (options) {
5
5
  options = options || {}
6
6
  var multiple = typeof (options.multiple) !== 'undefined' ? options.multiple : true
7
7
  var productSelect = options.productSelect
8
+ var productId = options.productId
9
+ var values = options.values
10
+ var clearSelection = options.clearSelection
11
+
12
+ function formatOptionValueList(values) {
13
+ return values.map(function(obj) {
14
+ return { id: obj.id, text: obj.name }
15
+ })
16
+ }
17
+
18
+ function addOptions(select, productId, values) {
19
+ $.ajax({
20
+ type: 'GET',
21
+ url: Spree.routes.option_values_api,
22
+ dataType: 'json',
23
+ data: {
24
+ token: Spree.api_key,
25
+ q: {
26
+ id_in: values,
27
+ variants_product_id_eq: productId
28
+ }
29
+ }
30
+ }).then(function (data) {
31
+ select.addSelect2Options(data)
32
+ })
33
+ }
8
34
 
9
35
  this.select2({
10
- minimumInputLength: 3,
11
36
  multiple: multiple,
12
- initSelection: function (element, callback) {
13
- $.get(Spree.routes.option_values_api, {
14
- ids: element.val().split(','),
15
- token: Spree.api_key
16
- }, function (data) {
17
- callback(multiple ? data : data[0])
18
- })
19
- },
37
+ minimumInputLength: 1,
20
38
  ajax: {
21
39
  url: Spree.routes.option_values_api,
22
- datatype: 'json',
23
- data: function (term) {
24
- var productId = typeof (productSelect) !== 'undefined' ? $(productSelect).select2('val') : null
25
- return {
40
+ dataType: 'json',
41
+ data: function (params) {
42
+ var selectedProductId = typeof (productSelect) !== 'undefined' ? productSelect.val() : null
43
+
44
+ var query = {
26
45
  q: {
27
- name_cont: term,
28
- variants_product_id_eq: productId
46
+ name_cont: params.term,
47
+ variants_product_id_eq: selectedProductId
29
48
  },
30
49
  token: Spree.api_key
31
50
  }
51
+
52
+ return query;
32
53
  },
33
- results: function (data) {
34
- return { results: data }
54
+ processResults: function(data) {
55
+ var results = formatOptionValueList(data)
56
+
57
+ return {
58
+ results: results
59
+ }
35
60
  }
36
- },
37
- formatResult: function (optionValue) {
38
- return optionValue.name
39
- },
40
- formatSelection: function (optionValue) {
41
- return optionValue.name
42
61
  }
43
62
  })
63
+
64
+ if (values && productId && !clearSelection) {
65
+ addOptions(this, productId, values)
66
+ }
67
+
68
+ if (clearSelection) {
69
+ this.val(null).trigger('change')
70
+ }
44
71
  }