@import '../colors.css';
@import '../variables.css';
@import '../input/config.css';
@import './config.css';

.dropdown {
  position: relative;

  @apply --reset;

  &:not(.active) {
    & > .values {
      max-height: 0;
      visibility: hidden;
    }
  }

  &.active {
    & > .label,
    & > .value {
      opacity: 0.5;
    }

    & > .values {
      box-shadow: var(--zdepth-shadow-1);
      max-height: var(--dropdown-overflow-max-height);
      visibility: visible;
    }
  }

  &:not(.up) > .values {
    bottom: auto;
    top: 0;
  }

  &.up > .values {
    bottom: 0;
    top: auto;
  }

  &.disabled {
    cursor: normal;
    pointer-events: none;
  }
}

.value {
  & > input {
    cursor: pointer;
  }

  &::after {
    border-left: var(--dropdown-value-border-size) solid transparent;
    border-right: var(--dropdown-value-border-size) solid transparent;
    border-top: var(--dropdown-value-border-size) solid var(--input-text-bottom-border-color);
    content: '';
    height: 0;
    pointer-events: none;
    position: absolute;
    right: var(--input-chevron-offset);
    top: 50%;
    transition: transform var(--animation-duration) var(--animation-curve-default);
    width: 0;
  }
}

.field {
  cursor: pointer;
  padding: var(--input-padding) 0;
  position: relative;

  &.errored {
    padding-bottom: 0;

    & > .label {
      color: var(--input-text-error-color);
    }

    & > .templateValue {
      border-bottom: 1px solid var(--input-text-error-color);
    }

    & > .label > .required {
      color: var(--input-text-error-color);
    }
  }

  &.disabled {
    cursor: normal;
    pointer-events: none;

    & > .templateValue {
      border-bottom-style: dotted;
      opacity: 0.7;
    }
  }
}

.templateValue {
  background-color: var(--input-text-background-color);
  border-bottom: 1px solid var(--input-text-bottom-border-color);
  color: var(--color-text);
  min-height: var(--input-field-height);
  padding: var(--input-field-padding) 0;
  position: relative;
}

.label {
  color: var(--input-text-label-color);
  font-size: var(--input-label-font-size);
  left: 0;
  line-height: var(--input-field-font-size);
  position: absolute;
  top: var(--input-focus-label-top);

  & .required {
    color: var(--input-text-error-color);
  }
}

.error {
  color: var(--input-text-error-color);
  font-size: var(--input-label-font-size);
  line-height: var(--input-underline-height);
  margin-bottom: calc(-1 * var(--input-underline-height));
}

.values {
  background-color: var(--dropdown-color-white);
  border-radius: var(--dropdown-value-border-radius);
  list-style: none;
  margin: 0;
  overflow-y: auto;
  padding: 0;
  position: absolute;
  transition-duration: var(--animation-duration);
  transition-property: max-height, box-shadow;
  transition-timing-function: var(--animation-curve-default);
  width: 100%;
  z-index: var(--z-index-high);

  & > * {
    cursor: pointer;
    overflow: hidden;
    padding: var(--unit);
    position: relative;

    &:hover:not(.disabled) {
      background-color: var(--dropdown-value-hover-background);
    }

    &.selected {
      color: var(--dropdown-color-primary);
    }

    &.disabled {
      color: var(--dropdown-color-disabled);
      cursor: not-allowed;
    }
  }

  &::-webkit-scrollbar {
    height: 0;
    width: 0;
  }
}
