department-of-veterans-affairs/vets-website

View on GitHub
src/applications/facility-locator/sass/facility-locator.scss

Summary

Maintainability
Test Coverage
@import "~@department-of-veterans-affairs/formation/sass/shared-variables";
@import "~leaflet/dist/leaflet.css";
@import "~react-tabs/style/react-tabs";

$facility-locator-shadow: rgba(0, 0, 0, 0.5);

.facility-locator {
  @media (max-width: $large-screen) {
    margin: 0 12px;
  }

  @media (max-width: $small-screen) {
    margin: 0;
  }

  .title-section {
    padding: 0.3125rem 0;

    h1:first-child {
      margin-top: 0;
      padding: 0 0 0 0.9375rem;
    }
  }

  .facility-introtext {
    padding: 0 15px 15px;
  }

  .p1 {
    padding: 0.5em 0;
  }

  label {
    margin-top: 0;
  }

  va-icon {
    color: var(--vads-color-link);
  }

  .desktop-container {
    margin-bottom: 3em;
    border-bottom: solid thin var(--vads-color-base-lightest);
  }

  .desktop-map-container {
    min-height: 78vh;
    padding-left: 0;
    width: calc(100% - 305px);
    display: flex;
    flex-direction: row;
  }

  .search-result-title {
    padding: 4px;
    margin: 4px;

    :focus {
      @include focus-gold-light-outline(0);
      outline-offset: 2px;
      z-index: 3;
    }
  }

  .facility-result {
    padding: 22px 4px 34px;
    background: var(--vads-color-white);
    border-top: solid 2px var(--vads-color-base-lighter);
    border-bottom: none;

    @media screen and (max-width: $small-screen) {
      // we already have a border from the tab-list on mobile
      border-top: none;
    }

    &.active {
      border: $focus-outline;
    }

    span.fa {
      margin-right: 0.3125rem;
    }

    a {
      color: var(--vads-color-link);

      &:focus {
        h5 {
          outline: inherit;
        }
      }

      &:visited {
        color: var(--vads-color-link);
      }
    }

    h5 {
      color: var(--vads-color-link);
    }

    td {
      vertical-align: top;
    }
  }

  @media screen and (max-width: $small-screen) {
    .facility-result+.facility-result {
      border-top: solid 1px var(--vads-color-base-light);
    }
  }

  .leaflet-popup-content {
    h5 {
      color: var(--vads-color-link);
    }

    a {
      display: block;
      text-decoration: none;

      &:focus {
        outline: 2px solid var(--vads-color-action-focus-on-light);
        outline-offset: 2px;
      }
    }

    p {
      margin: 0;
    }
  }

  .tab {
    border-color: var(--vads-color-black);
    text-align: center;
    background: var(--vads-color-gray-light-alt);
    border: solid 1px var(--vads-color-black);
    border-radius: 0 !important;

    display: inline-block;
    border-bottom: none;
    bottom: -1px;
    position: relative;
    list-style: none;
    padding: 6px 12px;
    cursor: pointer;

    &.react-tabs__tab--selected {
      border-top: solid 3px var(--vads-color-primary);
      background: var(--vads-color-white);
      border-bottom: none;
    }
  }

  .react-tabs [role="tab"][aria-selected="true"] {
    border-left-color: var(--vads-color-black);
    border-right-color: var(--vads-color-black);
  }

  ul.react-tabs__tab-list {
    padding: 0;
  }

  .react-tabs__tab+.react-tabs__tab {
    border-left: none;
  }

  #search-results-title {
    width: calc(100% - 8px);
    margin-left: 4px;
  }

  .search-results-container {
    width: 305px;
    max-height: 78vh;
    overflow-y: auto;
  }

  .facility-search-results {
    // remove black border
    border-top: 1px solid var(--vads-color-white);

    ol {
      padding: 0;
    }

    li {
      p {
        color: var(--vads-color-black);
      }
    }
  }

  .fa.blue {
    color: var(--vads-color-link);
  }

  .fl-stats-bar-container {
    display: flex;
    align-items: center;

    .fl-stats-bar {
      display: block;
      width: 230px;
      height: 39px;
      margin: 0.5em 0.5em 0.5em 0;
      background: url("/img/icons/fa-male-lt-grey.svg") repeat-x left center;
    }

    .fl-stats-bar-inner {
      display: block;
      content: " ";
      height: 100%;
      margin: 0;
    }

    .fl-stats-bar-inner.grey {
      background: url("/img/icons/fa-male-dk-grey.svg") repeat-x left center;
    }

    .fl-stats-bar-inner.blue {
      background: url("/img/icons/fa-male-blue.svg") repeat-x left center;
    }
  }

  p {
    margin: 0.5em 0;
  }

  .clearfix {
    content: "";
    display: block;
    clear: both;
  }

  .search-controls-container {
    padding: 24px 16px 0 12px;
    border: solid thin var(--vads-color-base-lightest);
    background: var(--vads-color-base-lightest);

    select:disabled {
      background: var(--vads-color-base-lightest);
    }

    #facility-search-controls {
      display: flex;
      flex-direction: column;

      input,
      textarea,
      select,
      va-select,
      .input-container {
        max-width: none;
        margin-bottom: 24px;
        padding: 0 0.7em;

        @media (min-width: $small-desktop-screen) {
          max-width: 418px;
          width: 418px;
          margin-right: 18px;
        }
      }

      .input-container {
        padding: 0;
      }

      va-select {
        padding-right: 0;
        padding-left: 0;
      }

      .service-type-dropdown-container {
        align-self: end;
      }

      input[type="submit"] {
        width: 100%;
        padding: 0 0.625rem;
        margin-top: 0;

        @media (min-width: $small-desktop-screen) {
          margin-top: auto;
          min-width: 4.4rem;
          width: auto;
        }
      }

      .typeahead+input[type="submit"] {
        margin-bottom: 30px;
      }

      .typeahead:has(.usa-input-error)+input[type="submit"] {
        margin-bottom: 38px;
      }

      #location-input-field {
        display: flex;
        flex-direction: column;

        @media (min-width: $small-desktop-screen) {
          flex-direction: row;
        }
      }

      .use-my-location-link {
        text-decoration: none;
        background-color: transparent;
        color: var(--vads-color-link);
        font-weight: normal;
        padding: 0;
        margin: 0 0 0 20px;

        @media (max-width: $small-desktop-screen) {
          margin: 1em 0;
          text-align: left;
        }
      }

      #search-controls-bottom-row {
        @media (min-width: $small-desktop-screen) {
          display: flex;
          margin-top: -24px;
          flex-direction: row;
        }
      }
    }
  }

  .facility-detail {
    padding: 0 0.9375rem;

    li.sublist {
      margin-left: 1.5em;
    }

    h5 {
      padding-bottom: 0;
    }

    p {
      margin: 0.5em 0;
    }

    a:visited,
    .edit-checkbox label:visited {
      color: var(--vads-color-link);
    }

    .call-out {
      border: solid thin var(--vads-color-black);
      background: var(--vads-color-white);
    }

    hr {
      border-color: var(--vads-color-base-lighter);
      margin: 0rem 0 1.25rem;
      color: var(--vads-color-primary-dark);
    }

    hr.title {
      color: var(--vads-color-primary-dark);
      margin: 0 0 1.25rem;
      border: 1px solid var(--vads-color-primary-dark);
    }
  }

  .typeahead {
    margin-top: 25px;
  }
}

