spree_frontend 4.1.0.rc2 → 4.1.0.rc3
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/assets/javascripts/spree/frontend/cart.js +12 -0
 - data/app/assets/javascripts/spree/frontend/checkout/address.js +2 -3
 - data/app/assets/javascripts/spree/frontend/checkout/shipment.js +16 -4
 - data/app/assets/javascripts/spree/frontend/views/spree/layouts/spree_application.js +30 -0
 - data/app/assets/javascripts/spree/frontend/views/spree/products/modal_carousel.js +31 -12
 - data/app/assets/javascripts/spree/frontend/views/spree/shared/carousel/thumbnails.js +77 -37
 - data/app/assets/javascripts/spree/frontend/views/spree/shared/nav_bar.js +16 -7
 - data/app/assets/javascripts/spree/frontend/views/spree/shared/product_added_modal.js +1 -1
 - data/app/assets/stylesheets/spree/frontend/application.scss +1 -0
 - data/app/assets/stylesheets/spree/frontend/components-bootstrap/modal.scss +4 -0
 - data/app/assets/stylesheets/spree/frontend/components-custom/inputs.scss +14 -13
 - data/app/assets/stylesheets/spree/frontend/views/spree/checkout/confirm.scss +5 -0
 - data/app/assets/stylesheets/spree/frontend/views/spree/checkout/edit.scss +7 -0
 - data/app/assets/stylesheets/spree/frontend/views/spree/checkout/registration.scss +0 -1
 - data/app/assets/stylesheets/spree/frontend/views/spree/orders/edit.scss +9 -0
 - data/app/assets/stylesheets/spree/frontend/views/spree/products/cart_form.scss +17 -15
 - data/app/assets/stylesheets/spree/frontend/views/spree/products/show.scss +7 -0
 - data/app/assets/stylesheets/spree/frontend/views/spree/shared/carousel/thumbnails.scss +3 -12
 - data/app/assets/stylesheets/spree/frontend/views/spree/shared/delete_address_popup.scss +3 -26
 - data/app/assets/stylesheets/spree/frontend/views/spree/shared/dropdown.scss +3 -0
 - data/app/assets/stylesheets/spree/frontend/views/spree/shared/main_nav_bar.scss +2 -1
 - data/app/assets/stylesheets/spree/frontend/views/spree/shared/quantity_select.scss +3 -1
 - data/app/controllers/spree/products_controller.rb +13 -0
 - data/app/controllers/spree/taxons_controller.rb +32 -7
 - data/app/helpers/spree/addresses_helper.rb +3 -1
 - data/app/helpers/spree/frontend_helper.rb +15 -6
 - data/app/views/spree/checkout/_delivery.html.erb +2 -1
 - data/app/views/spree/checkout/_summary.html.erb +29 -2
 - data/app/views/spree/checkout/edit.html.erb +7 -5
 - data/app/views/spree/checkout/registration.html.erb +1 -1
 - data/app/views/spree/products/_cart_form.html.erb +2 -2
 - data/app/views/spree/products/_filters_desktop.html.erb +3 -3
 - data/app/views/spree/products/_filters_mobile.html.erb +7 -7
 - data/app/views/spree/products/_gallery_modal.html.erb +2 -2
 - data/app/views/spree/products/_sort_desktop.html.erb +2 -2
 - data/app/views/spree/products/_sort_mobile.html.erb +2 -2
 - data/app/views/spree/shared/_cart.html.erb +0 -2
 - data/app/views/spree/shared/_checkout_header.html.erb +1 -1
 - data/app/views/spree/shared/_copyright.html.erb +1 -1
 - data/app/views/spree/shared/_header.html.erb +1 -1
 - data/app/views/spree/shared/_link_to_cart.html.erb +5 -2
 - data/app/views/spree/shared/_main_nav_bar.html.erb +3 -3
 - data/app/views/spree/shared/_nav_bar.html.erb +1 -1
 - data/app/views/spree/shared/_option_values.html.erb +1 -1
 - data/app/views/spree/shared/_registration.html.erb +1 -1
 - data/app/views/spree/shared/carousel/_thumbnails.html.erb +1 -1
 - data/app/views/spree/taxons/_subcategories.html.erb +2 -3
 - metadata +7 -6
 
| 
         @@ -51,4 +51,5 @@ 
     | 
|
| 
       51 
51 
     | 
    
         
             
            @import "spree/frontend/views/spree/shared/mobile_navigation";
         
     | 
| 
       52 
52 
     | 
    
         
             
            @import "spree/frontend/views/spree/shared/no_product_available";
         
     | 
| 
       53 
53 
     | 
    
         
             
            @import "spree/frontend/views/spree/shared/color_select";
         
     | 
| 
      
 54 
     | 
    
         
            +
            @import "spree/frontend/views/spree/shared/dropdown";
         
     | 
| 
       54 
