effective_addresses 1.8.4 → 1.8.5

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ff3f966afab7e2c3b8199c448af7fea1ceee0411
4
- data.tar.gz: ff0c0b5f1b79f540088db80a4199204873ff6e1c
3
+ metadata.gz: 10e0a18e1057bb62aa50278891d207d8cfb1420a
4
+ data.tar.gz: 09d6a1fa25e100cc1e1690d53015799d0447d874
5
5
  SHA512:
6
- metadata.gz: aafa438364c21b562ab22fbfd5456f5ea760aeec032d243daa5f14571e9cb6cb1e77c62b249425b6a7554a4230648f2ff78cf4975328c0f6bbeb1eb78225e011
7
- data.tar.gz: 12fc4c7ad7132879f28e982aa7e4a658879c5e670f2d1eac59db063997e09db6a7d17a2a4389b0dc320f33751385085261487bbc3ead260c4cdfd84b3bd90bcb
6
+ metadata.gz: 52d258748596da058b01e2a092f810ade1451171bb56035dec4b39292530aa603a88574c5ab60ae27d7bbf5dce030c872d6efae6b14035e4dbd2d3b10e322b10
7
+ data.tar.gz: 6af33db771036fd87c82e991917d8b96cac6d7ab461b715587752d8dcf6d7b9d776b9de058093bc84b1cbd1e4d3e12da5fb7c66506720b1a5429ad45e835df3a
@@ -37,7 +37,7 @@ module EffectiveAddressesHelper
37
37
  end
38
38
  end
39
39
 
40
- def region_options_for_simple_form_select(regions = nil)
40
+ def effective_address_regions_collection(regions = nil)
41
41
  if regions.present?
42
42
  countries = regions
43
43
  elsif EffectiveAddresses.country_codes == :all
@@ -46,20 +46,25 @@ module EffectiveAddressesHelper
46
46
  countries = Carmen::Country.all.select { |c| (EffectiveAddresses.country_codes || []).include?(c.code) }
47
47
  end
48
48
 
49
- collection = countries.map { |c| [c.name, c.code] }.sort! { |a, b| a.first <=> b.first }
50
-
51
49
  if regions.blank? && EffectiveAddresses.country_codes_priority.present?
52
- collection.insert(0, ['---------------------', '', :disabled])
50
+ countries = countries.reject { |c| EffectiveAddresses.country_codes_priority.include?(c.code) }
51
+ end
53
52
 
54
- EffectiveAddresses.country_codes_priority.reverse.each do |code|
55
- if (country = Carmen::Country.coded(code))
56
- collection.insert(0, [country.name, country.code])
57
- end
58
- end
53
+ countries = countries.map { |c| [c.name, c.code] }.sort! { |a, b| a.first <=> b.first }
54
+
55
+ if regions.blank? && EffectiveAddresses.country_codes_priority.present?
56
+ countries.unshift(*
57
+ EffectiveAddresses.country_codes_priority.map do |code|
58
+ country = Carmen::Country.coded(code)
59
+ [country.name, country.code]
60
+ end + [['-------------------', '-', disabled: :disabled]]
61
+ )
59
62
  end
60
63
 
61
- collection
64
+ countries
62
65
  end
66
+ alias_method :effective_address_countries_collection, :effective_address_regions_collection
67
+ alias_method :region_options_for_simple_form_select, :effective_address_regions_collection
63
68
 
64
69
  end
65
70
 
@@ -56,10 +56,14 @@ module ActsAsAddressable
56
56
  end
57
57
  end
58
58
 
59
- if ((categories.try(:keys) rescue nil) || categories).include?('billing') && ((categories.try(:keys) rescue nil) || categories).include?('shipping')
59
+ # [:billing_address, :shipping_address]
60
+ address_names = (categories.respond_to?(:keys) ? categories.keys : categories).map { |category| (category.to_s + '_address').to_sym }
61
+
62
+ if address_names.include?(:billing_address) && address_names.include?(:shipping_address)
60
63
  self.send(:define_method, :shipping_address_same_as_billing?) { billing_address == shipping_address }
61
64
  end
62
65
 
66
+ self.send(:define_method, :effective_address_names) { address_names }
63
67
  end
64
68
 
65
69
  module ClassMethods
@@ -8,6 +8,29 @@ module Effective
8
8
 
9
9
  belongs_to :addressable, polymorphic: true, touch: true
10
10
 
11
+ if defined?(EffectiveResources)
12
+ effective_resource do
13
+ category :string
14
+
15
+ full_name :string
16
+ address1 :string
17
+ address2 :string
18
+
19
+ if EffectiveAddresses.use_address3
20
+ address3 :string
21
+ end
22
+
23
+ city :string
24
+ state_code :string
25
+ country_code :string
26
+ postal_code :string
27
+
28
+ shipping_address_same_as_billing permitted: true
29
+
30
+ timestamps
31
+ end
32
+ end
33
+
11
34
  validates :category, :address1, :city, :country_code, :postal_code, presence: true, if: Proc.new { |address| address.present? }
12
35
  validates :state_code, presence: true, if: Proc.new { |address| address.present? && (address.country_code.blank? || Carmen::Country.coded(address.country_code).try(:subregions).present?) }
13
36
 
