spree_storefront 5.1.0 → 5.1.2

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
  SHA256:
3
- metadata.gz: 27761b02cf70946cdbbc70e8f5e7da9ac85ce0bd054c848445ef2b94631c1156
4
- data.tar.gz: 41315c704c215b2c069333bbfc6fd61e83df4f5558696aabfc33c45feb26586b
3
+ metadata.gz: 2c8c76d13bfec5c560c10a4b3d6850c9d9346cc0616900c9d5a97b4610d095cc
4
+ data.tar.gz: '00489df5b50026d0a677e1da44446adb2458490bd5427bc2bc3ac179ec85f285'
5
5
  SHA512:
6
- metadata.gz: 52b3d1277b68eaa2b90ebe3a610b7bc34adb3eb06b4bd9e0fe372a1a82d77f4940ad1004069869136306cfa1593f215b2d830591bd602e26da8325fab0936723
7
- data.tar.gz: 56e9ee6f78744834cb4f35dd72f7dd410be759d2582299a7da281d420d6411da436f0a90694503ba5548990bb3200def1cfd88522727ca9bf8a6a7b8fb78398b
6
+ metadata.gz: af823e3b44951c2027dc02b6205f9ace7ddf62f0061f8888b654baf97959dbfc4bfe6f73c887c948c18d4876fc73e7754e08c3eb649a20a6d55e0c73863f51db
7
+ data.tar.gz: 18eb5663f56b337a187f9c1e867cab1f794ca9165ede2df93b1cab0df0fd6230b4acd374f71c220ba29a25ea9c18586ab28c986aecdb8141e7415759b84cee06
@@ -10,7 +10,13 @@ module Spree
10
10
  helper_method :stored_location
11
11
  layout 'spree/storefront'
12
12
 
13
+ include Spree::Core::ControllerHelpers::Auth
14
+ include Spree::Core::ControllerHelpers::Store
13
15
  include Spree::Core::ControllerHelpers::Order
16
+ include Spree::Core::ControllerHelpers::StrongParameters
17
+ include Spree::Core::ControllerHelpers::Locale
18
+ include Spree::Core::ControllerHelpers::Currency
19
+ include Spree::Core::ControllerHelpers::Turbo
14
20
  include Spree::LocaleUrls
15
21
  include Spree::ThemeConcern
16
22
  include Spree::IntegrationsHelper if defined?(Spree::IntegrationsHelper)
@@ -228,10 +228,8 @@ module Spree
228
228
  @order.checkout_steps.first
229
229
  elsif insufficient_payment?
230
230
  'payment'
231
- elsif @order.state == 'cart'
232
- 'address'
233
- elsif @order.digital? && @order.delivery?
234
- 'address'
231
+ elsif @order.state == 'cart' || (!@order.requires_ship_address? && @order.delivery?)
232
+ @order.checkout_steps.first
235
233
  else
236
234
  @order.state
237
235
  end
@@ -311,7 +309,7 @@ module Spree
311
309
 
312
310
  def before_address
313
311
  if try_spree_current_user.present?
314
- @order.ship_address ||= try_spree_current_user.ship_address
312
+ @order.ship_address ||= try_spree_current_user.ship_address || try_spree_current_user.bill_address if @order.requires_ship_address?
315
313
  @order.bill_address ||= try_spree_current_user.bill_address
316
314
  end
317
315
  # for guest users or users without addresses, we need to build an empty one here
@@ -2,7 +2,7 @@ module Spree
2
2
  module CheckoutHelper
3
3
  def checkout_progress(numbers: false)
4
4
  states = (@order.checkout_steps - ['complete']).unshift('cart')
5
- states -= ['delivery'] if @order.digital?
5
+ states -= ['delivery'] if !@order.requires_ship_address? || !@order.delivery_required?
6
6
 
7
7
  items = states.each_with_index.map do |state, i|
8
8
  text = Spree.t("order_state.#{state}").titleize
@@ -10,9 +10,11 @@ module Spree
10
10
 
11
11
  css_classes = ['breadcrumb-item']
12
12
 
