solidus_starter_frontend 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.circleci/config.yml +57 -0
- data/.erb-lint.yml +22 -0
- data/.eslintrc +5 -0
- data/.gem_release.yml +5 -0
- data/.github/pull_request_template.md +28 -0
- data/.github/stale.yml +17 -0
- data/.gitignore +17 -0
- data/.hound.yml +16 -0
- data/.rspec +2 -0
- data/.rubocop.yml +19 -0
- data/.rubocop_todo.yml +229 -0
- data/.scss-lint.yml +4 -0
- data/Gemfile +34 -0
- data/LICENSE +26 -0
- data/README.md +69 -0
- data/Rakefile +6 -0
- data/app/assets/config/solidus_starter_frontend_manifest.js +2 -0
- data/app/assets/javascripts/spree/frontend.js +6 -0
- data/app/assets/javascripts/spree/frontend/cart.js +26 -0
- data/app/assets/javascripts/spree/frontend/checkout.js +34 -0
- data/app/assets/javascripts/spree/frontend/checkout/address.js +124 -0
- data/app/assets/javascripts/spree/frontend/checkout/payment.js +44 -0
- data/app/assets/javascripts/spree/frontend/locale_selector.js +9 -0
- data/app/assets/javascripts/spree/frontend/product.js +21 -0
- data/app/assets/javascripts/spree/frontend/solidus_starter_frontend.js +9 -0
- data/app/assets/javascripts/spree/frontend/utils.js.erb +18 -0
- data/app/assets/stylesheets/spree/frontend.css +8 -0
- data/app/assets/stylesheets/spree/frontend/base/_base.scss +29 -0
- data/app/assets/stylesheets/spree/frontend/base/_reset.scss +179 -0
- data/app/assets/stylesheets/spree/frontend/base/_responsive.scss +21 -0
- data/app/assets/stylesheets/spree/frontend/components/account/_account_order.scss +23 -0
- data/app/assets/stylesheets/spree/frontend/components/account/_account_summary.scss +17 -0
- data/app/assets/stylesheets/spree/frontend/components/auth/_auth_container.scss +11 -0
- data/app/assets/stylesheets/spree/frontend/components/auth/_auth_form.scss +5 -0
- data/app/assets/stylesheets/spree/frontend/components/brand/_logo.scss +4 -0
- data/app/assets/stylesheets/spree/frontend/components/buttons/_button_inline.scss +8 -0
- data/app/assets/stylesheets/spree/frontend/components/buttons/_button_primary.scss +26 -0
- data/app/assets/stylesheets/spree/frontend/components/cart/_cart_adjustments.scss +6 -0
- data/app/assets/stylesheets/spree/frontend/components/cart/_cart_amount_row.scss +11 -0
- data/app/assets/stylesheets/spree/frontend/components/cart/_cart_empty.scss +10 -0
- data/app/assets/stylesheets/spree/frontend/components/cart/_cart_footer.scss +20 -0
- data/app/assets/stylesheets/spree/frontend/components/cart/_cart_header.scss +12 -0
- data/app/assets/stylesheets/spree/frontend/components/cart/_cart_item.scss +86 -0
- data/app/assets/stylesheets/spree/frontend/components/cart/_cart_link.scss +22 -0
- data/app/assets/stylesheets/spree/frontend/components/cart/_cart_page.scss +15 -0
- data/app/assets/stylesheets/spree/frontend/components/cart/_cart_secondary_actions.scss +19 -0
- data/app/assets/stylesheets/spree/frontend/components/cart/_coupon_code.scss +8 -0
- data/app/assets/stylesheets/spree/frontend/components/cart/_item_info.scss +19 -0
- data/app/assets/stylesheets/spree/frontend/components/checkout/_checkout.scss +27 -0
- data/app/assets/stylesheets/spree/frontend/components/checkout/_checkout_header.scss +19 -0
- data/app/assets/stylesheets/spree/frontend/components/checkout/_checkout_summary.scss +31 -0
- data/app/assets/stylesheets/spree/frontend/components/checkout/_existing_cards.scss +27 -0
- data/app/assets/stylesheets/spree/frontend/components/checkout/_payment_method_controls.scss +5 -0
- data/app/assets/stylesheets/spree/frontend/components/checkout/_payment_method_selector.scss +14 -0
- data/app/assets/stylesheets/spree/frontend/components/checkout/_progress_steps.scss +38 -0
- data/app/assets/stylesheets/spree/frontend/components/checkout/_proposed_shipment.scss +18 -0
- data/app/assets/stylesheets/spree/frontend/components/checkout/_shipment_items.scss +50 -0
- data/app/assets/stylesheets/spree/frontend/components/checkout/_shipping_methods.scss +9 -0
- data/app/assets/stylesheets/spree/frontend/components/checkout/payments/_gateway_payment_method.scss +11 -0
- data/app/assets/stylesheets/spree/frontend/components/checkout/steps/_address_step.scss +20 -0
- data/app/assets/stylesheets/spree/frontend/components/checkout/steps/_confirm_step.scss +13 -0
- data/app/assets/stylesheets/spree/frontend/components/checkout/steps/_delivery_step.scss +13 -0
- data/app/assets/stylesheets/spree/frontend/components/checkout/steps/_payment_step.scss +13 -0
- data/app/assets/stylesheets/spree/frontend/components/forms/_address_inputs.scss +13 -0
- data/app/assets/stylesheets/spree/frontend/components/forms/inputs/_checkbox_input.scss +3 -0
- data/app/assets/stylesheets/spree/frontend/components/forms/inputs/_radio_input.scss +3 -0
- data/app/assets/stylesheets/spree/frontend/components/forms/inputs/_select_input.scss +27 -0
- data/app/assets/stylesheets/spree/frontend/components/forms/inputs/_text.scss +32 -0
- data/app/assets/stylesheets/spree/frontend/components/forms/inputs/_textarea_input.scss +25 -0
- data/app/assets/stylesheets/spree/frontend/components/general/_flash.scss +20 -0
- data/app/assets/stylesheets/spree/frontend/components/layout/_aside.scss +4 -0
- data/app/assets/stylesheets/spree/frontend/components/layout/_breadcrumbs.scss +16 -0
- data/app/assets/stylesheets/spree/frontend/components/layout/_category_navigation.scss +3 -0
- data/app/assets/stylesheets/spree/frontend/components/layout/_footer.scss +8 -0
- data/app/assets/stylesheets/spree/frontend/components/layout/_header.scss +12 -0
- data/app/assets/stylesheets/spree/frontend/components/layout/_horizontal_input_group.scss +7 -0
- data/app/assets/stylesheets/spree/frontend/components/layout/_top_bar.scss +44 -0
- data/app/assets/stylesheets/spree/frontend/components/navigation/_auth_link.scss +11 -0
- data/app/assets/stylesheets/spree/frontend/components/navigation/_categories.scss +29 -0
- data/app/assets/stylesheets/spree/frontend/components/navigation/_locale_selector.scss +21 -0
- data/app/assets/stylesheets/spree/frontend/components/navigation/_taxonomies.scss +7 -0
- data/app/assets/stylesheets/spree/frontend/components/navigation/_taxonomy.scss +28 -0
- data/app/assets/stylesheets/spree/frontend/components/orders/_address_overview.scss +27 -0
- data/app/assets/stylesheets/spree/frontend/components/orders/_coupon_codes.scss +4 -0
- data/app/assets/stylesheets/spree/frontend/components/orders/_line_items.scss +20 -0
- data/app/assets/stylesheets/spree/frontend/components/orders/_order_details.scss +18 -0
- data/app/assets/stylesheets/spree/frontend/components/orders/_order_item.scss +85 -0
- data/app/assets/stylesheets/spree/frontend/components/orders/_order_page.scss +41 -0
- data/app/assets/stylesheets/spree/frontend/components/orders/_order_shipments.scss +27 -0
- data/app/assets/stylesheets/spree/frontend/components/orders/_payment_info.scss +29 -0
- data/app/assets/stylesheets/spree/frontend/components/presentation/_hero.scss +18 -0
- data/app/assets/stylesheets/spree/frontend/components/products/_product_card.scss +35 -0
- data/app/assets/stylesheets/spree/frontend/components/products/_product_image.scss +7 -0
- data/app/assets/stylesheets/spree/frontend/components/products/_product_info.scss +14 -0
- data/app/assets/stylesheets/spree/frontend/components/products/_product_page.scss +31 -0
- data/app/assets/stylesheets/spree/frontend/components/products/_product_properties.scss +23 -0
- data/app/assets/stylesheets/spree/frontend/components/products/_product_submit.scss +9 -0
- data/app/assets/stylesheets/spree/frontend/components/products/_product_taxons.scss +27 -0
- data/app/assets/stylesheets/spree/frontend/components/products/_product_thumbnails.scss +7 -0
- data/app/assets/stylesheets/spree/frontend/components/products/_product_variants.scss +20 -0
- data/app/assets/stylesheets/spree/frontend/components/products/_products.scss +13 -0
- data/app/assets/stylesheets/spree/frontend/components/products/_products_by_taxon.scss +6 -0
- data/app/assets/stylesheets/spree/frontend/components/products/_products_grid.scss +18 -0
- data/app/assets/stylesheets/spree/frontend/components/search/_filter.scss +32 -0
- data/app/assets/stylesheets/spree/frontend/components/search/_search_bar.scss +34 -0
- data/app/assets/stylesheets/spree/frontend/components/typography/_hero_title.scss +6 -0
- data/app/assets/stylesheets/spree/frontend/components/typography/_subtitle.scss +7 -0
- data/app/assets/stylesheets/spree/frontend/placeholders/main.scss +5 -0
- data/app/assets/stylesheets/spree/frontend/screen.scss +89 -0
- data/app/assets/stylesheets/spree/frontend/solidus_starter_frontend.css +7 -0
- data/app/assets/stylesheets/spree/frontend/variables/_colors.scss +20 -0
- data/app/controllers/concerns/solidus_starter_frontend/auth_views.rb +16 -0
- data/app/controllers/concerns/solidus_starter_frontend/taxonomies.rb +16 -0
- data/app/controllers/spree/checkout_controller.rb +249 -0
- data/app/controllers/spree/coupon_codes_controller.rb +35 -0
- data/app/controllers/spree/home_controller.rb +13 -0
- data/app/controllers/spree/locale_controller.rb +20 -0
- data/app/controllers/spree/orders_controller.rb +126 -0
- data/app/controllers/spree/products_controller.rb +51 -0
- data/app/controllers/spree/store_controller.rb +31 -0
- data/app/controllers/spree/taxons_controller.rb +30 -0
- data/app/helpers/spree/orders_helper.rb +18 -0
- data/app/helpers/spree/taxon_filters_helper.rb +13 -0
- data/app/views/spree/address/_form_hidden.html.erb +12 -0
- data/app/views/spree/checkout/_terms_and_conditions.en.html.erb +1 -0
- data/app/views/spree/checkout/edit.html.erb +16 -0
- data/app/views/spree/checkout/existing_payment/_gateway.html.erb +9 -0
- data/app/views/spree/checkout/payment/_check.html.erb +0 -0
- data/app/views/spree/checkout/payment/_gateway.html.erb +43 -0
- data/app/views/spree/components/auth/_change_form.html.erb +40 -0
- data/app/views/spree/components/auth/_forgot_form.html.erb +28 -0
- data/app/views/spree/components/auth/_guest_form.html.erb +31 -0
- data/app/views/spree/components/auth/_login_form.html.erb +42 -0
- data/app/views/spree/components/auth/_signup_form.html.erb +48 -0
- data/app/views/spree/components/brand/_logo.html.erb +3 -0
- data/app/views/spree/components/buttons/_button_inline.html.erb +23 -0
- data/app/views/spree/components/buttons/_button_primary.html.erb +29 -0
- data/app/views/spree/components/cart/_cart_adjustment.html.erb +15 -0
- data/app/views/spree/components/cart/_cart_adjustments.html.erb +47 -0
- data/app/views/spree/components/cart/_cart_amount_row.html.erb +12 -0
- data/app/views/spree/components/cart/_cart_empty.html.erb +9 -0
- data/app/views/spree/components/cart/_cart_footer.html.erb +15 -0
- data/app/views/spree/components/cart/_cart_header.html.erb +17 -0
- data/app/views/spree/components/cart/_cart_item.html.erb +52 -0
- data/app/views/spree/components/cart/_cart_items.html.erb +23 -0
- data/app/views/spree/components/cart/_cart_link.html.erb +9 -0
- data/app/views/spree/components/cart/_cart_secondary_actions.html.erb +17 -0
- data/app/views/spree/components/cart/_item_info.html.erb +26 -0
- data/app/views/spree/components/checkout/_checkout_header.html.erb +8 -0
- data/app/views/spree/components/checkout/_checkout_step.html.erb +21 -0
- data/app/views/spree/components/checkout/_checkout_summary.html.erb +70 -0
- data/app/views/spree/components/checkout/_existing_cards.html.erb +39 -0
- data/app/views/spree/components/checkout/_payment_method_controls.html.erb +10 -0
- data/app/views/spree/components/checkout/_payment_method_selector.html.erb +14 -0
- data/app/views/spree/components/checkout/_proposed_shipment.erb +18 -0
- data/app/views/spree/components/checkout/_shipment_items.html.erb +22 -0
- data/app/views/spree/components/checkout/_shipping_methods.html.erb +20 -0
- data/app/views/spree/components/checkout/_unshippable_items.html.erb +7 -0
- data/app/views/spree/components/checkout/steps/_address_step.html.erb +60 -0
- data/app/views/spree/components/checkout/steps/_confirm_step.html.erb +31 -0
- data/app/views/spree/components/checkout/steps/_delivery_step.html.erb +31 -0
- data/app/views/spree/components/checkout/steps/_payment_step.html.erb +25 -0
- data/app/views/spree/components/forms/_address_inputs.html.erb +152 -0
- data/app/views/spree/components/forms/inputs/_checkbox_input.html.erb +29 -0
- data/app/views/spree/components/forms/inputs/_collection_select.html.erb +42 -0
- data/app/views/spree/components/forms/inputs/_radio_input.html.erb +29 -0
- data/app/views/spree/components/forms/inputs/_select_input.html.erb +31 -0
- data/app/views/spree/components/forms/inputs/_text.html.erb +54 -0
- data/app/views/spree/components/forms/inputs/_textarea_input.html.erb +42 -0
- data/app/views/spree/components/layout/_category_navigation.html.erb +3 -0
- data/app/views/spree/components/layout/_footer.html.erb +7 -0
- data/app/views/spree/components/layout/_header.html.erb +8 -0
- data/app/views/spree/components/layout/_top_bar.html.erb +8 -0
- data/app/views/spree/components/navigation/_auth_link.html.erb +1 -0
- data/app/views/spree/components/navigation/_breadcrumbs.html.erb +47 -0
- data/app/views/spree/components/navigation/_categories.html.erb +12 -0
- data/app/views/spree/components/navigation/_locale_selector.html.erb +25 -0
- data/app/views/spree/components/navigation/_taxonomies.html.erb +17 -0
- data/app/views/spree/components/navigation/_taxons.html.erb +17 -0
- data/app/views/spree/components/navigation/_taxons_tree.html.erb +29 -0
- data/app/views/spree/components/orders/_address_overview.html.erb +40 -0
- data/app/views/spree/components/orders/_coupon_code.html.erb +22 -0
- data/app/views/spree/components/orders/_line_items.html.erb +55 -0
- data/app/views/spree/components/orders/_order_details.html.erb +35 -0
- data/app/views/spree/components/orders/_order_item.html.erb +33 -0
- data/app/views/spree/components/orders/_order_items.html.erb +5 -0
- data/app/views/spree/components/orders/_order_shipments.html.erb +25 -0
- data/app/views/spree/components/orders/_payment_info.html.erb +31 -0
- data/app/views/spree/components/presentation/_hero.html.erb +14 -0
- data/app/views/spree/components/products/_product-card.html.erb +36 -0
- data/app/views/spree/components/products/_product_availability.html.erb +19 -0
- data/app/views/spree/components/products/_product_form.html.erb +21 -0
- data/app/views/spree/components/products/_product_image.html.erb +6 -0
- data/app/views/spree/components/products/_product_info.html.erb +9 -0
- data/app/views/spree/components/products/_product_promotions.html.erb +25 -0
- data/app/views/spree/components/products/_product_properties.html.erb +19 -0
- data/app/views/spree/components/products/_product_submit.html.erb +39 -0
- data/app/views/spree/components/products/_product_taxons.html.erb +15 -0
- data/app/views/spree/components/products/_product_thumbnails.html.erb +19 -0
- data/app/views/spree/components/products/_product_variants.html.erb +36 -0
- data/app/views/spree/components/products/_products-grid.html.erb +13 -0
- data/app/views/spree/components/products/_products.html.erb +28 -0
- data/app/views/spree/components/products/_products_by_taxon.html.erb +7 -0
- data/app/views/spree/components/products/_variants_list.html.erb +12 -0
- data/app/views/spree/components/search/_filter.html.erb +42 -0
- data/app/views/spree/components/search/_filters.html.erb +20 -0
- data/app/views/spree/components/search/_form.html.erb +12 -0
- data/app/views/spree/components/search/_products_search.html.erb +36 -0
- data/app/views/spree/components/search/_search_bar.html.erb +36 -0
- data/app/views/spree/components/typography/_hero_title.html.erb +11 -0
- data/app/views/spree/components/typography/_subtitle.html.erb +11 -0
- data/app/views/spree/home/index.html.erb +7 -0
- data/app/views/spree/layouts/spree_application.html.erb +27 -0
- data/app/views/spree/orders/edit.html.erb +21 -0
- data/app/views/spree/orders/show.html.erb +29 -0
- data/app/views/spree/products/index.html.erb +22 -0
- data/app/views/spree/products/show.html.erb +18 -0
- data/app/views/spree/shared/_image.html.erb +12 -0
- data/app/views/spree/shared/_link_to_cart.html.erb +1 -0
- data/app/views/spree/shared/_login_bar_items.html.erb +1 -0
- data/app/views/spree/shared/_shipment_tracking.html.erb +11 -0
- data/app/views/spree/shared/unauthorized.html.erb +0 -0
- data/app/views/spree/taxons/show.html.erb +17 -0
- data/bin/console +17 -0
- data/bin/r +13 -0
- data/bin/rails +7 -0
- data/bin/rake +7 -0
- data/bin/rspec +29 -0
- data/bin/sandbox +84 -0
- data/bin/sandbox_rails +18 -0
- data/bin/setup +8 -0
- data/bin/solidus_compare +155 -0
- data/config/initializers/assets.rb +1 -0
- data/config/initializers/canonical_rails.rb +16 -0
- data/config/locales/en.yml +5 -0
- data/config/routes.rb +33 -0
- data/config/solidus_compare.yml +33 -0
- data/docs/development.md +28 -0
- data/exe/solidus_starter_frontend +9 -0
- data/lib/generators/solidus_starter_frontend/install/install_generator.rb +15 -0
- data/lib/generators/solidus_starter_frontend/solidus_starter_frontend_generator.rb +30 -0
- data/lib/generators/solidus_starter_frontend/views/override_generator.rb +50 -0
- data/lib/solidus_starter_frontend.rb +12 -0
- data/lib/solidus_starter_frontend/config.rb +7 -0
- data/lib/solidus_starter_frontend/engine.rb +34 -0
- data/lib/solidus_starter_frontend/factories.rb +4 -0
- data/lib/solidus_starter_frontend/solidus_support_extensions.rb +9 -0
- data/lib/solidus_starter_frontend/version.rb +5 -0
- data/lib/solidus_starter_frontend_configuration.rb +8 -0
- data/lib/views/auth/spree/checkout/registration.html.erb +7 -0
- data/lib/views/auth/spree/components/navigation/_auth_link.html.erb +5 -0
- data/lib/views/auth/spree/user_passwords/edit.html.erb +7 -0
- data/lib/views/auth/spree/user_passwords/new.html.erb +5 -0
- data/lib/views/auth/spree/user_registrations/new.html.erb +7 -0
- data/lib/views/auth/spree/user_sessions/guest.html.erb +5 -0
- data/lib/views/auth/spree/user_sessions/new.html.erb +7 -0
- data/lib/views/auth/spree/users/edit.html.erb +45 -0
- data/lib/views/auth/spree/users/show.html.erb +55 -0
- data/solidus_starter_frontend.gemspec +43 -0
- data/spec/controllers/controller_helpers_spec.rb +29 -0
- data/spec/controllers/locale_controller_spec.rb +57 -0
- data/spec/controllers/spree/checkout_controller_spec.rb +563 -0
- data/spec/controllers/spree/checkout_controller_with_views_spec.rb +37 -0
- data/spec/controllers/spree/current_order_tracking_spec.rb +33 -0
- data/spec/controllers/spree/home_controller_spec.rb +29 -0
- data/spec/controllers/spree/orders_controller_ability_spec.rb +90 -0
- data/spec/controllers/spree/orders_controller_spec.rb +241 -0
- data/spec/controllers/spree/orders_controller_transitions_spec.rb +33 -0
- data/spec/controllers/spree/products_controller_spec.rb +38 -0
- data/spec/controllers/spree/taxons_controller_spec.rb +14 -0
- data/spec/fixtures/thinking-cat.jpg +0 -0
- data/spec/generators/solidus/views/override_generator_spec.rb +50 -0
- data/spec/helpers/base_helper_spec.rb +13 -0
- data/spec/helpers/order_helper_spec.rb +14 -0
- data/spec/helpers/taxon_filters_helper_spec.rb +12 -0
- data/spec/spec_helper.rb +64 -0
- data/spec/support/shared_contexts/checkout_setup.rb +12 -0
- data/spec/support/shared_contexts/custom_products.rb +28 -0
- data/spec/support/shared_contexts/locales.rb +16 -0
- data/spec/system/address_spec.rb +87 -0
- data/spec/system/automatic_promotion_adjustments_spec.rb +49 -0
- data/spec/system/caching/products_spec.rb +48 -0
- data/spec/system/caching/taxons_spec.rb +35 -0
- data/spec/system/cart_spec.rb +81 -0
- data/spec/system/checkout_confirm_insufficient_stock_spec.rb +71 -0
- data/spec/system/checkout_spec.rb +699 -0
- data/spec/system/checkout_unshippable_spec.rb +37 -0
- data/spec/system/coupon_code_spec.rb +267 -0
- data/spec/system/currency_spec.rb +20 -0
- data/spec/system/first_order_promotion_spec.rb +59 -0
- data/spec/system/free_shipping_promotions_spec.rb +60 -0
- data/spec/system/locale_spec.rb +26 -0
- data/spec/system/order_spec.rb +57 -0
- data/spec/system/products_spec.rb +302 -0
- data/spec/system/promotion_code_invalidation_spec.rb +54 -0
- data/spec/system/quantity_promotions_spec.rb +130 -0
- data/spec/system/taxons_spec.rb +158 -0
- data/spec/system/template_rendering_spec.rb +20 -0
- data/spec/views/spree/checkout/_summary_spec.rb +11 -0
- metadata +542 -0
@@ -0,0 +1,14 @@
|
|
1
|
+
<ul class="payment-method-selector">
|
2
|
+
<% methods.each do |method| %>
|
3
|
+
<li>
|
4
|
+
<%= render(
|
5
|
+
'spree/components/forms/inputs/radio_input',
|
6
|
+
checked: method == @order.available_payment_methods.first,
|
7
|
+
id: "order_payments_attributes__payment_method_id_#{method.id}",
|
8
|
+
label: t(method.name, scope: 'spree.payment_methods', default: method.name),
|
9
|
+
name: "order[payments_attributes][][payment_method_id]",
|
10
|
+
value: method.id
|
11
|
+
) %>
|
12
|
+
</li>
|
13
|
+
<% end %>
|
14
|
+
</ul>
|
@@ -0,0 +1,18 @@
|
|
1
|
+
<div class="proposed-shipment">
|
2
|
+
<h2 class="proposed-shipment__title">
|
3
|
+
<%= t('spree.package_from') %>
|
4
|
+
<%= ship_form.object.stock_location.name %>
|
5
|
+
</h2>
|
6
|
+
|
7
|
+
<%= render "spree/components/checkout/shipment_items", shipment_items: ship_form.object.manifest %>
|
8
|
+
|
9
|
+
<h3 class="proposed-shipment__secondary-title">
|
10
|
+
<%= t('spree.shipping_method') %>:
|
11
|
+
</h3>
|
12
|
+
|
13
|
+
<%= render(
|
14
|
+
"spree/components/checkout/shipping_methods",
|
15
|
+
form: ship_form,
|
16
|
+
shipping_rates: ship_form.object.shipping_rates
|
17
|
+
) %>
|
18
|
+
</div>
|
@@ -0,0 +1,22 @@
|
|
1
|
+
<ul class="shipment-items">
|
2
|
+
<% shipment_items.each do |shipment_item| %>
|
3
|
+
<li>
|
4
|
+
<div class="shipment-items__image">
|
5
|
+
<%= render(
|
6
|
+
'spree/shared/image',
|
7
|
+
image: shipment_item.variant.gallery.images.first || shipment_item.variant.product.gallery.images.first,
|
8
|
+
size: :small
|
9
|
+
) %>
|
10
|
+
</div>
|
11
|
+
<div class="shipment-items__name">
|
12
|
+
<%= shipment_item.variant.name %>
|
13
|
+
</div>
|
14
|
+
<div class="shipment-items__quantity">
|
15
|
+
<%= shipment_item.quantity %>
|
16
|
+
</div>
|
17
|
+
<div class="shipment-items__price">
|
18
|
+
<%= display_price(shipment_item.variant) %>
|
19
|
+
</div>
|
20
|
+
</li>
|
21
|
+
<% end %>
|
22
|
+
</ul>
|
@@ -0,0 +1,20 @@
|
|
1
|
+
<%
|
2
|
+
def generate_id(form, input_name, rate)
|
3
|
+
"#{form.object_name.gsub(/[\[\]]/, '[' => '_', ']' => '_')}#{input_name}_#{rate.id}"
|
4
|
+
end
|
5
|
+
%>
|
6
|
+
|
7
|
+
<ul class="shipping-methods">
|
8
|
+
<% shipping_rates.each do |rate| %>
|
9
|
+
<li class="shipping-methods__rate">
|
10
|
+
<%= render(
|
11
|
+
'spree/components/forms/inputs/radio_input',
|
12
|
+
checked: rate.selected,
|
13
|
+
id: generate_id(form, "selected_shipping_rate_id", rate),
|
14
|
+
label: "#{rate.name} #{rate.display_cost}",
|
15
|
+
name: "#{form.object_name}[selected_shipping_rate_id]",
|
16
|
+
value: rate.id
|
17
|
+
) %>
|
18
|
+
</li>
|
19
|
+
<% end %>
|
20
|
+
</ul>
|
@@ -0,0 +1,60 @@
|
|
1
|
+
<div class="address-step">
|
2
|
+
<fieldset class="address-step__billing" id="billing">
|
3
|
+
<legend>
|
4
|
+
<%= t("spree.billing_address") %>
|
5
|
+
</legend>
|
6
|
+
|
7
|
+
<%= form.fields_for :bill_address do |bill_form| %>
|
8
|
+
<%= render(
|
9
|
+
"spree/components/forms/address_inputs",
|
10
|
+
form: bill_form,
|
11
|
+
address_type: "billing",
|
12
|
+
address: @order.bill_address
|
13
|
+
) %>
|
14
|
+
<% end %>
|
15
|
+
</fieldset>
|
16
|
+
|
17
|
+
<fieldset class="address-step__shipping" id="shipping">
|
18
|
+
<legend>
|
19
|
+
<%= t('spree.shipping_address') %>
|
20
|
+
</legend>
|
21
|
+
|
22
|
+
<%= form.fields_for :ship_address do |ship_form| %>
|
23
|
+
<%= render(
|
24
|
+
'spree/components/forms/inputs/checkbox_input',
|
25
|
+
checked: @order.shipping_eq_billing_address?,
|
26
|
+
id: :order_use_billing,
|
27
|
+
label: t('spree.use_billing_address'),
|
28
|
+
name: "order[use_billing]",
|
29
|
+
value: "1"
|
30
|
+
) %>
|
31
|
+
|
32
|
+
<%= render(
|
33
|
+
"spree/components/forms/address_inputs",
|
34
|
+
form: ship_form,
|
35
|
+
address_type: "shipping",
|
36
|
+
address: @order.ship_address
|
37
|
+
) %>
|
38
|
+
<% end %>
|
39
|
+
</fieldset>
|
40
|
+
|
41
|
+
<div class="address-step__actions">
|
42
|
+
<%= render(
|
43
|
+
"spree/components/buttons/button_primary",
|
44
|
+
content: I18n.t("spree.save_and_continue"),
|
45
|
+
name: :commit,
|
46
|
+
type: :submit
|
47
|
+
) %>
|
48
|
+
|
49
|
+
<% if try_spree_current_user %>
|
50
|
+
<%= render(
|
51
|
+
"spree/components/forms/inputs/checkbox_input",
|
52
|
+
checked: try_spree_current_user.respond_to?(:persist_order_address),
|
53
|
+
id: "save-user-address",
|
54
|
+
label: I18n.t("spree.save_my_address"),
|
55
|
+
name: :save_user_address,
|
56
|
+
value: "1"
|
57
|
+
) %>
|
58
|
+
<% end %>
|
59
|
+
</div>
|
60
|
+
</div>
|
@@ -0,0 +1,31 @@
|
|
1
|
+
<div class="confirm-step">
|
2
|
+
<fieldset class="confirm-step__info">
|
3
|
+
<legend>
|
4
|
+
<%= t('spree.confirm') %>
|
5
|
+
</legend>
|
6
|
+
|
7
|
+
<%= render 'spree/components/orders/order_details', order: @order %>
|
8
|
+
</fieldset>
|
9
|
+
|
10
|
+
<% SolidusStarterFrontend::Config[:require_terms_and_conditions_acceptance].tap do |requires_acceptance| %>
|
11
|
+
<% if requires_acceptance %>
|
12
|
+
<div class="terms_and_conditions">
|
13
|
+
<%= render partial: "spree/checkout/terms_and_conditions" %>
|
14
|
+
<%= check_box_tag :accept_terms_and_conditions, 'accepted', false %>
|
15
|
+
<%= label_tag :accept_terms_and_conditions, t('spree.agree_to_terms_of_service') %>
|
16
|
+
</div>
|
17
|
+
<% end %>
|
18
|
+
|
19
|
+
<%= render(
|
20
|
+
"spree/components/buttons/button_primary",
|
21
|
+
content: t('spree.place_order'),
|
22
|
+
disabled: requires_acceptance,
|
23
|
+
name: :commit,
|
24
|
+
type: :submit
|
25
|
+
) %>
|
26
|
+
<% end %>
|
27
|
+
</div>
|
28
|
+
|
29
|
+
<script>
|
30
|
+
Solidus.disableSaveOnClick();
|
31
|
+
</script>
|
@@ -0,0 +1,31 @@
|
|
1
|
+
<div class="delivery-step">
|
2
|
+
<fieldset class="delivery-step__delivery">
|
3
|
+
<legend>
|
4
|
+
<%= t('spree.delivery') %>
|
5
|
+
</legend>
|
6
|
+
|
7
|
+
<%= form.fields_for :shipments do |ship_form| %>
|
8
|
+
<%= render 'spree/components/checkout/proposed_shipment', ship_form: ship_form %>
|
9
|
+
<% end %>
|
10
|
+
|
11
|
+
<% if @differentiator.try(:missing?) %>
|
12
|
+
<%= render "spree/components/checkout/unshippable_items", items: @differentiator.missing %>
|
13
|
+
<% end %>
|
14
|
+
|
15
|
+
<% if Spree::Config[:shipping_instructions] %>
|
16
|
+
<%= render(
|
17
|
+
'spree/components/forms/inputs/textarea_input',
|
18
|
+
id: :order_special_instructions,
|
19
|
+
label: t('spree.shipping_instructions'),
|
20
|
+
name: 'order[special_instructions]'
|
21
|
+
) %>
|
22
|
+
<% end %>
|
23
|
+
</fieldset>
|
24
|
+
|
25
|
+
<%= render(
|
26
|
+
'spree/components/buttons/button_primary',
|
27
|
+
content: I18n.t('spree.save_and_continue'),
|
28
|
+
name: :commit,
|
29
|
+
type: :submit
|
30
|
+
) %>
|
31
|
+
</div>
|
@@ -0,0 +1,25 @@
|
|
1
|
+
<div class="payment-step">
|
2
|
+
<fieldset class="payment-step__payment">
|
3
|
+
<legend>
|
4
|
+
<%= t('spree.payment_information') %>
|
5
|
+
</legend>
|
6
|
+
|
7
|
+
<%= render 'spree/components/checkout/payment_method_selector', methods: @order.available_payment_methods %>
|
8
|
+
<%= render 'spree/components/checkout/payment_method_controls', methods: @order.available_payment_methods %>
|
9
|
+
|
10
|
+
<% if @wallet_payment_sources.present? %>
|
11
|
+
<%= render 'spree/components/checkout/existing_cards', wallet_payment_sources: @wallet_payment_sources %>
|
12
|
+
<% end %>
|
13
|
+
</fieldset>
|
14
|
+
|
15
|
+
<%= render(
|
16
|
+
'spree/components/buttons/button_primary',
|
17
|
+
content: I18n.t('spree.save_and_continue'),
|
18
|
+
name: :commit,
|
19
|
+
type: :submit
|
20
|
+
) %>
|
21
|
+
</div>
|
22
|
+
|
23
|
+
<script>
|
24
|
+
Solidus.disableSaveOnClick();
|
25
|
+
</script>
|
@@ -0,0 +1,152 @@
|
|
1
|
+
<%
|
2
|
+
def generate_id(form, input_name)
|
3
|
+
"#{form.object_name.gsub(/[\[\]]/, '[' => '_', ']' => '_')}#{input_name}"
|
4
|
+
end
|
5
|
+
%>
|
6
|
+
|
7
|
+
<div class="address-inputs">
|
8
|
+
<%= render(
|
9
|
+
"spree/components/forms/inputs/text",
|
10
|
+
autocomplete: "#{address_type} given-name",
|
11
|
+
autofocus: true,
|
12
|
+
id: generate_id(form, "firstname"),
|
13
|
+
label: I18n.t("spree.first_name"),
|
14
|
+
name: "#{form.object_name}[firstname]",
|
15
|
+
required: true,
|
16
|
+
value: address.firstname
|
17
|
+
) %>
|
18
|
+
|
19
|
+
<%= render(
|
20
|
+
"spree/components/forms/inputs/text",
|
21
|
+
autocomplete: "#{address_type} family-name",
|
22
|
+
id: generate_id(form, "lastname"),
|
23
|
+
label: I18n.t("spree.last_name"),
|
24
|
+
name: "#{form.object_name}[lastname]",
|
25
|
+
required: false,
|
26
|
+
value: address.lastname
|
27
|
+
) %>
|
28
|
+
|
29
|
+
<% if Spree::Config[:company] %>
|
30
|
+
<%= render(
|
31
|
+
"spree/components/forms/inputs/text",
|
32
|
+
autocomplete: "#{address_type} organization",
|
33
|
+
id: :todo,
|
34
|
+
label: I18n.t("spree.company"),
|
35
|
+
name: "#{form.object_name}[company]",
|
36
|
+
value: address.company
|
37
|
+
) %>
|
38
|
+
<% end %>
|
39
|
+
|
40
|
+
<%= render(
|
41
|
+
"spree/components/forms/inputs/text",
|
42
|
+
autocomplete: "#{address_type} address-line1",
|
43
|
+
id: generate_id(form, "address1"),
|
44
|
+
label: I18n.t("spree.street_address"),
|
45
|
+
name: "#{form.object_name}[address1]",
|
46
|
+
required: true,
|
47
|
+
value: address.address1
|
48
|
+
) %>
|
49
|
+
|
50
|
+
<%= render(
|
51
|
+
"spree/components/forms/inputs/text",
|
52
|
+
autocomplete: "#{address_type} address-line2",
|
53
|
+
id: generate_id(form, "address2"),
|
54
|
+
label: I18n.t("spree.street_address_2"),
|
55
|
+
name: "#{form.object_name}[address2]",
|
56
|
+
value: address.address2
|
57
|
+
) %>
|
58
|
+
|
59
|
+
<%= render(
|
60
|
+
"spree/components/forms/inputs/text",
|
61
|
+
autocomplete: "#{address_type} address-level2",
|
62
|
+
id: generate_id(form, "city"),
|
63
|
+
label: I18n.t("spree.city"),
|
64
|
+
name: "#{form.object_name}[city]",
|
65
|
+
required: true,
|
66
|
+
value: address.city
|
67
|
+
) %>
|
68
|
+
|
69
|
+
<%= render(
|
70
|
+
"spree/components/forms/inputs/collection_select",
|
71
|
+
autocomplete: "#{address_type} country-name",
|
72
|
+
collection: available_countries,
|
73
|
+
form: form,
|
74
|
+
id: generate_id(form, "country_id"),
|
75
|
+
input_class: "js-trigger-state-change",
|
76
|
+
label: t("spree.country"),
|
77
|
+
method: :country_id,
|
78
|
+
required: true,
|
79
|
+
state_container: "##{address_type} .js-address-fields",
|
80
|
+
text_method: :name,
|
81
|
+
value_method: :id
|
82
|
+
) %>
|
83
|
+
|
84
|
+
<% if Spree::Config[:address_requires_state] %>
|
85
|
+
<% have_states = !address.country.states.empty? %>
|
86
|
+
|
87
|
+
<span class="js-address-fields" style="display: none;">
|
88
|
+
<%= render(
|
89
|
+
"spree/components/forms/inputs/collection_select",
|
90
|
+
autocomplete: "#{address_type} address-level1",
|
91
|
+
collection: address.country.states,
|
92
|
+
disabled: !have_states,
|
93
|
+
form: form,
|
94
|
+
id: generate_id(form, "state_id"),
|
95
|
+
input_class: "required",
|
96
|
+
label: t("spree.state"),
|
97
|
+
method: :state_id,
|
98
|
+
options: { include_blank: true },
|
99
|
+
text_method: :name,
|
100
|
+
value_method: :id
|
101
|
+
) %>
|
102
|
+
<%= form.text_field(
|
103
|
+
:state_name,
|
104
|
+
class: !have_states ? 'required' : '',
|
105
|
+
style: have_states ? 'display: none;' : '',
|
106
|
+
disabled: have_states,
|
107
|
+
autocomplete: "#{address_type} address-level1"
|
108
|
+
) %>
|
109
|
+
</span>
|
110
|
+
<noscript>
|
111
|
+
<%= form.text_field(
|
112
|
+
:state_name,
|
113
|
+
class: 'required',
|
114
|
+
autocomplete: "#{address_type} address-level1",
|
115
|
+
required: true
|
116
|
+
) %>
|
117
|
+
</noscript>
|
118
|
+
<% end %>
|
119
|
+
|
120
|
+
<%= render(
|
121
|
+
"spree/components/forms/inputs/text",
|
122
|
+
autocomplete: "#{address_type} postal-code",
|
123
|
+
id: generate_id(form, "zipcode"),
|
124
|
+
label: I18n.t("spree.zip"),
|
125
|
+
name: "#{form.object_name}[zipcode]",
|
126
|
+
required: address.require_zipcode?,
|
127
|
+
value: address.zipcode
|
128
|
+
) %>
|
129
|
+
|
130
|
+
<%= render(
|
131
|
+
"spree/components/forms/inputs/text",
|
132
|
+
autocomplete: "#{address_type} home tel",
|
133
|
+
id: generate_id(form, "phone"),
|
134
|
+
label: I18n.t("spree.phone"),
|
135
|
+
name: "#{form.object_name}[phone]",
|
136
|
+
required: address.require_phone?,
|
137
|
+
type: :tel,
|
138
|
+
value: address.phone
|
139
|
+
) %>
|
140
|
+
|
141
|
+
<% if Spree::Config[:alternative_shipping_phone] %>
|
142
|
+
<%= render(
|
143
|
+
"spree/components/forms/inputs/text",
|
144
|
+
autocomplete: "#{address_type} tel",
|
145
|
+
id: generate_id(form, "alternative_phone"),
|
146
|
+
label: I18n.t("spree.alternative_phone"),
|
147
|
+
name: "#{form.object_name}[alternative_phone]",
|
148
|
+
type: :tel,
|
149
|
+
value: address.alternative_phone
|
150
|
+
) %>
|
151
|
+
<% end %>
|
152
|
+
</div>
|
@@ -0,0 +1,29 @@
|
|
1
|
+
<%
|
2
|
+
base_class = "checkbox-input".freeze
|
3
|
+
|
4
|
+
# Optional props
|
5
|
+
checked = local_assigns.fetch(:checked, false)
|
6
|
+
disabled = local_assigns.fetch(:disabled, false)
|
7
|
+
id = local_assigns.fetch(:id, nil)
|
8
|
+
value = local_assigns.fetch(:value, nil)
|
9
|
+
|
10
|
+
# Classes
|
11
|
+
class_names = [base_class]
|
12
|
+
class_names = class_names.join(" ")
|
13
|
+
%>
|
14
|
+
|
15
|
+
<label
|
16
|
+
class="<%= class_names %>"
|
17
|
+
<% if id %>
|
18
|
+
for="<%= id %>"
|
19
|
+
<% end %>
|
20
|
+
>
|
21
|
+
<%= check_box_tag(
|
22
|
+
name,
|
23
|
+
value,
|
24
|
+
checked,
|
25
|
+
disabled: disabled,
|
26
|
+
id: id
|
27
|
+
) %>
|
28
|
+
<%= label %>
|
29
|
+
</label>
|
@@ -0,0 +1,42 @@
|
|
1
|
+
<%
|
2
|
+
base_class = "select-input".freeze
|
3
|
+
|
4
|
+
# Optional props
|
5
|
+
autocomplete = local_assigns.fetch(:autocomplete, nil)
|
6
|
+
disabled = local_assigns.fetch(:disabled, false)
|
7
|
+
id = local_assigns.fetch(:id, nil)
|
8
|
+
input_class = local_assigns.fetch(:input_class, nil)
|
9
|
+
label = local_assigns.fetch(:label, false)
|
10
|
+
options = local_assigns.fetch(:options, {})
|
11
|
+
required = local_assigns.fetch(:required, false)
|
12
|
+
state_container = local_assigns.fetch(:state_container, nil)
|
13
|
+
|
14
|
+
# Classes
|
15
|
+
class_names = [base_class]
|
16
|
+
class_names = class_names.join(" ")
|
17
|
+
%>
|
18
|
+
|
19
|
+
<div class="<%= class_names %>">
|
20
|
+
<% if label %>
|
21
|
+
<label
|
22
|
+
<% if id %>
|
23
|
+
for="<%= id %>"
|
24
|
+
<% end %>
|
25
|
+
>
|
26
|
+
<%= label %>:
|
27
|
+
</label>
|
28
|
+
<% end %>
|
29
|
+
|
30
|
+
<%= form.collection_select(
|
31
|
+
method,
|
32
|
+
collection,
|
33
|
+
value_method,
|
34
|
+
text_method,
|
35
|
+
options,
|
36
|
+
autocomplete: autocomplete,
|
37
|
+
class: input_class,
|
38
|
+
disabled: disabled,
|
39
|
+
required: required,
|
40
|
+
"data-state-container": state_container
|
41
|
+
) %>
|
42
|
+
</div>
|