spree_address_format_i18n 1.1.0 → 1.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.
- checksums.yaml +4 -4
- data/app/helpers/spree/addresses_helper_decorator.rb +36 -0
- data/app/models/spree_address_format_i18n/address_decorator.rb +1 -1
- data/config/locales/ja.yml +16 -0
- data/lib/spree_address_format_i18n/version.rb +1 -1
- metadata +2 -5
- data/app/helpers/spree/admin/base_helper_decorator.rb +0 -16
- data/app/views/spree/admin/shared/_address_form.html.erb +0 -45
- data/lib/generators/spree_address_format_i18n/install/install_generator.rb +0 -20
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: fe05594137f4e266415994c41802623185b224482a10060db4ed94732c6fafbd
|
|
4
|
+
data.tar.gz: edb6bceca9d561083f43481be33570bbc83b774a1b3886b564d68553c102e47a
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 2194c8c9a7f3e6d587878ee2dbc5300f65bc48b4a7c71eaaad8c84659a059d3535df4768abd7684beb1cff83932731c5358cdaf5afe23451f47d10764da8e739
|
|
7
|
+
data.tar.gz: ac88ba2170c5467d3bfe93cbbdaa2b92e1fce50255eae6561cb96a37178ded5503b405c63ad1e85a52d14d7ddba7cbe29fd16696776fb59eb1de537f9e31e6f0
|
|
@@ -3,6 +3,42 @@ module Spree
|
|
|
3
3
|
# List of kana fields that should not be excluded even when `store.use_kana_fields` is false.
|
|
4
4
|
IGNORED_KANA_FIELDS = [ :company_kana ]
|
|
5
5
|
|
|
6
|
+
# @gem-override spree_core-5.3.6/app/helpers/spree/addresses_helper.rb#address_field
|
|
7
|
+
# @see https://github.com/be-agile/giga-repeat/issues/1397
|
|
8
|
+
# 本家を super で呼び、入力欄の直下にその欄のエラーを足し、placeholder を入力例にする
|
|
9
|
+
# (引数リストは本家のシグネチャに依存する)。本家はエラーをページ最上部の一覧にしか
|
|
10
|
+
# 出さないため、入力欄から遠くて気づかれない。
|
|
11
|
+
def address_field(form, method, address_id = 'b', required = false, text_field_attributes: {}, &handler)
|
|
12
|
+
label = I18n.t("activerecord.attributes.spree/address.#{method}")
|
|
13
|
+
field = super(form, method, address_id, required, text_field_attributes: text_field_attributes.merge(placeholder: address_placeholder(method, label)), &handler)
|
|
14
|
+
field + address_field_errors(form, method)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
# @gem-override spree_core-5.3.6/app/helpers/spree/addresses_helper.rb#address_zipcode
|
|
18
|
+
# @see https://github.com/be-agile/giga-repeat/issues/1397
|
|
19
|
+
# placeholder を入力例にする以外は本家のまま。
|
|
20
|
+
def address_zipcode(form, country, address_id = 'b')
|
|
21
|
+
method_name = Spree.t(:zipcode)
|
|
22
|
+
form.label(:zipcode, method_name, id: address_id + '_zipcode_label', class: 'block text-xs text-neutral-600 mb-1') +
|
|
23
|
+
form.text_field(:zipcode,
|
|
24
|
+
class: 'text-input',
|
|
25
|
+
placeholder: address_placeholder(:zipcode, method_name),
|
|
26
|
+
required: country&.zipcode_required?,
|
|
27
|
+
data: { 'address-form-target': 'zipcode', address_autocomplete_target: 'zipcode' },
|
|
28
|
+
aria: { label: Spree.t(:zipcode) })
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
# 入力例(spree.address_placeholders.*)が無いロケール・欄では、本家と同じくラベル名を使う。
|
|
32
|
+
def address_placeholder(method, label)
|
|
33
|
+
I18n.t("spree.address_placeholders.#{method}", default: label)
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def address_field_errors(form, method)
|
|
37
|
+
safe_join(form.object.errors.full_messages_for(method).map do |message|
|
|
38
|
+
content_tag(:p, message, class: 'text-red-500 text-xs mt-1')
|
|
39
|
+
end)
|
|
40
|
+
end
|
|
41
|
+
|
|
6
42
|
def order_address_fields(store)
|
|
7
43
|
name_order = I18n.t('address_format_i18n.fields')
|
|
8
44
|
return Spree::Address::ADDRESS_FIELDS if name_order.blank?
|
|
@@ -27,7 +27,7 @@ module SpreeAddressFormatI18n
|
|
|
27
27
|
base.validates :firstname_kana, presence: true, if: -> { kana_presence_required.call(self, :firstname_kana) }
|
|
28
28
|
base.validates :firstname_kana, format: { with: /\A[\p{Katakana}\p{Blank}ー・]+\z/, allow_blank: true, message: :invalid_katakana }, if: -> { Spree::Store.current.use_kana_fields }
|
|
29
29
|
|
|
30
|
-
base.validates :company_kana, format: { with: /\A[\p{Katakana}\p{Blank}ー・]+\z
|
|
30
|
+
base.validates :company_kana, format: { with: /\A[\p{Katakana}\p{Blank}ー・]+\z/, message: :invalid_katakana }, if: -> { company_kana.present? }
|
|
31
31
|
end
|
|
32
32
|
|
|
33
33
|
|
data/config/locales/ja.yml
CHANGED
|
@@ -4,6 +4,19 @@ ja:
|
|
|
4
4
|
firstname_kana: メイ
|
|
5
5
|
fax: FAX
|
|
6
6
|
company_kana: カナ会社名
|
|
7
|
+
address_placeholders:
|
|
8
|
+
company: 例)株式会社山田商事
|
|
9
|
+
company_kana: 例)カブシキガイシャヤマダショウジ
|
|
10
|
+
lastname: 例)山田
|
|
11
|
+
firstname: 例)太郎
|
|
12
|
+
lastname_kana: 例)ヤマダ
|
|
13
|
+
firstname_kana: 例)タロウ
|
|
14
|
+
zipcode: 例)150-0001
|
|
15
|
+
city: 例)渋谷区
|
|
16
|
+
address1: 例)神宮前1-1-1
|
|
17
|
+
address2: 例)山田ビル3F
|
|
18
|
+
phone: 例)03-1234-5678
|
|
19
|
+
fax: 例)03-1234-5679
|
|
7
20
|
use_kana_fields: "住所にかなフィールドを使用する"
|
|
8
21
|
show_country_field: "住所に国フィールドを表示する"
|
|
9
22
|
address_field_settings: "住所フィールド設定"
|
|
@@ -25,3 +38,6 @@ ja:
|
|
|
25
38
|
firstname_kana: メイ
|
|
26
39
|
company_kana: カナ会社名
|
|
27
40
|
fax: FAX
|
|
41
|
+
errors:
|
|
42
|
+
messages:
|
|
43
|
+
invalid_katakana: は全角カタカナで入力してください(漢字・ひらがな・数字・記号は使えません)
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: spree_address_format_i18n
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.
|
|
4
|
+
version: 1.2.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- be agile Co., Ltd.
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2026-
|
|
11
|
+
date: 2026-09-30 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: spree
|
|
@@ -136,7 +136,6 @@ files:
|
|
|
136
136
|
- app/.gitkeep
|
|
137
137
|
- app/controllers/.gitkeep
|
|
138
138
|
- app/helpers/spree/addresses_helper_decorator.rb
|
|
139
|
-
- app/helpers/spree/admin/base_helper_decorator.rb
|
|
140
139
|
- app/models/.gitkeep
|
|
141
140
|
- app/models/spree/user_decorator.rb
|
|
142
141
|
- app/models/spree_address_format_i18n/address_decorator.rb
|
|
@@ -153,7 +152,6 @@ files:
|
|
|
153
152
|
- app/views/spree/address_format/_address_field.html.erb
|
|
154
153
|
- app/views/spree/address_format/_address_group.html.erb
|
|
155
154
|
- app/views/spree/addresses/_form.html.erb
|
|
156
|
-
- app/views/spree/admin/shared/_address_form.html.erb
|
|
157
155
|
- app/views/spree/admin/stores/_country_field_settings.html.erb
|
|
158
156
|
- bin/rails
|
|
159
157
|
- config/initializers/spree_permitted_attributes.rb
|
|
@@ -164,7 +162,6 @@ files:
|
|
|
164
162
|
- db/migrate/20250428020947_change_value_country.rb
|
|
165
163
|
- db/migrate/20250505070307_add_company_kana_and_fax_to_spree_addresses.rb
|
|
166
164
|
- lib/generators/spree_address_format_i18n/add_kana_fields_generator.rb
|
|
167
|
-
- lib/generators/spree_address_format_i18n/install/install_generator.rb
|
|
168
165
|
- lib/generators/spree_address_format_i18n/install_generator.rb
|
|
169
166
|
- lib/generators/spree_address_format_i18n/templates/initializer.rb
|
|
170
167
|
- lib/spree_address_format_i18n.rb
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
module Spree
|
|
2
|
-
module Admin
|
|
3
|
-
module BaseHelperDecorator
|
|
4
|
-
def order_address_fields(address_fields)
|
|
5
|
-
name_order = I18n.t('address_format_i18n')
|
|
6
|
-
return address_fields if name_order.blank?
|
|
7
|
-
|
|
8
|
-
Spree::Address::ADDRESS_FIELDS.sort_by do |field|
|
|
9
|
-
name_order.index(field) || Float::INFINITY
|
|
10
|
-
end
|
|
11
|
-
end
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
Spree::Admin::BaseHelper.prepend(BaseHelperDecorator)
|
|
15
|
-
end
|
|
16
|
-
end
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
<% s_or_b = type.chars.first %>
|
|
2
|
-
|
|
3
|
-
<div id="<%= type %>" data-hook="address_fields">
|
|
4
|
-
<% order_address_fields(Spree::Address::ADDRESS_FIELDS).each do |field| %>
|
|
5
|
-
<% if field == "country" %>
|
|
6
|
-
<%= field_container (s_or_b + '_' + field), nil, class: ["#{type}-row"] do %>
|
|
7
|
-
<%= f.label :country_id, Spree.t(:country) %>
|
|
8
|
-
<div id="<%= s_or_b %>country">
|
|
9
|
-
<%= f.collection_select :country_id, all_countries, :id, :name, {}, { class: 'select2 w-100' } %>
|
|
10
|
-
</div>
|
|
11
|
-
<% end %>
|
|
12
|
-
<% elsif field == "state" %>
|
|
13
|
-
<%= field_container (s_or_b + '_' + field), :state, class: ["#{type}-row"] do %>
|
|
14
|
-
<%= f.label :state_id, Spree.t(:state) %>
|
|
15
|
-
<div id="<%= s_or_b %>state">
|
|
16
|
-
<% if f.object.country.try(:states) %>
|
|
17
|
-
<%= f.text_field :state_name,
|
|
18
|
-
style: "display: #{f.object.country.try(:states) && f.object.country.states.empty? ? 'block' : 'none' };",
|
|
19
|
-
disabled: !(f.object.country.try(:states) && f.object.country.states.empty?), class: 'form-control state_name' %>
|
|
20
|
-
<%= f.collection_select :state_id, f.object.country.states.sort, :id, :name, { include_blank: true }, { class: 'select2 w-100', disabled: f.object.country.states.empty? } %>
|
|
21
|
-
<% else %>
|
|
22
|
-
<div>
|
|
23
|
-
<em><%= Spree.t(:no_country) %></em>
|
|
24
|
-
</div>
|
|
25
|
-
<% end %>
|
|
26
|
-
</div>
|
|
27
|
-
<%= error_message_on f.object, :state_id %>
|
|
28
|
-
<% end %>
|
|
29
|
-
<% else %>
|
|
30
|
-
<%= field_container (s_or_b + '_' + field), nil, class: ["#{type}-row"] do %>
|
|
31
|
-
<%= f.label field, Spree.t(field) %>
|
|
32
|
-
<%= f.text_field field, class: 'form-control' %>
|
|
33
|
-
<%= error_message_on f.object, field %>
|
|
34
|
-
<% end %>
|
|
35
|
-
<% end %>
|
|
36
|
-
<% end %>
|
|
37
|
-
</div>
|
|
38
|
-
|
|
39
|
-
<% content_for :head do %>
|
|
40
|
-
<script>
|
|
41
|
-
document.addEventListener("spree:load", function() {
|
|
42
|
-
$('#<%= s_or_b %>country select').on('change', function() { updateAddressState('<%= s_or_b %>'); });
|
|
43
|
-
})
|
|
44
|
-
</script>
|
|
45
|
-
<% end %>
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
module SpreeAddressFormatI18n
|
|
2
|
-
module Generators
|
|
3
|
-
class InstallGenerator < Rails::Generators::Base
|
|
4
|
-
class_option :migrate, type: :boolean, default: true
|
|
5
|
-
|
|
6
|
-
def add_migrations
|
|
7
|
-
run 'bundle exec rake railties:install:migrations FROM=spree_address_format_i18n'
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
def run_migrations
|
|
11
|
-
run_migrations = options[:migrate] || ['', 'y', 'Y'].include?(ask('Would you like to run the migrations now? [Y/n]'))
|
|
12
|
-
if run_migrations
|
|
13
|
-
run 'bin/rails db:migrate'
|
|
14
|
-
else
|
|
15
|
-
puts 'Skipping rails db:migrate, don\'t forget to run it!'
|
|
16
|
-
end
|
|
17
|
-
end
|
|
18
|
-
end
|
|
19
|
-
end
|
|
20
|
-
end
|