13
- if @order.passed_checkout_step?(state)
13
+ # cart is not included in checkout_steps, so we need to handle it separately
14
+ if @order.passed_checkout_step?(state) || state == 'cart'
14
15
  link_content = text
15
16
  link_url = if state == 'cart'
17
+ # using absolute URL if using headless storefronts
16
18
  spree.cart_url(host: current_store.url_or_custom_domain, order_token: @order.token)
17
19
  else
18
20
  spree.checkout_state_path(@order.token, state)
@@ -17,7 +17,7 @@
17
17
  </div>
18
18
  <% end %>
19
19
  <div class="actions">
20
- <%= f.submit Spree.t(:login), class: 'btn btn-primary w-full' %>
20
+ <%= f.submit Spree.t(:login), class: 'btn btn-primary w-full', id: 'login-button' %>
21
21
  </div>
22
22
  <% end %>
23
23
  <%= render "devise/shared/links" %>
@@ -3,7 +3,7 @@
3
3
  <% address_type = 'shipping' %>
4
4
  <% address_name = "#{address_type[0...4]}_address" %>
5
5
 
6
- <% if user_available_addresses.present? %>
6
+ <% if @order.requires_ship_address? &&user_available_addresses.present? %>
7
7
  <div data-controller="checkout-address-book">
8
8
  <%= turbo_frame_tag :checkout_address_book do %>
9
9
  <div class="mb-4" data-checkout-address-book-target="list">
@@ -1,11 +1,13 @@
1
1
  <div class="flex justify-between items-center pt-3">
2
- <div class="mr-5 w-[60px] h-[60px] relative rounded bg-accent-100 shrink-0">
2
+ <div class="mr-5 relative shrink-0">
3
3
  <span class="rounded-full text-xs text-center font-bold pl-[0.5px] py-1 w-6 text-sidebar-text bg-background absolute -right-2 -top-3">
4
4
  <%= line_item.quantity %>
5
5
  </span>
6
6
  <% image = line_item.variant.default_image %>
7
7
  <% if image.present? && image.attached? && image.variable? %>
8
- <%= spree_image_tag(image, class: 'rounded border border-default bg-transparent object-cover object-center', loading: :lazy, width: 60, height: 60) %>
8
+ <%= spree_image_tag(image, class: 'rounded border border-default bg-transparent object-cover object-center', loading: :lazy, width: 64, height: 64) %>
9
+ <% else %>
10
+ <div class="w-16 h-16 bg-accent border border-default rounded"></div>
9
11
  <% end %>
10
12
  </div>
11
13
  <div class="flex-1 pr-3 text-sm">
@@ -0,0 +1 @@
1
+ <%= payment_method.name %>
@@ -7,6 +7,8 @@
7
7
  <%= link_to spree_storefront_resource_url(line_item.product), data: { 'turbo-frame': '_top' } do %>
8
8
  <%= spree_image_tag(image, width: 128, height: 128, class: 'object-cover', loading: :lazy) %>
9
9
  <% end %>
10
+ <% else %>
11
+ <div class="w-32 h-32 bg-accent"></div>
10
12
  <% end %>
11
13
  </div>
12
14
  <div class="ml-3 w-full">
@@ -3,7 +3,7 @@
3
3
  <% if filter_values.any? %>
4
4
  <div class="st-accordion" data-controller='accordion' data-accordion-close-others-value="false">
5
5
  <%= link_to "#colors_filter", class: "cursor-pointer uppercase flex items-center justify-between h-10 px-4 lg:px-10 text-sm tracking-widest focus:outline-none transition duration-150 ease-in-out #{'st-accordion__icon--opened' if params.dig(:filter, :options, :color).present?}", data: { action: 'accordion#toggle:prevent' } do %>
6
- <%= Spree.t(:colors) %>
6
+ <%= filter.presentation %>
7
7
  <%= render 'spree/shared/icons/chevron_down' %>
8
8
  <% end %>
9
9
  <div class='st-accordion__content' data-accordion-id='colors_filter'>
@@ -26,7 +26,7 @@
26
26
 