@@ -126,7 +149,7 @@ module Effective
126
149
  if defined?(::ActiveRecord::ConnectionAdapters::Column::TRUE_VALUES) # Rails 5
127
150
  ::ActiveRecord::ConnectionAdapters::Column::TRUE_VALUES.include?(shipping_address_same_as_billing)
128
151
  else
129
- ActiveRecord::Type::Boolean.new.cast(shipping_address_same_as_billing)
152
+ ::ActiveRecord::Type::Boolean.new.cast(shipping_address_same_as_billing)
130
153
  end
131
154
  end
132
155
  end
@@ -26,7 +26,7 @@
26
26
  disabled: same_as_billing,
27
27
  wrapper: wrapper_options
28
28
 
29
- - if fa.object.respond_to?(:address3)
29
+ - if fa.object.respond_to?(:address3) && EffectiveAddresses.use_address3
30
30
  = fa.text_field :address3,
31
31
  label: false,
32
32
  required: false,
@@ -41,7 +41,7 @@
41
41
 
42
42
  .row
43
43
  .col-md-4
44
- = fa.select :country_code, region_options_for_simple_form_select(),
44
+ = fa.select :country_code, effective_address_countries_collection(),
45
45
  label: 'Country',
46
46
  required: required,
47
47
  disabled: same_as_billing,
@@ -50,7 +50,7 @@
50
50
 
51
51
  .col-md-5
52
52
  - if fa.object.try(:country_code).present?
53
- = fa.select :state_code, region_options_for_simple_form_select(Carmen::Country.coded(fa.object.country_code).subregions),
53
+ = fa.select :state_code, effective_address_regions_collection(Carmen::Country.coded(fa.object.country_code).subregions),
54
54
  label: 'State / Province',
55
55
  required: required,
56
56
  disabled: same_as_billing,
@@ -41,7 +41,7 @@
41
41
  = fa.input :country_code,
42
42
  as: (defined?(EffectiveFormInputs) ? :effective_select : :select),
43
43
  required: required,
44
- collection: region_options_for_simple_form_select(),
44
+ collection: effective_address_countries_collection(),
45
45
  input_html: {'data-effective-address-country' => uuid},
46
46
  disabled: shipping_address_same_as_billing,
47
47
  wrapper_html: { style: ('display: none;' if shipping_address_same_as_billing) }
@@ -51,7 +51,7 @@
51
51
  = fa.input :state_code,
52
52
  as: (defined?(EffectiveFormInputs) ? :effective_select : :select),
53
53
  required: required,
54
- collection: region_options_for_simple_form_select(Carmen::Country.coded(fa.object.country_code).subregions),
54
+ collection: effective_address_regions_collection(Carmen::Country.coded(fa.object.country_code).subregions),
55
55
  prompt: 'Please choose',
56
56
  input_html: {'data-effective-address-state' => uuid},
57
57
  input_js: { placeholder: 'Please choose' },
@@ -6,12 +6,15 @@ EffectiveAddresses.setup do |config|
6
6
  # (can be overridden on a per address basis)
7
7
  config.use_full_name = true
8
8
 
9
+ # A 3rd address field
10
+ config.use_address3 = false
11
+
9
12
  # Country codes to display in country_select dropdowns.
10
13
  config.country_codes = :all
11
14
  #config.country_codes = ['US', 'CA'] # Or you can be more selective...
12
15
 
13
16
  # Select these countries ontop of the others
14
- config.country_codes_priority = ['US', 'CA'] # nil for no priority countries
17
+ # config.country_codes_priority = ['US', 'CA']
15
18
 
16
19
  # Force this country to be preselected on any new address forms.
17
20
  # Valid values are: country code, country name, or nil.
@@ -1,3 +1,3 @@
1
1
  module EffectiveAddresses
2
- VERSION = '1.8.4'.freeze
2
+ VERSION = '1.8.5'.freeze
3
3
  end
@@ -10,6 +10,7 @@ module EffectiveAddresses
10
10
  mattr_accessor :country_codes_priority
11
11
  mattr_accessor :addresses_table_name
12
12
  mattr_accessor :use_full_name
13
+ mattr_accessor :use_address3
13
14
  mattr_accessor :simple_form_options
14
15
  mattr_accessor :validate_postal_code_format
15
16
  mattr_accessor :pre_selected_country
@@ -20,7 +21,7 @@ module EffectiveAddresses
20
21
  end
21
22
 
22
23
  def self.permitted_params
23
- [:address1, :address2, :city, :country_code, :state_code, :postal_code, :full_name, :shipping_address_same_as_billing]
24
+ [:address1, :address2, :address3, :city, :country_code, :state_code, :postal_code, :full_name, :shipping_address_same_as_billing]
24
25
  end
25
26
 
26
27
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: effective_addresses
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.8.4
4
+ version: 1.8.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Code and Effect
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-08-27 00:00:00.000000000 Z
11
+ date: 2018-10-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -104,7 +104,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
104
104
  version: '0'
105
105
  requirements: []
106
106
  rubyforge_project:
107
- rubygems_version: 2.5.2.3
107
+ rubygems_version: 2.4.5.1
108
108
  signing_key:
109
109
  specification_version: 4
110
110
  summary: Extend any ActiveRecord object to have one or more named addresses. Includes