// Prevent error message div from colliding with facility-type
#service-error {
  @media (min-width: $small-desktop-screen) {
    right: 0px;
  }
}

#service-typeahead {
  border-radius: 0;
  box-sizing: border-box;
  cursor: pointer;
  color: var(--vads-color-base);
  display: block;
  font-size: 1rem;
  height: 2.625rem;
  line-height: 1.3;
  margin: 0.2em 0 1.875rem;
  position: relative;
  width: 100%;

  &.disabled {
    cursor: default;
    background-color: var(--vads-color-base-lightest);
  }

  .dropdown {
    background: var(--vads-color-white);
    border: solid 1px var(--vads-color-black);
    box-sizing: content-box;
    font-size: 1rem;
    left: -1px;
    list-style: none;
    max-height: 25vh;
    overflow-y: auto;
    padding: 0;
    position: absolute;
    top: 44px;
    width: 100%;
    z-index: 1010;

    @media (min-width: $small-desktop-screen) {
      width: 418px;
    }

    .dropdown-option {
      border-bottom: solid 1px var(--vads-color-black);
      z-index: 1011;

      &.selected,
      &:hover {
        color: var(--vads-color-white);
        background-color: var(--vads-color-primary-dark);
      }

      &:last-child {
        border-bottom: none;
      }
    }
  }

  .dropdown-option {
    box-shadow: none;
    font-weight: 400;
    line-height: 1.3;
    margin: 0;
    max-width: 100%;
    overflow: hidden;
    padding: 0.625rem 0.7em;
    text-decoration: none;
    text-overflow: ellipsis;
    white-space: nowrap;
  }
}

