@import '../../scss/variables/colors';

$base-class: 'date-picker';

.#{$base-class} {
  display: inline-block;
  color: $font-primary-color;

  &__wrapper {
    position: relative;
    flex-direction: row;
    padding-bottom: 10px;
    -webkit-user-select: none;
    -moz-user-select: none;
    -ms-user-select: none;
    user-select: none;
    border: 1px solid transparent;
    transition: 0.2s border-color ease-in-out;

    &:focus {
      outline: none;
      border: 1px solid $primary-color;
      transition: 0.2s border-color ease-in-out;
      border-radius: 4px;
    }
  }

  &__months {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
  }

  &__month {
    display: table;
    margin: 0;
    -webkit-user-select: none;
    -moz-user-select: none;
    -ms-user-select: none;
    user-select: none;
  }

  &__nav-bar {
    position: absolute;
    top: 0;
    left: 50%;
    transform: translateX(-50%);
    width: calc(100% - 18px);
    display: flex;
    justify-content: space-between;
  }

  &__nav-button {
    display: flex;
    align-content: center;
    background-color: transparent;
    padding: 0;
    cursor: pointer;
    border: 1px solid transparent;
    transition: 0.2s border-color ease-in-out;

    &:hover {
      color: $hover-primary-color;
    }

    &:focus {
      outline: none;
      border: 1px solid $primary-color;
      transition: 0.2s border-color ease-in-out;
      border-radius: 4px;
    }

    &--interaction-disabled {
      display: none;
    }
  }

  &__caption {
    display: table-caption;
    margin-bottom: 12px;
    padding: 0 50px;
    line-height: 22px;
    text-align: center;
    color: $font-primary-color;

    & > div {
      font-weight: 700;
      font-size: 15px;
      text-align: center;
    }
  }

  &__weekdays {
    display: table-header-group;
  }

  &__weekdays-row {
    display: table-row;
  }

  &__weekday {
    display: table-cell;
    padding: 4px;
    color: #7a8289;
    text-align: center;
    font-size: 12px;

    abbr[title] {
      border-bottom: none;
      text-decoration: none;
    }
  }

  &__week-number {
    display: table-cell;
    padding: 5px;
    min-width: 5px;
    border-right: 1px solid #eaecec;
    color: #8b9898;
    vertical-align: middle;
    text-align: right;
    font-size: 14px;
    cursor: pointer;
  }

  &__body {
    display: table-row-group;
  }

  &__week {
    display: table-row;
  }

  &__day {
    display: table-cell;
    cursor: pointer;
    font-size: 14px;
    width: 18px;
    height: 18px;
    color: $font-primary-color;

    &:focus {
      outline: none;

      .#{$base-class}__day-content {
        box-shadow: 0 0 0 1px $primary-color;
        border-radius: 50%;
      }
    }

    &-wrapper {
      margin: 1px 0;
      padding: 0 9px;
    }

    &-content {
      width: 18px;
      height: 18px;
      line-height: 18px;
      margin: 0 auto;
      vertical-align: middle;
      text-align: center;
    }

    &--today {
      .#{$base-class}__day-content {
        box-shadow: 0 0 0 1px #a0a6ab;
        border-radius: 50%;
      }
    }

    &--selected {
      .#{$base-class}__day-content {
        background-color: #3e7ce4;
        border-radius: 50%;
        color: #f0f8ff;
      }
    }

    &--outside {
      color: #8b9898;
      cursor: default;
    }

    &--disabled {
      color: #dce0e0;
      cursor: default;
    }
  }

  &--interaction-disabled {
    .#{$base-class}__day {
      cursor: default;
    }
  }

  &__footer {
    padding-top: 5px;
  }

  &__today-button {
    border: none;
    background-color: transparent;
    background-image: none;
    box-shadow: none;
    color: #4a90e2;
    font-size: 14px;
    cursor: pointer;
  }

  &__input {
    display: inline-block;

    &-overlay-wrapper {
      position: relative;
    }

    &-overlay {
      display: block;
    }
  }

  &:not(.#{$base-class}--interaction-disabled) &__day:not(.#{$base-class}__day--disabled):not(.#{$base-class}__day--selected):not(.#{$base-class}__day--outside):hover {
    .#{$base-class}__day-content {
      background-color: #dae7fd;
      border-radius: 50%;
    }
  }

  &--range {
    .#{$base-class}__day {
      &--selected {
        .#{$base-class}__day-content {
          background-color: transparent;
          border-radius: 0;
          color: $font-primary-color;
        }

        &:not(.#{$base-class}__day--disabled):not(.#{$base-class}__day--outside):not(.#{$base-class}__day--start):not(.#{$base-class}__day--end):not(.#{$base-class}__day--single):not(.#{$base-class}__day--sunday):not(.#{$base-class}__day--monday) {
          .#{$base-class}__day-wrapper {
            background-color: #dae7fd;
          }
        }
      }

      &--start:not(.#{$base-class}__day--end):not(.#{$base-class}__day--sunday):not(.#{$base-class}__day--monday),
      &--monday.#{$base-class}__day--selected:not(.#{$base-class}__day--end) {
        .#{$base-class}__day-wrapper {
          background: linear-gradient(to left, #dae7fd 0%, #dae7fd 50%, #fff 50%, #fff 100%);
        }
      }

      &--end:not(.#{$base-class}__day--start):not(.#{$base-class}__day--monday):not(.#{$base-class}__day--sunday),
      &--sunday.#{$base-class}__day--selected:not(.#{$base-class}__day--start) {
        .#{$base-class}__day-wrapper {
          background: linear-gradient(to right, #dae7fd 0%, #dae7fd 50%, #fff 50%, #fff 100%);
        }
      }

      &--monday.#{$base-class}__day--selected:not(.#{$base-class}__day--start):not(.#{$base-class}__day--end),
      &--sunday.#{$base-class}__day--selected:not(.#{$base-class}__day--start):not(.#{$base-class}__day--end) {
        .#{$base-class}__day-content {
          background-color: #dae7fd;
          border-radius: 50%;
        }
      }

      &--start,
      &--end {
        .#{$base-class}__day-content {
          background-color: #3e7ce4;
          border-radius: 50%;
          color: #f0f8ff;
        }
      }
    }

    &__select-input {
      padding: 0 5px;
      max-width: 90px;
      border-color: transparent;
      text-align: left;
    }

    &__calendars-wrapper {
      display: flex;
      justify-content: center;
      align-items: flex-start;

      .#{$base-class}__months {
        margin: 0 -12px;
        flex-wrap: nowrap;

        &::before {
          content: '';
          width: 1px;
          height: 100%;
          top: 0;
          left: 50%;
          background-color: #e7e8e9;
          position: absolute;
        }
      }

      .#{$base-class}__month {
        padding: 0 12px;
      }
    }
  }
}
