app/views/itineraries/_route_step.html.slim

Summary

Maintainability
Test Coverage
.row
  .col-sm-4
    = f.input :start_address
    = f.input :end_address
    .form-group
      = f.input :avoid_highways, as: :boolean, wrapper: false, form_check_wrapper_html: { class: 'mb-2' }
      = f.input :avoid_tolls, as: :boolean, wrapper: false
    .form-group
      .d-flex.align-items-center
        = f.button :button, t('.get_route'), class: 'btn-primary', type: 'button', id: 'get-route'
        .spinner-border.text-primary.ms-2.itineraries-spinner#itineraries-spinner-j role='status'
          span.visually-hidden = t('loading')
    #map-error-j.d-none-soft.alert.alert-danger
    #map-result-j.d-none-soft.alert.alert-info
      = t('.distance')
      b#distance<
      br
      = t('.duration')
      b#duration<
  .col-sm-8
    .ratio.ratio-16x9.google-maps
      #new-itinerary-map *map_config_attributes
    p#route-helper.d-none-soft
      small
        = Itinerary.human_attribute_name :start_location
        b.itinerary-from-j
        br
        = Itinerary.human_attribute_name :end_location
        b.itinerary-to-j
        br
        span#copyrights
.row
  .col-sm-4
    h3
      span.fas.fa-user-secret<>
      = t('.hint_privacy_title')
    p
      = t('.hint_privacy_content')
  .col-sm-4
    h3
      span.fas.fa-wrench<>
      = t('.hint_customize_title')
    p
      = t('.hint_customize_content')
  .col-sm-4
    h3
      span.fas.fa-search<>
      = t('.hint_search_before_title')
    p
      = t('.hint_search_before_content_html', search_link: (link_to t('.search_link'), itineraries_path))