55 
     | 
    
         
             
            @import "spree/frontend/views/spree/shared/delete_address_popup";
         
     | 
| 
         @@ -1,5 +1,5 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            .spree-flat-input {
         
     | 
| 
       2 
     | 
    
         
            -
              color: theme-color( 
     | 
| 
      
 2 
     | 
    
         
            +
              color: theme-color("secondary");
         
     | 
| 
       3 
3 
     | 
    
         
             
              transition: basic-transition(border-color);
         
     | 
| 
       4 
4 
     | 
    
         
             
              padding: 15px;
         
     | 
| 
       5 
5 
     | 
    
         
             
              width: 100%;
         
     | 
| 
         @@ -11,6 +11,9 @@ 
     | 
|
| 
       11 
11 
     | 
    
         
             
              outline: none;
         
     | 
| 
       12 
12 
     | 
    
         
             
              font-size: font-px-to-rem(12px);
         
     | 
| 
       13 
13 
     | 
    
         
             
              line-height: inherit;
         
     | 
| 
      
 14 
     | 
    
         
            +
              appearance: none;
         
     | 
| 
      
 15 
     | 
    
         
            +
              -webkit-appearance: none;
         
     | 
| 
      
 16 
     | 
    
         
            +
              -moz-appearance: none;
         
     | 
| 
       14 
17 
     | 
    
         
             
              @include media-breakpoint-up(sm) {
         
     | 
| 
       15 
18 
     | 
    
         
             
                padding: 25px;
         
     | 
| 
       16 
19 
     | 
    
         
             
                font-size: font-px-to-rem(23px);
         
     | 
| 
         @@ -20,7 +23,7 @@ 
     | 
|
| 
       20 
23 
     | 
    
         
             
                font-size: font-px-to-rem(14px);
         
     | 
| 
       21 
24 
     | 
    
         
             
              }
         
     | 
| 
       22 
25 
     | 
    
         
             
              &:focus {
         
     | 
| 
       23 
     | 
    
         
            -
                border-color: theme-color( 
     | 
| 
      
 26 
     | 
    
         
            +
                border-color: theme-color("secondary");
         
     | 
| 
       24 
27 
     | 
    
         
             
              }
         
     | 
| 
       25 
28 
     | 
    
         
             
              &::placeholder {
         
     | 
| 
       26 
29 
     | 
    
         
             
                text-transform: uppercase;
         
     | 
| 
         @@ -45,12 +48,8 @@ 
     | 
|
| 
       45 
48 
     | 
    
         
             
              }
         
     | 
| 
       46 
49 
     | 
    
         
             
            }
         
     | 
| 
       47 
50 
     | 
    
         | 
| 
       48 
     | 
    
         
            -
            label {
         
     | 
| 
       49 
     | 
    
         
            -
              color: theme-color('secondary');
         
     | 
| 
       50 
     | 
    
         
            -
            }
         
     | 
| 
       51 
     | 
    
         
            -
             
     | 
| 
       52 
51 
     | 
    
         
             
            .spree-flat-label {
         
     | 
| 
       53 
     | 
    
         
            -
              color: theme-color( 
     | 
| 
      
 52 
     | 
    
         
            +
              color: theme-color("secondary");
         
     | 
| 
       54 
53 
     | 
    
         
             
              text-transform: uppercase;
         
     | 
| 
       55 
54 
     | 
    
         
             
              font-size: font-px-to-rem(12px);
         
     | 
| 
       56 
55 
     | 
    
         | 
| 
         @@ -83,7 +82,7 @@ label { 
     | 
|
| 
       83 
82 
     | 
    
         
             
                height: 22px;
         
     | 
| 
       84 
83 
     | 
    
         
             
              }
         
     | 
| 
       85 
84 
     | 
    
         | 
| 
       86 
     | 
    
         
            -
              input[type= 
     | 
| 
      
 85 
     | 
    
         
            +
              input[type="checkbox"] {
         
     | 
| 
       87 
86 
     | 
    
         
             
                display: none;
         
     | 
| 
       88 
87 
     | 
    
         
             
              }
         
     | 
| 
       89 
88 
     | 
    
         | 
| 
         @@ -94,8 +93,9 @@ label { 
     | 
|
| 
       94 
93 
     | 
    
         
             
                height: 22px;
         
     | 
| 
       95 
94 
     | 
    
         
             
                font-size: 0;
         
     | 
| 
       96 
95 
     | 
    
         
             
                border-radius: 0;
         
     | 
| 
       97 
     | 
    
         
            -
                border: 2px solid theme-color( 
     | 
| 
      
 96 
     | 
    
         
            +
                border: 2px solid theme-color("secondary");
         
     | 
| 
       98 
97 
     | 
    
         
             
                background-color: $input-background;
         
     | 
| 
      
 98 
     | 
    
         
            +
                cursor: pointer;
         
     | 
| 
       99 
99 
     | 
    
         | 
| 
       100 
100 
     | 
    
         
             
                @include media-breakpoint-up(sm) {
         
     | 
| 
       101 
101 
     | 
    
         
             
                  width: 32px;
         
     | 
| 
         @@ -111,7 +111,7 @@ label { 
     | 
|
| 
       111 
111 
     | 
    
         
             
              label:after {
         
     | 
| 
       112 
112 
     | 
    
         
             
                transition: basic-transition(opacity);
         
     | 
| 
       113 
113 
     | 
    
         
             
                opacity: 0;
         
     | 
| 
       114 
     | 
    
         
            -
                content:  
     | 
| 
      
 114 
     | 
    
         
            +
                content: "";
         
     | 
| 
       115 
115 
     | 
    
         
             
                position: absolute;
         
     | 
| 
       116 
116 
     | 
    
         
             
                width: 12px;
         
     | 
| 
       117 
117 
     | 
    
         
             
                height: 8px;
         
     | 
| 
         @@ -138,8 +138,8 @@ label { 
     | 
|
| 
       138 
138 
     | 
    
         
             
                }
         
     | 
| 
       139 
139 
     | 
    
         
             
              }
         
     | 
| 
       140 
140 
     | 
    
         | 
| 
       141 
     | 
    
         
            -
              input[type= 
     | 
| 
       142 
     | 
    
         
            -
                background-color: theme-color( 
     | 
| 
      
 141 
     | 
    
         
            +
              input[type="checkbox"]:checked + label {
         
     | 
| 
      
 142 
     | 
    
         
            +
                background-color: theme-color("secondary");
         
     | 
| 
       143 
143 
     | 
    
         | 
| 
       144 
144 
     | 
    
         
             
                &:after {
         
     | 
| 
       145 
145 
     | 
    
         
             
                  opacity: 1;
         
     | 
| 
         @@ -165,7 +165,7 @@ label { 
     | 
|
| 
       165 
165 
     | 
    
         
             
            }
         
     | 
| 
       166 
166 
     | 
    
         | 
| 
       167 
167 
     | 
    
         
             
            .spree-checkbox-label {
         
     | 
| 
       168 
     | 
    
         
            -
              color: theme-color( 
     | 
| 
      
 168 
     | 
    
         
            +
              color: theme-color("info");
         
     | 
| 
       169 
169 
     | 
    
         
             
              font-size: font-px-to-rem(12px);
         
     | 
| 
       170 
170 
     | 
    
         
             
              margin: 0;
         
     | 
| 
       171 
171 
     | 
    
         
             
              // Autoprefixer don't seem to catch this
         
     | 
| 
         @@ -174,6 +174,7 @@ label { 
     | 
|
| 
       174 
174 
     | 
    
         
             
              -moz-user-select: none;
         
     | 
| 
       175 
175 
     | 
    
         
             
              -ms-user-select: none;
         
     | 
| 
       176 
176 
     | 
    
         
             
              user-select: none;
         
     | 
| 
      
 177 
     | 
    
         
            +
              cursor: pointer;
         
     | 
| 
       177 
178 
     | 
    
         | 
| 
       178 
179 
     | 
    
         
             
              @include media-breakpoint-up(sm) {
         
     | 
| 
       179 
180 
     | 
    
         
             
                font-size: font-px-to-rem(21px);
         
     | 
| 
         @@ -215,13 +215,17 @@ 
     | 
|
| 
       215 
215 
     | 
    
         
             
                    margin: 0;
         
     | 
| 
       216 
216 
     | 
    
         
             
                  }
         
     | 
| 
       217 
217 
     | 
    
         
             
                  input[type="number"] {
         
     | 
| 
      
 218 
     | 
    
         
            +
                    -webkit-appearance: none;
         
     | 
| 
       218 
219 
     | 
    
         
             
                    -moz-appearance: textfield;
         
     | 
| 
      
 220 
     | 
    
         
            +
                    appearance: none;
         
     | 
| 
       219 
221 
     | 
    
         
             
                  }
         
     | 
| 
       220 
222 
     | 
    
         
             
                  button {
         
     | 
| 
       221 
223 
     | 
    
         
             
                    font-size: font-px-to-rem(14px);
         
     | 
| 
       222 
224 
     | 
    
         
             
                    height: 25px;
         
     | 
| 
       223 
225 
     | 
    
         
             
                    background-color: $input-background;
         
     | 
| 
       224 
226 
     | 
    
         
             
                    border-color: theme-color("borders");
         
     | 
| 
      
 227 
     | 
    
         
            +
                    border-width: 1px !important;
         
     | 
| 
      
 228 
     | 
    
         
            +
                    border-style: solid;
         
     | 
| 
       225 
229 
     | 
    
         
             
                    color: color-yiq($input-background);
         
     | 
| 
       226 
230 
     | 
    
         
             
                    @include media-breakpoint-up(sm) {
         
     | 
| 
       227 
231 
     | 
    
         
             
                      height: 51.4px;
         
     | 
| 
         @@ -354,6 +358,11 @@ 
     | 
|
| 
       354 
358 
     | 
    
         
             
                    }
         
     | 
| 
       355 
359 
     | 
    
         
             
                  }
         
     | 
| 
       356 
360 
     | 
    
         
             
                }
         
     | 
| 
      
 361 
     | 
    
         
            +
                input[type=text] {
         
     | 
| 
      
 362 
     | 
    
         
            +
                  -webkit-appearance: none;
         
     | 
| 
      
 363 
     | 
    
         
            +
                  -moz-appearance: none;
         
     | 
| 
      
 364 
     | 
    
         
            +
                  appearance: none;
         
     | 
| 
      
 365 
     | 
    
         
            +
                }
         
     | 
| 
       357 
366 
     | 
    
         
             
              }
         
     | 
| 
       358 
367 
     | 
    
         
             
              &-total {
         
     | 
| 
       359 
368 
     | 
    
         
             
                margin-top: 28px;
         
     | 
| 
         @@ -27,6 +27,7 @@ 
     | 
|
| 
       27 
27 
     | 
    
         
             
              .quantity-select button {
         
     | 
| 
       28 
28 
     | 
    
         
             
                background: $input-background;
         
     | 
| 
       29 
29 
     | 
    
         
             
                color: color-yiq($input-background);
         
     | 
| 
      
 30 
     | 
    
         
            +
                touch-action: manipulation;
         
     | 
| 
       30 
31 
     | 
    
         
             
              }
         
     | 
| 
       31 
32 
     | 
    
         
             
              @include media-breakpoint-up(md) {
         
     | 
| 
       32 
33 
     | 
    
         
             
                &-price {
         
     | 
| 
         @@ -62,8 +63,8 @@ 
     | 
|
| 
       62 
63 
     | 
    
         
             
                  list-style: none;
         
     | 
| 
       63 
64 
     | 
    
         
             
                  padding: 0;
         
     | 
| 
       64 
65 
     | 
    
         
             
                  margin: 0;
         
     | 
| 
       65 
     | 
    
         
            -
                  margin-left: - 
     | 
| 
       66 
     | 
    
         
            -
                  margin-right: - 
     | 
| 
      
 66 
     | 
    
         
            +
                  margin-left: -calc-spacer(1);
         
     | 
| 
      
 67 
     | 
    
         
            +
                  margin-right: -calc-spacer(1);
         
     | 
| 
       67 
68 
     | 
    
         
             
                  &-label {
         
     | 
| 
       68 
69 
     | 
    
         
             
                    font-size: font-px-to-rem(11px);
         
     | 
| 
       69 
70 
     | 
    
         
             
                    border: 2px solid theme-color-level("light", 1);
         
     | 
| 
         @@ -80,12 +81,12 @@ 
     | 
|
| 
       80 
81 
     | 
    
         
             
                    opacity: 0;
         
     | 
| 
       81 
82 
     | 
    
         
             
                    position: fixed;
         
     | 
| 
       82 
83 
     | 
    
         
             
                    &:checked {
         
     | 
| 
       83 
     | 
    
         
            -
                       
     | 
| 
      
 84 
     | 
    
         
            +
                      & + #{$self}-variant-values-label {
         
     | 
| 
       84 
85 
     | 
    
         
             
                        border-color: theme-color("dark-text");
         
     | 
| 
       85 
86 
     | 
    
         
             
                      }
         
     | 
| 
       86 
87 
     | 
    
         
             
                    }
         
     | 
| 
       87 
88 
     | 
    
         
             
                    &--bad-combination {
         
     | 
| 
       88 
     | 
    
         
            -
                       
     | 
| 
      
 89 
     | 
    
         
            +
                      & + #{$self2}-label {
         
     | 
| 
       89 
90 
     | 
    
         
             
                        position: relative;
         
     | 
| 
       90 
91 
     | 
    
         
             
                        color: theme-color-level("light", 1);
         
     | 
| 
       91 
92 
     | 
    
         
             
                        &:hover {
         
     | 
| 
         @@ -96,7 +97,7 @@ 
     | 
|
| 
       96 
97 
     | 
    
         
             
                          display: block;
         
     | 
| 
       97 
98 
     | 
    
         
             
                          width: 2px;
         
     | 
| 
       98 
99 
     | 
    
         
             
                          height: 100% * sqrt(2);
         
     | 
| 
       99 
     | 
    
         
            -
                          content:  
     | 
| 
      
 100 
     | 
    
         
            +
                          content: "";
         
     | 
| 
       100 
101 
     | 
    
         
             
                          background: theme-color-level("light", 1);
         
     | 
| 
       101 
102 
     | 
    
         
             
                          transition: background 200ms;
         
     | 
| 
       102 
103 
     | 
    
         
             
                          transform: rotate(-45deg);
         
     | 
| 
         @@ -112,7 +113,8 @@ 
     | 
|
| 
       112 
113 
     | 
    
         
             
                      cursor: not-allowed;
         
     | 
| 
       113 
114 
     | 
    
         
             
                      opacity: 0.5;
         
     | 
| 
       114 
115 
     | 
    
         | 
| 
       115 
     | 
    
         
            -
                      &:active, 
     | 
| 
      
 116 
     | 
    
         
            +
                      &:active,
         
     | 
| 
      
 117 
     | 
    
         
            +
                      &:focus {
         
     | 
| 
       116 
118 
     | 
    
         
             
                        outline: theme-color("dark-text") dotted thin;
         
     | 
| 
       117 
119 
     | 
    
         
             
                      }
         
     | 
| 
       118 
120 
     | 
    
         
             
                    }
         
     | 
| 
         @@ -133,7 +135,7 @@ 
     | 
|
| 
       133 
135 
     | 
    
         
             
                        line-height: $size - $size-border * 2;
         
     | 
| 
       134 
136 
     | 
    
         
             
                        &:before {
         
     | 
| 
       135 
137 
     | 
    
         
             
                          $inner-circle-size: $size - ($size-border - 1px) * 2; // Cover outer border by 1px to avoid color bleed.
         
     | 
| 
       136 
     | 
    
         
            -
                          content:  
     | 
| 
      
 138 
     | 
    
         
            +
                          content: "";
         
     | 
| 
       137 
139 
     | 
    
         
             
                          margin: -1px;
         
     | 
| 
       138 
140 
     | 
    
         
             
                          display: block;
         
     | 
| 
       139 
141 
     | 
    
         
             
                          border: 2px solid theme-color("light");
         
     | 
| 
         @@ -145,7 +147,7 @@ 
     | 
|
| 
       145 
147 
     | 
    
         
             
                      }
         
     | 
| 
       146 
148 
     | 
    
         
             
                      &-radio {
         
     | 
| 
       147 
149 
     | 
    
         
             
                        &--bad-combination {
         
     | 
| 
       148 
     | 
    
         
            -
                           
     | 
| 
      
 150 
     | 
    
         
            +
                          & + #{$self}-variant-values-label {
         
     | 
| 
       149 
151 
     | 
    
         
             
                            &:after {
         
     | 
| 
       150 
152 
     | 
    
         
             
                              height: 100%;
         
     | 
| 
       151 
153 
     | 
    
         
             
                              top: 0;
         
     | 
| 
         @@ -154,7 +156,7 @@ 
     | 
|
| 
       154 
156 
     | 
    
         
             
                        }
         
     | 
| 
       155 
157 
     | 
    
         
             
                        &:checked {
         
     | 
| 
       156 
158 
     | 
    
         
             
                          &--bad-combination {
         
     | 
| 
       157 
     | 
    
         
            -
                             
     | 
| 
      
 159 
     | 
    
         
            +
                            & + #{$self}-variant-values-label {
         
     | 
| 
       158 
160 
     | 
    
         
             
                              &:after {
         
     | 
| 
       159 
161 
     | 
    
         
             
                                background: theme-color("dark-text");
         
     | 
| 
       160 
162 
     | 
    
         
             
                              }
         
     | 
| 
         @@ -177,7 +179,7 @@ 
     | 
|
| 
       177 
179 
     | 
    
         
             
                      }
         
     | 
| 
       178 
180 
     | 
    
         
             
                      &-radio {
         
     | 
| 
       179 
181 
     | 
    
         
             
                        &--bad-combination {
         
     | 
| 
       180 
     | 
    
         
            -
                           
     | 
| 
      
 182 
     | 
    
         
            +
                          & + #{$self}-variant-values-label {
         
     | 
| 
       181 
183 
     | 
    
         
             
                            &:hover {
         
     | 
| 
       182 
184 
     | 
    
         
             
                              &:after {
         
     | 
| 
       183 
185 
     | 
    
         
             
                                background: theme-color-level("light", 1);
         
     | 
| 
         @@ -190,7 +192,7 @@ 
     | 
|
| 
       190 
192 
     | 
    
         
             
                  }
         
     | 
| 
       191 
193 
     | 
    
         
             
                }
         
     | 
| 
       192 
194 
     | 
    
         
             
              }
         
     | 
| 
       193 
     | 
    
         
            -
               
     | 
| 
      
 195 
     | 
    
         
            +
              & > li + li {
         
     | 
| 
       194 
196 
     | 
    
         
             
                margin-top: calc-spacer(4);
         
     | 
| 
       195 
197 
     | 
    
         
             
              }
         
     | 
| 
       196 
198 
     | 
    
         
             
              @include media-breakpoint-up(md) {
         
     | 
| 
         @@ -210,21 +212,21 @@ 
     | 
|
| 
       210 
212 
     | 
    
         
             
            .select-label {
         
     | 
| 
       211 
213 
     | 
    
         
             
              cursor: pointer;
         
     | 
| 
       212 
214 
     | 
    
         
             
              padding: 4px 7px;
         
     | 
| 
       213 
     | 
    
         
            -
              border: 2px solid theme-color( 
     | 
| 
      
 215 
     | 
    
         
            +
              border: 2px solid theme-color("borders");
         
     | 
| 
       214 
216 
     | 
    
         
             
              min-width: 32px;
         
     | 
| 
       215 
217 
     | 
    
         
             
              max-height: 32px;
         
     | 
| 
       216 
218 
     | 
    
         
             
              text-align: center;
         
     | 
| 
       217 
219 
     | 
    
         
             
              font-size: font-px-to-rem(14px);
         
     | 
| 
       218 
220 
     | 
    
         
             
              font-weight: 500;
         
     | 
| 
       219 
221 
     | 
    
         
             
              @include media-breakpoint-up(sm) {
         
     | 
| 
       220 
     | 
    
         
            -
                border: 3px solid theme-color( 
     | 
| 
      
 222 
     | 
    
         
            +
                border: 3px solid theme-color("borders");
         
     | 
| 
       221 
223 
     | 
    
         
             
                padding: 7px 7px;
         
     | 
| 
       222 
224 
     | 
    
         
             
                min-width: 49px;
         
     | 
| 
       223 
225 
     | 
    
         
             
                max-height: 49px;
         
     | 
| 
       224 
226 
     | 
    
         
             
                font-size: font-px-to-rem(20px);
         
     | 
| 
       225 
227 
     | 
    
         
             
              }
         
     | 
| 
       226 
228 
     | 
    
         
             
              @include media-breakpoint-up(md) {
         
     | 
| 
       227 
     | 
    
         
            -
                border: 2px solid theme-color( 
     | 
| 
      
 229 
     | 
    
         
            +
                border: 2px solid theme-color("borders");
         
     | 
| 
       228 
230 
     | 
    
         
             
                padding: 4px 7px;
         
     | 
| 
       229 
231 
     | 
    
         
             
                min-width: 32px;
         
     | 
| 
       230 
232 
     | 
    
         
             
                max-height: 32px;
         
     | 
| 
         @@ -232,7 +234,7 @@ 
     | 
|
| 
       232 
234 
     | 
    
         
             
              }
         
     | 
| 
       233 
235 
     | 
    
         | 
| 
       234 
236 
     | 
    
         
             
              input:checked + & {
         
     | 
| 
       235 
     | 
    
         
            -
                border-color: theme-color( 
     | 
| 
      
 237 
     | 
    
         
            +
                border-color: theme-color("secondary");
         
     | 
| 
       236 
238 
     | 
    
         
             
              }
         
     | 
| 
       237 
239 
     | 
    
         
             
            }
         
     | 
| 
       238 
240 
     | 
    
         | 
| 
         @@ -11,21 +11,12 @@ 
     | 
|
| 
       11 
11 
     | 
    
         
             
                  display: block;
         
     | 
| 
       12 
12 
     | 
    
         
             
                }
         
     | 
| 
       13 
13 
     | 
    
         
             
                &-single {
         
     | 
| 
       14 
     | 
    
         
            -
                  height: 0;
         
     | 
| 
       15 
     | 
    
         
            -
                  padding-bottom: $thumbnails-carousel-single-height;
         
     | 
| 
       16 
14 
     | 
    
         
             
                  position: relative;
         
     | 
| 
       17 
15 
     | 
    
         
             
                  display: none;
         
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
       19 
     | 
    
         
            -
                  .modal-dialog--zoom & {
         
     | 
| 
       20 
     | 
    
         
            -
                    padding-bottom: $thumbnails-carousel-single-height-zoom;
         
     | 
| 
       21 
     | 
    
         
            -
                  }
         
     | 
| 
      
 16 
     | 
    
         
            +
                  overflow: hidden;
         
     | 
| 
       22 
17 
     | 
    
         | 
| 
       23 
18 
     | 
    
         
             
                  img {
         
     | 
| 
       24 
     | 
    
         
            -
                     
     | 
| 
       25 
     | 
    
         
            -
                    width: 100%;
         
     | 
| 
       26 
     | 
    
         
            -
                    height: 100%;
         
     | 
| 
       27 
     | 
    
         
            -
                    object-fit: contain;
         
     | 
| 
       28 
     | 
    
         
            -
                    border: 1px solid transparent;
         
     | 
| 
      
 19 
     | 
    
         
            +
                    border: 2px solid transparent;
         
     | 
| 
       29 
20 
     | 
    
         
             
                    &.selected {
         
     | 
| 
       30 
21 
     | 
    
         
             
                      border-color: $secondary-color;
         
     | 
| 
       31 
22 
     | 
    
         
             
                    }
         
     | 
| 
         @@ -75,7 +66,7 @@ 
     | 
|
| 
       75 
66 
     | 
    
         
             
                  &-single {
         
     | 
| 
       76 
67 
     | 
    
         
             
                    &--visible {
         
     | 
| 
       77 
68 
     | 
    
         
             
                      & ~ & {
         
     | 
| 
       78 
     | 
    
         
            -
                        margin-top: $single-gap-md;
         
     | 
| 
      
 69 
     | 
    
         
            +
                        margin-top: $single-gap-md / 2;
         
     | 
| 
       79 
70 
     | 
    
         
             
                      }
         
     | 
| 
       80 
71 
     | 
    
         | 
| 
       81 
72 
     | 
    
         
             
                      .modal-dialog--zoom & ~ & {
         
     | 
| 
         @@ -36,29 +36,6 @@ 
     | 
|
| 
       36 
36 
     | 
    
         
             
                  width: 80%;
         
     | 
| 
       37 
37 
     | 
    
         
             
                }
         
     | 
| 
       38 
38 
     | 
    
         | 
| 
       39 
     | 
    
         
            -
                form {
         
     | 
| 
       40 
     | 
    
         
            -
                  input#keywords {
         
     | 
| 
       41 
     | 
    
         
            -
                    color: theme-color('dark-text');
         
     | 
| 
       42 
     | 
    
         
            -
                    font-size: font-px-to-rem(14px);
         
     | 
| 
       43 
     | 
    
         
            -
                    width: calc(100% - 40px);
         
     | 
| 
       44 
     | 
    
         
            -
                    &:focus {
         
     | 
| 
       45 
     | 
    
         
            -
                      outline: none;
         
     | 
| 
       46 
     | 
    
         
            -
                    }
         
     | 
| 
       47 
     | 
    
         
            -
                    &::placeholder {
         
     | 
| 
       48 
     | 
    
         
            -
                      color: theme-color('borders');
         
     | 
| 
       49 
     | 
    
         
            -
                    }
         
     | 
| 
       50 
     | 
    
         
            -
                    &::-webkit-search-cancel-button {
         
     | 
| 
       51 
     | 
    
         
            -
                      display: none;
         
     | 
| 
       52 
     | 
    
         
            -
                    }
         
     | 
| 
       53 
     | 
    
         
            -
                    @include media-breakpoint-up(lg) {
         
     | 
| 
       54 
     | 
    
         
            -
                      font-size: font-px-to-rem(22px);
         
     | 
| 
       55 
     | 
    
         
            -
                    }
         
     | 
| 
       56 
     | 
    
         
            -
                  }
         
     | 
| 
       57 
     | 
    
         
            -
                  input[type='submit'] {
         
     | 
| 
       58 
     | 
    
         
            -
                    display: none;
         
     | 
| 
       59 
     | 
    
         
            -
                  }
         
     | 
| 
       60 
     | 
    
         
            -
                }
         
     | 
| 
       61 
     | 
    
         
            -
             
     | 
| 
       62 
39 
     | 
    
         
             
                &.shown {
         
     | 
| 
       63 
40 
     | 
    
         
             
                  visibility: visible;
         
     | 
| 
       64 
41 
     | 
    
         
             
                  opacity: 1;
         
     | 
| 
         @@ -71,7 +48,7 @@ 
     | 
|
| 
       71 
48 
     | 
    
         
             
                line-height: 0.91;
         
     | 
| 
       72 
49 
     | 
    
         
             
                letter-spacing: 0.55px;
         
     | 
| 
       73 
50 
     | 
    
         
             
                text-align: center;
         
     | 
| 
       74 
     | 
    
         
            -
                color:  
     | 
| 
      
 51 
     | 
    
         
            +
                color: $font-color;
         
     | 
| 
       75 
52 
     | 
    
         
             
                margin-bottom: 23px;
         
     | 
| 
       76 
53 
     | 
    
         | 
| 
       77 
54 
     | 
    
         
             
                @include media-breakpoint-up(lg) {
         
     | 
| 
         @@ -88,7 +65,7 @@ 
     | 
|
| 
       88 
65 
     | 
    
         
             
                line-height: 1.38;
         
     | 
| 
       89 
66 
     | 
    
         
             
                letter-spacing: 0.4px;
         
     | 
| 
       90 
67 
     | 
    
         
             
                text-align: center;
         
     | 
| 
       91 
     | 
    
         
            -
                color:  
     | 
| 
      
 68 
     | 
    
         
            +
                color: $font-color;
         
     | 
| 
       92 
69 
     | 
    
         
             
                margin: auto;
         
     | 
| 
       93 
70 
     | 
    
         | 
| 
       94 
71 
     | 
    
         
             
                @include media-breakpoint-up(sm) {
         
     | 
| 
         @@ -101,7 +78,7 @@ 
     | 
|
| 
       101 
78 
     | 
    
         
             
              &-buttons {
         
     | 
| 
       102 
79 
     | 
    
         
             
                margin-top: 48px;
         
     | 
| 
       103 
80 
     | 
    
         
             
                justify-content: space-evenly;
         
     | 
| 
       104 
     | 
    
         
            -
                @supports (-ms-ime-align:auto) {
         
     | 
| 
      
 81 
     | 
    
         
            +
                @supports (-ms-ime-align: auto) {
         
     | 
| 
       105 
82 
     | 
    
         
             
                  justify-content: space-around;
         
     | 
| 
       106 
83 
     | 
    
         
             
                }
         
     | 
| 
       107 
84 
     | 
    
         
             
              }
         
     | 
| 
         @@ -67,6 +67,7 @@ 
     | 
|
| 
       67 
67 
     | 
    
         
             
                  display: none;
         
     | 
| 
       68 
68 
     | 
    
         
             
                  background: $meganav-background;
         
     | 
| 
       69 
69 
     | 
    
         
             
                  background-clip: padding-box;
         
     | 
| 
      
 70 
     | 
    
         
            +
                  border-top: 1px solid $global-border-style;
         
     | 
| 
       70 
71 
     | 
    
         | 
| 
       71 
72 
     | 
    
         
             
                  form {
         
     | 
| 
       72 
73 
     | 
    
         
             
                    input#keywords {
         
     | 
| 
         @@ -92,7 +93,7 @@ 
     | 
|
| 
       92 
93 
     | 
    
         
             
                  }
         
     | 
| 
       93 
94 
     | 
    
         | 
| 
       94 
95 
     | 
    
         
             
                  @include media-breakpoint-up(xl) {
         
     | 
| 
       95 
     | 
    
         
            -
                    top: $spree-header-desktop-height;
         
     | 
| 
      
 96 
     | 
    
         
            +
                    top: $spree-header-desktop-height - 1px;
         
     | 
| 
       96 
97 
     | 
    
         
             
                  }
         
     | 
| 
       97 
98 
     | 
    
         
             
                }
         
     | 
| 
       98 
99 
     | 
    
         
             
              }
         
     | 
| 
         @@ -1,6 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            module Spree
         
     | 
| 
       2 
2 
     | 
    
         
             
              class ProductsController < Spree::StoreController
         
     | 
| 
       3 
3 
     | 
    
         
             
                include Spree::ProductsHelper
         
     | 
| 
      
 4 
     | 
    
         
            +
                include Spree::FrontendHelper
         
     | 
| 
       4 
5 
     | 
    
         | 
| 
       5 
6 
     | 
    
         
             
                before_action :load_product, only: [:show, :related]
         
     | 
| 
       6 
7 
     | 
    
         
             
                before_action :load_taxon, only: :index
         
     | 
| 
         @@ -10,6 +11,17 @@ module Spree 
     | 
|
| 
       10 
11 
     | 
    
         
             
                def index
         
     | 
| 
       11 
12 
     | 
    
         
             
                  @searcher = build_searcher(params.merge(include_images: true))
         
     | 
| 
       12 
13 
     | 
    
         
             
                  @products = @searcher.retrieve_products
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
                  last_modified = @products.maximum(:updated_at)&.utc if @products.respond_to?(:maximum)
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
                  etag = [
         
     | 
| 
      
 18 
     | 
    
         
            +
                    store_etag,
         
     | 
| 
      
 19 
     | 
    
         
            +
                    last_modified&.to_i,
         
     | 
| 
      
 20 
     | 
    
         
            +
                    available_option_types_cache_key,
         
     | 
| 
      
 21 
     | 
    
         
            +
                    filtering_params_cache_key
         
     | 
| 
      
 22 
     | 
    
         
            +
                  ]
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
                  fresh_when etag: etag, last_modified: last_modified, public: true
         
     | 
| 
       13 
25 
     | 
    
         
             
                end
         
     | 
| 
       14 
26 
     | 
    
         | 
| 
       15 
27 
     | 
    
         
             
                def show
         
     | 
| 
         @@ -20,6 +32,7 @@ module Spree 
     | 
|
| 
       20 
32 
     | 
    
         
             
                  if stale?(etag: product_etag, last_modified: @product.updated_at.utc, public: true)
         
     | 
| 
       21 
33 
     | 
    
         
             
                    @product_summary = Spree::ProductSummaryPresenter.new(@product).call
         
     | 
| 
       22 
34 
     | 
    
         
             
                    @product_properties = @product.product_properties.includes(:property)
         
     | 
| 
      
 35 
     | 
    
         
            +
                    @product_price = @product.price_in(current_currency).amount
         
     | 
| 
       23 
36 
     | 
    
         
             
                    load_variants
         
     | 
| 
       24 
37 
     | 
    
         
             
                    @product_images = product_images(@product, @variants)
         
     | 
| 
       25 
38 
     | 
    
         
             
                  end
         
     |