27
27
  <% if order.special_instructions.present? %>
28
28
  <div class="p-4 lg:p-6 text-sm border">
29
- <div class="uppercase tracking-widest mb-1">
29
+ <div class="uppercase tracking-widest mb-2">
30
30
  <%= I18n.t('activerecord.attributes.spree/order.special_instructions') %>
31
31
  </div>
32
32
  <div class="!leading-[1.375rem] text-neutral-800">
@@ -39,7 +39,7 @@
39
39
  <div class="grid grid-cols-1 lg:grid-cols-2 gap-4 lg:gap-6 p-4 lg:p-6 text-sm bg-border bg-accent-100">
40
40
  <!-- billing address -->
41
41
  <div>
42
- <div class="uppercase tracking-widest">
42
+ <div class="uppercase tracking-widest mb-2">
43
43
  <%= Spree.t(:billing_address) %>
44
44
  </div>
45
45
  <div class="!leading-[1.375rem] text-neutral-800">
@@ -48,7 +48,7 @@
48
48
  </div>
49
49
  <!-- payment into -->
50
50
  <div class="mb-5 lg:mb-0">
51
- <div class="uppercase tracking-widest">
51
+ <div class="uppercase tracking-widest mb-2">
52
52
  <%= Spree.t(:payment_information) %>
53
53
  </div>
54
54
  <div class="!leading-[1.375rem] text-neutral-800">
@@ -8,6 +8,8 @@
8
8
  <%= link_to spree_storefront_resource_url(line_item.product, relative: true) do %>
9
9
  <%= spree_image_tag(image, width: 128, height: 128, loading: :lazy) %>
10
10
  <% end %>
11
+ <% else %>
12
+ <div class="w-32 h-32 bg-accent"></div>
11
13
  <% end %>
12
14
  </div>
13
15
  <div class="flex flex-col gap-2">
@@ -3,7 +3,7 @@
3
3
  <div class="flex flex-col lg:flex-row lg:gap-6 gap-4">
4
4
  <% if shipment.order.requires_ship_address? %>
5
5
  <div class="text-sm lg:w-1/2">
6
- <div class="tracking-widest uppercase mb-1">
6
+ <div class="tracking-widest uppercase mb-2">
7
7
  <%= Spree.t(:delivery_address) %>
8
8
  </div>
9
9
  <div class="!leading-[1.375rem] text-neutral-800">
@@ -14,7 +14,7 @@
14
14
  <% end %>
15
15
  <div class="text-sm lg:w-1/2 lg:flex justify-between">
16
16
  <div>
17
- <div class="tracking-widest uppercase mb-1">
17
+ <div class="tracking-widest uppercase mb-2">
18
18
  <%= Spree.t(:shipping_method) %>
19
19
  </div>
20
20
  <div class="!leading-[1.375rem] text-neutral-800">
