= form_with url: checkout_update_path(checkout_step), model: @order, method: :put, data: { remote: "true" } do |f|
  .medium-6
    = f.fields :bill_address, model: @order.bill_address do |bill_address|
      %div.checkout-substep
        -# YOUR DETAILS
        %div.checkout-title
          = t("checkout.step1.contact_information.title")

        .two-columns-inputs
          %div.checkout-input.with-floating-label{ "data-controller": "floating-label" }
            = f.label :email, t("checkout.step1.contact_information.email.label")
            = f.text_field :email, { placeholder: " " }
            = f.error_message_on :email

          %div.checkout-input.with-floating-label{ "data-controller": "floating-label" }
            = bill_address.label :phone, t("checkout.step1.contact_information.phone.label")
            = bill_address.text_field :phone, { placeholder: " " }
            = f.error_message_on "bill_address.phone"

      %div.checkout-substep
        -# BILLING ADDRESS
        %div.checkout-title
          = t("checkout.step1.billing_address.title")

        .two-columns-inputs
          %div.checkout-input.with-floating-label{ "data-controller": "floating-label" }
            = bill_address.label :firstname, t("checkout.step1.billing_address.first_name.label")
            = bill_address.text_field :firstname, { placeholder: " " }
            = f.error_message_on "bill_address.firstname"

          %div.checkout-input.with-floating-label{ "data-controller": "floating-label" }
            = bill_address.label :lastname, t("checkout.step1.billing_address.last_name.label")
            = bill_address.text_field :lastname, { placeholder: " " }
            = f.error_message_on "bill_address.lastname"

        %div.checkout-input.with-floating-label{ "data-controller": "floating-label"}
          = bill_address.label :address1, t("checkout.step1.address.address1.label")
          = bill_address.text_field :address1, { placeholder: " " }
          = f.error_message_on "bill_address.address1"

        %div.checkout-input.with-floating-label{ "data-controller": "floating-label"}
          = bill_address.label :address2, t("checkout.step1.address.address2.label")
          = bill_address.text_field :address2, { placeholder: " " }
          = f.error_message_on "bill_address.address2"

        %div.checkout-input.with-floating-label{ "data-controller": "floating-label"}
          = bill_address.label :city, t("checkout.step1.address.city.label")
          = bill_address.text_field :city, { placeholder: " " }
          = f.error_message_on "bill_address.city"

        %div.checkout-input.with-floating-label{ "data-controller": "floating-label"}
          = bill_address.label :zipcode, t("checkout.step1.address.zipcode.label")
          = bill_address.text_field :zipcode, { placeholder: " " }
          = f.error_message_on "bill_address.zipcode"

        %div{ "data-controller": "dependent-select", "data-dependent-select-options-value": countries_with_states }
          - bill_address_country = @order.bill_address.country || DefaultCountry.country

          %div.checkout-input
            = bill_address.label :country_id, t("checkout.step1.address.country_id.label")
            = bill_address.select :country_id, countries, { selected: bill_address_country.id }, { "data-dependent-select-target": "source", "data-action": "dependent-select#handleSelectChange" }

          %div.checkout-input
            = bill_address.label :state_id, t("checkout.step1.address.state_id.label")
            = bill_address.select :state_id, states_for_country(bill_address_country), { selected: @order.bill_address&.state_id }, { "data-dependent-select-target": "select" }

        - if spree_current_user
          %div.checkout-input
            = f.check_box :save_bill_address
            = f.label :save_bill_address, t(:checkout_default_bill_address)

    %div.checkout-substep{ "data-controller": "toggle-control shippingmethod" }
      - selected_shipping_method = @order.shipping_method&.id || params[:shipping_method_id]
      %div.checkout-title
        = t("checkout.step1.shipping_info.title")

      - display_ship_address = false
      - ship_method_description = nil

      - selected_shipping_method ||= @shipping_methods[0].id if @shipping_methods.length == 1
      - @shipping_methods.each do |shipping_method|
        - ship_method_is_selected = shipping_method.id == selected_shipping_method.to_i
        %div.checkout-input.checkout-input-radio
          = fields_for shipping_method do |shipping_method_form|
            = shipping_method_form.radio_button :name, shipping_method.id,
              id: "shipping_method_#{shipping_method.id}",
              checked: ship_method_is_selected,
              name: "shipping_method_id",
              "data-requireAddress": shipping_method.require_ship_address,
              "data-action": "toggle-control#toggleDisplay shippingmethod#selectShippingMethod",
              "data-toggle-show": shipping_method.require_ship_address
            = shipping_method_form.label shipping_method.id, shipping_method.name, {for: "shipping_method_" + shipping_method.id.to_s }
            %em.fees= payment_or_shipping_price(shipping_method, @order)
            - display_ship_address = display_ship_address || (ship_method_is_selected && shipping_method.require_ship_address)
        %div.checkout-input{"data-shippingmethod-target": "shippingMethodDescription", "data-shippingmethodid": shipping_method.id , style: "display: #{ship_method_is_selected ? 'block' : 'none'}" }
          #distributor_address.panel
            - if shipping_method.description.present?
              %span #{shipping_method.description}

      = f.error_message_on :shipping_method, standalone: true

      %div.checkout-input{ "data-toggle-control-target": "content", style: "display: #{display_ship_address ? 'block' : 'none'}" }
        = f.check_box :ship_address_same_as_billing, { id: "ship_address_same_as_billing", name: "ship_address_same_as_billing", "data-action": "shippingmethod#showHideShippingAddress", "data-shippingmethod-target": "shippingAddressCheckbox", checked: shipping_and_billing_match?(@order) }, 1, nil
        = f.label :ship_address_same_as_billing, t(:checkout_address_same), { for: "ship_address_same_as_billing" }

      %div{"data-shippingmethod-target": "shippingMethodAddress", style: "display: #{!display_ship_address || shipping_and_billing_match?(@order) ? 'none' : 'block'}" }
        = f.fields :ship_address, model: @order.ship_address do |ship_address|
          %div.checkout-input.with-floating-label{ "data-controller": "floating-label"}
            = ship_address.label :address1, t("checkout.step1.address.address1.label")
            = ship_address.text_field :address1, { placeholder: " " }
            = f.error_message_on "ship_address.address1"

          %div.checkout-input.with-floating-label{ "data-controller": "floating-label"}
            = ship_address.label :address2, t("checkout.step1.address.address2.label")
            = ship_address.text_field :address2, { placeholder: " " }
            = f.error_message_on "ship_address.address2"

          %div.checkout-input.with-floating-label{ "data-controller": "floating-label"}
            = ship_address.label :city, t("checkout.step1.address.city.label")
            = ship_address.text_field :city, { placeholder: " " }
            = f.error_message_on "ship_address.city"

          %div.checkout-input.with-floating-label{ "data-controller": "floating-label"}
            = ship_address.label :zipcode, t("checkout.step1.address.zipcode.label")
            = ship_address.text_field :zipcode, { placeholder: " " }
            = f.error_message_on "ship_address.zipcode"

          %div{ "data-controller": "dependent-select", "data-dependent-select-options-value": countries_with_states }
            - ship_address_country = @order.ship_address.country || DefaultCountry.country

            %div.checkout-input
              = ship_address.label :country_id, t("checkout.step1.address.country_id.label")
              = ship_address.select :country_id, countries, { selected: ship_address_country.id }, { "data-dependent-select-target": "source", "data-action": "dependent-select#handleSelectChange" }

            %div.checkout-input
              = ship_address.label :state_id, t("checkout.step1.address.state_id.label")
              = ship_address.select :state_id, states_for_country(ship_address_country), { selected: @order.ship_address&.state_id }, { "data-dependent-select-target": "select" }

      - if spree_current_user
        %div.checkout-input{ "data-toggle-control-target": "content", style: "display: #{display_ship_address ? 'block' : 'none'}" }
          = f.check_box :save_ship_address
          = f.label :save_ship_address, t(:checkout_default_ship_address)

      .div.checkout-input
        = f.label :special_instructions, t(:checkout_instructions)
        = f.text_area :special_instructions, size: "60x4"

    %div.checkout-submit
      = f.submit t("checkout.step1.submit"), class: "button primary", disabled: @terms_and_conditions_accepted == false || @platform_tos_accepted == false
      %a.button.cancel{href: main_app.cart_path}
        = t("checkout.step1.cancel")
