mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-01-24 20:36:49 +00:00
Merge pull request #2341 from luisramos0/checkout_country_state
fixed country_state selectors on checkout
This commit is contained in:
@@ -0,0 +1,8 @@
|
||||
Darkswarm.controller "CountryCtrl", ($scope, availableCountries) ->
|
||||
|
||||
$scope.countries = availableCountries
|
||||
|
||||
$scope.countriesById = $scope.countries.reduce (obj, country) ->
|
||||
obj[country.id] = country
|
||||
obj
|
||||
, {}
|
||||
@@ -66,20 +66,6 @@ module CheckoutHelper
|
||||
Spree::Money.new order.total - order.total_tax, currency: order.currency
|
||||
end
|
||||
|
||||
def checkout_state_options(source_address)
|
||||
if source_address == :billing
|
||||
address = @order.billing_address
|
||||
elsif source_address == :shipping
|
||||
address = @order.shipping_address
|
||||
end
|
||||
|
||||
[[]] + address.country.states.map { |c| [c.name, c.id] }
|
||||
end
|
||||
|
||||
def checkout_country_options
|
||||
available_countries.map { |c| [c.name, c.id] }
|
||||
end
|
||||
|
||||
def validated_input(name, path, args = {})
|
||||
attributes = {
|
||||
required: true,
|
||||
|
||||
@@ -19,25 +19,26 @@
|
||||
%input{type: :checkbox, "ng-model" => "Checkout.default_bill_address"}
|
||||
= t :checkout_default_bill_address
|
||||
|
||||
= f.fields_for :bill_address, @order.bill_address do |ba|
|
||||
.row
|
||||
.small-12.columns
|
||||
= validated_input t(:address), "order.bill_address.address1", "ofn-focus" => "accordion['billing']"
|
||||
.row
|
||||
.small-12.columns
|
||||
= validated_input t(:address2), "order.bill_address.address2", required: false
|
||||
.row
|
||||
.small-6.columns
|
||||
= validated_input t(:city), "order.bill_address.city"
|
||||
%div{ "ng-controller" => "CountryCtrl" }
|
||||
= f.fields_for :bill_address, @order.bill_address do |ba|
|
||||
.row
|
||||
.small-12.columns
|
||||
= validated_input t(:address), "order.bill_address.address1", "ofn-focus" => "accordion['billing']"
|
||||
.row
|
||||
.small-12.columns
|
||||
= validated_input t(:address2), "order.bill_address.address2", required: false
|
||||
.row
|
||||
.small-6.columns
|
||||
= validated_input t(:city), "order.bill_address.city"
|
||||
|
||||
.small-6.columns
|
||||
= validated_select t(:state), "order.bill_address.state_id", checkout_state_options(:billing)
|
||||
.row
|
||||
.small-6.columns
|
||||
= validated_input t(:postcode), "order.bill_address.zipcode"
|
||||
.small-6.columns
|
||||
= validated_select t(:state), "order.bill_address.state_id", {}, {"ng-options" => "s.id as s.name for s in countriesById[order.bill_address.country_id].states"}
|
||||
.row
|
||||
.small-6.columns
|
||||
= validated_input t(:postcode), "order.bill_address.zipcode"
|
||||
|
||||
.small-6.columns.right
|
||||
= validated_select t(:country), "order.bill_address.country_id", checkout_country_options
|
||||
.small-6.columns.right
|
||||
= validated_select t(:country), "order.bill_address.country_id", {}, {"ng-init" => "order.bill_address.country_id = order.bill_address.country_id || #{Spree::Config[:default_country_id]}", "ng-options" => "c.id as c.name for c in countries"}
|
||||
|
||||
.row
|
||||
.small-12.columns.text-right
|
||||
|
||||
@@ -1,28 +1,28 @@
|
||||
.small-12.columns
|
||||
#ship_address{"ng-if" => "Checkout.requireShipAddress()"}
|
||||
%div.visible{"ng-if" => "!Checkout.ship_address_same_as_billing"}
|
||||
.row
|
||||
.small-6.columns
|
||||
= validated_input t(:first_name), "order.ship_address.firstname", "ofn-focus" => "accordion['shipping']"
|
||||
.small-6.columns
|
||||
= validated_input t(:last_name), "order.ship_address.lastname"
|
||||
.row
|
||||
.small-12.columns
|
||||
= validated_input t(:address), "order.ship_address.address1"
|
||||
.row
|
||||
.small-12.columns
|
||||
= validated_input t(:address2), "order.ship_address.address2", required: false
|
||||
.row
|
||||
.small-6.columns
|
||||
= validated_input t(:city), "order.ship_address.city"
|
||||
.small-6.columns
|
||||
= validated_select t(:state), "order.ship_address.state_id", checkout_state_options(:shipping)
|
||||
.row
|
||||
.small-6.columns
|
||||
= validated_input t(:postcode), "order.ship_address.zipcode"
|
||||
.small-6.columns.right
|
||||
= validated_select t(:country), "order.ship_address.country_id", checkout_country_options
|
||||
|
||||
.row
|
||||
.small-6.columns
|
||||
= validated_input t(:phone), "order.ship_address.phone"
|
||||
%div{ "ng-controller" => "CountryCtrl" }
|
||||
.row
|
||||
.small-6.columns
|
||||
= validated_input t(:first_name), "order.ship_address.firstname", "ofn-focus" => "accordion['shipping']"
|
||||
.small-6.columns
|
||||
= validated_input t(:last_name), "order.ship_address.lastname"
|
||||
.row
|
||||
.small-12.columns
|
||||
= validated_input t(:address), "order.ship_address.address1"
|
||||
.row
|
||||
.small-12.columns
|
||||
= validated_input t(:address2), "order.ship_address.address2", required: false
|
||||
.row
|
||||
.small-6.columns
|
||||
= validated_input t(:city), "order.ship_address.city"
|
||||
.small-6.columns
|
||||
= validated_select t(:state), "order.ship_address.state_id", {}, {"ng-options" => "s.id as s.name for s in countriesById[order.ship_address.country_id].states"}
|
||||
.row
|
||||
.small-6.columns
|
||||
= validated_input t(:postcode), "order.ship_address.zipcode"
|
||||
.small-6.columns.right
|
||||
= validated_select t(:country), "order.ship_address.country_id", {}, {"ng-init" => "order.ship_address.country_id = order.ship_address.country_id || #{Spree::Config[:default_country_id]}", "ng-options" => "c.id as c.name for c in countries"}
|
||||
.row
|
||||
.small-6.columns
|
||||
= validated_input t(:phone), "order.ship_address.phone"
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
= t :checkout_title
|
||||
|
||||
= inject_enterprise_and_relatives
|
||||
= inject_available_countries
|
||||
|
||||
.darkswarm.footer-pad
|
||||
- content_for :order_cycle_form do
|
||||
|
||||
Reference in New Issue
Block a user