.about-cc-link {
  text-decoration: none;
}

.current-pos-pin {
  border-radius: 50%;
  width: 23px;
  height: 23px;
  box-shadow: 0 0 4px 0 $facility-locator-shadow;
  border: solid 4px var(--vads-color-white);
  background-color: var(--vads-color-secondary-dark);
}

.bor-rad {
  border-radius: 5px;
}

.va-nav-breadcrumbs:focus {
  outline: 0;
}

.i-pin-card-map {
  border-radius: 50%;
  background: var(--vads-color-base-darker);
  color: var(--vads-color-white);
  justify-content: center;
  align-content: center;
  display: inline-flex;
  font-size: 15px;
  padding-top: 1px;
  width: 24px;
  height: 24px;
}

.notice-marg-pad {
  padding: 0.3125rem !important;
  margin-top: 0;
  font-size: 16px;
  font-weight: bold;
  width: 280px;
  height: 40px;
}

.icon-base {
  color: var(--vads-color-base) !important;
}

.facility-phone-group {
  display: flex;
  flex-direction: column;
}

#other-tools {
  text-align: center;
  margin: 22px auto;
  clear: both;

  @media (max-width: $small-screen) {
    width: 260px;
    white-space: pre-line;
  }
}

#mapbox-gl-container {
  max-height: 55vh;
  height: 55vh;
  display: flex;
  justify-content: center;
}

#search-area-control-container {
  z-index: 1;
}

#search-area-control {
  cursor: pointer;
  pointer-events: auto;

  @media (max-width: $small-screen) {
    height: 43px;
  }
}

// Override design system default
// because it will cause an axe failure
.fl-disabled {
  background-color: var(--vads-color-gray-medium) !important;
}

.mapboxgl-ctrl-top-center {
  position: absolute;
  pointer-events: none;
  margin: 15px 0 0 15px;
}

.mapboxgl-ctrl-bottom-center {
  bottom: 40px;
  position: absolute;
  pointer-events: none;
}

button.mapboxgl-ctrl-zoom-in {
  margin-top: 0;
  margin-bottom: 0;
  margin-right: 0;
}

button.mapboxgl-ctrl-zoom-out {
  margin-top: 0;
  margin-bottom: 0;
  margin-right: 0;
}

canvas.mapboxgl-canvas:focus {
  outline: 2px solid var(--vads-color-action-focus-on-light);
  outline-offset: 2px;
}

.clear-button {
  font-size: 16px;
  display: inline-block;
  top: -66px;
  position: relative;
  float: right;
  width: 44px;
  height: 44px;
  background-color: transparent;
  color: var(--vads-color-black);
  padding: 0;
  margin: 0;

  &:hover {
    background-color: unset;
    color: unset;
  }
}

.clear-button va-icon {
  color: var(--vads-color-black);
}

#street-city-state-zip {
  padding-right: 36px !important;
}

// Make focus styles on the Medallia 'Feedback' button consistent with focus styles in the survey
.nebula_image_button.wcagOutline:focus {
  outline: 2px solid rgb(249, 198, 66) !important;
  outline-offset: 2px !important;
  transition: none !important;
}

.success-icon {
  color: var(--vads-color-success) !important;
}