@@ -1,9 +1,3 @@
1
- <svg
2
- xmlns='http://www.w3.org/2000/svg'
3
- width='16'
4
- height='16'
5
- viewBox='0 0 16 16'
6
- fill='currentColor'
7
- >
8
- <path d="M18.942 5.556a16.299 16.299 0 0 0-4.126-1.297c-.178.321-.385.754-.529 1.097a15.175 15.175 0 0 0-4.573 0 11.583 11.583 0 0 0-.535-1.097 16.274 16.274 0 0 0-4.129 1.3c-2.611 3.946-3.319 7.794-2.965 11.587a16.494 16.494 0 0 0 5.061 2.593 12.65 12.65 0 0 0 1.084-1.785 10.689 10.689 0 0 1-1.707-.831c.143-.106.283-.217.418-.331 3.291 1.539 6.866 1.539 10.118 0 .137.114.277.225.418.331-.541.326-1.114.606-1.71.832a12.52 12.52 0 0 0 1.084 1.785 16.46 16.46 0 0 0 5.064-2.595c.415-4.396-.709-8.209-2.973-11.589zM8.678 14.813c-.988 0-1.798-.922-1.798-2.045s.793-2.047 1.798-2.047 1.815.922 1.798 2.047c.001 1.123-.793 2.045-1.798 2.045zm6.644 0c-.988 0-1.798-.922-1.798-2.045s.793-2.047 1.798-2.047 1.815.922 1.798 2.047c0 1.123-.793 2.045-1.798 2.045z"/>
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-discord" viewBox="0 0 16 16">
2
+ <path d="M13.545 2.907a13.2 13.2 0 0 0-3.257-1.011.05.05 0 0 0-.052.025c-.141.25-.297.577-.406.833a12.2 12.2 0 0 0-3.658 0 8 8 0 0 0-.412-.833.05.05 0 0 0-.052-.025c-1.125.194-2.22.534-3.257 1.011a.04.04 0 0 0-.021.018C.356 6.024-.213 9.047.066 12.032q.003.022.021.037a13.3 13.3 0 0 0 3.995 2.02.05.05 0 0 0 .056-.019q.463-.63.818-1.329a.05.05 0 0 0-.01-.059l-.018-.011a9 9 0 0 1-1.248-.595.05.05 0 0 1-.02-.066l.015-.019q.127-.095.248-.195a.05.05 0 0 1 .051-.007c2.619 1.196 5.454 1.196 8.041 0a.05.05 0 0 1 .053.007q.121.1.248.195a.05.05 0 0 1-.004.085 8 8 0 0 1-1.249.594.05.05 0 0 0-.03.03.05.05 0 0 0 .003.041c.24.465.515.909.817 1.329a.05.05 0 0 0 .056.019 13.2 13.2 0 0 0 4.001-2.02.05.05 0 0 0 .021-.037c.334-3.451-.559-6.449-2.366-9.106a.03.03 0 0 0-.02-.019m-8.198 7.307c-.789 0-1.438-.724-1.438-1.612s.637-1.613 1.438-1.613c.807 0 1.45.73 1.438 1.613 0 .888-.637 1.612-1.438 1.612m5.316 0c-.788 0-1.438-.724-1.438-1.612s.637-1.613 1.438-1.613c.807 0 1.451.73 1.438 1.613 0 .888-.631 1.612-1.438 1.612"/>
9
3
  </svg>
@@ -525,6 +525,7 @@ a:hover {
525
525
  .badge-ready,
526
526
  .badge-partial,
527
527
  .badge-active,
528
+ .badge-balance_due,
528
529
  .badge-inactive {
529
530
  margin-right: 0.25rem;
530
531
  display: inline-block;
@@ -548,6 +549,7 @@ a:hover {
548
549
  .badge-void:last-child,
549
550
  .badge-pending:last-child,
550
551
  .badge-ready:last-child,
552
+ .badge-balance_due:last-child,
551
553
  .badge-partial:last-child {
552
554
  margin-right: 0px;
553
555
  }
@@ -560,6 +562,7 @@ a:hover {
560
562
 
561
563
  .badge-warning,
562
564
  .badge-canceled,
565
+ .badge-balance_due,
563
566
  .badge-failed {
564
567
  background-color: #f8e7e5;
565
568
  }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spree_storefront
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.1.0
4
+ version: 5.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vendo Connect Inc.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-07-03 00:00:00.000000000 Z
11
+ date: 2025-07-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: spree_core
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 5.1.0
19
+ version: 5.1.2
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: 5.1.0
26
+ version: 5.1.2
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: active_link_to
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -560,9 +560,9 @@ licenses:
560
560
  - AGPL-3.0-or-later
561
561
  metadata:
562
562
  bug_tracker_uri: https://github.com/spree/spree/issues
563
- changelog_uri: https://github.com/spree/spree/releases/tag/v5.1.0
563
+ changelog_uri: https://github.com/spree/spree/releases/tag/v5.1.2
564
564
  documentation_uri: https://docs.spreecommerce.org/
565
- source_code_uri: https://github.com/spree/spree/tree/v5.1.0
565
+ source_code_uri: https://github.com/spree/spree/tree/v5.1.2
566
566
  post_install_message:
567
567
  rdoc_options: []
568
568
  require_paths: