@use '../../variables' as variables;

.form-select {
  --form-select-bg-color: #{variables.$input-bg};
  --form-select-indicator: #{variables.$form-select-indicator};
  --form-select-bg-position: #{variables.$form-select-bg-position};
  --form-select-bg-size: #{variables.$form-select-bg-size};
  --form-select-indicator-padding: #{variables.$form-select-indicator-padding};
  --form-select-indicator-focus: #{variables.$form-select-indicator-focus};

  appearance: none;
  background-color: var(--input-bg);
  background-image: var(--form-select-indicator);
  background-position: var(--form-select-bg-position);
  background-repeat: no-repeat;
  background-size: var(--form-select-bg-size);
  border: var(--input-border-width) solid var(--input-border-color);
  border-radius: var(--input-border-radius);
  box-shadow: var(--input-box-shadow);
  color: var(--input-color);
  display: block;
  padding: var(--input-padding-y) calc(var(--input-padding-x) * 2) var(--input-padding-y) var(--input-padding-x);
  font-family: var(--input-font-family);
  font-size: var(--input-font-size);
  font-weight: var(--input-font-weight);
  line-height: var(--input-line-height);
  vertical-align: middle;
  width: 100%;

  &:focus {
    background-image: var(--form-select-indicator-focus);
    border-color: var(--input-focus-border-color);
    box-shadow: var(--input-focus-box-shadow);
    outline: 0;

    &::-ms-value {
      // For visual consistency with other platforms/browsers,
      // suppress the default white text on blue background highlight given to
      // the selected option text when the (still closed) <select> receives focus
      // in Edge.
      // See https://github.com/twbs/bootstrap/issues/19398.
      background-color: var(--input-bg);
      color: var(--input-color);
    }
  }

  &[multiple],
  &[size]:not([size='1']) {
    background-image: none;
    height: auto;
    padding-right: var(--input-padding-x);
  }

  &:disabled {
    background-color: var(--input-disabled-bg);
    border-color: var(--input-disabled-border-color);
    color: var(--input-disabled-color);
  }

  // Remove outline from select box in FF
  &:-moz-focusring {
    color: transparent;
    text-shadow: 0 0 0 var(--input-color);
  }
}

.form-select-xs {
  font-size: var(--input-font-size-xs);
  height: var(--input-height-xs);
  padding-bottom: var(--input-padding-y-xs);
  padding-left: var(--input-padding-x-xs);
  padding-top: var(--input-padding-y-xs);
}

.form-select-sm {
  font-size: var(--input-font-size-sm);
  height: var(--input-height-sm);
  padding-bottom: var(--input-padding-y-sm);
  padding-left: var(--input-padding-x-sm);
  padding-top: var(--input-padding-y-sm);
}

.form-select-lg {
  font-size: var(--input-font-size-lg);
  height: var(--input-height-lg);
  padding-bottom: var(--input-padding-y-lg);
  padding-left: var(--input-padding-x-lg);
  padding-top: var(--input-padding-y-lg);
}

.form-select-xl {
  font-size: var(--input-font-size-xl);
  height: var(--input-height-xl);
  padding-bottom: var(--input-padding-y-xl);
  padding-left: var(--input-padding-x-xl);
  padding-top: var(--input-padding-y-xl);
}
