@import './var.less';
@import '../cell/var.less';

:root {
  --glm-field-label-width: @field-label-width;
  --glm-field-label-color: @field-label-color;
  --glm-field-label-margin-right: @field-label-margin-right;
  --glm-field-input-text-color: @field-input-text-color;
  --glm-field-input-error-text-color: @field-input-error-text-color;
  --glm-field-input-disabled-text-color: @field-input-disabled-text-color;
  --glm-field-placeholder-text-color: @field-placeholder-text-color;
  --glm-field-icon-size: @field-icon-size;
  --glm-field-clear-icon-size: @field-clear-icon-size;
  --glm-field-clear-icon-color: @field-clear-icon-color;
  --glm-field-right-icon-color: @field-right-icon-color;
  --glm-field-error-message-color: @field-error-message-color;
  --glm-field-error-message-font-size: @field-error-message-font-size;
  --glm-field-text-area-min-height: @field-text-area-min-height;
  --glm-field-word-limit-color: @field-word-limit-color;
  --glm-field-word-limit-font-size: @field-word-limit-font-size;
  --glm-field-word-limit-line-height: @field-word-limit-line-height;
  --glm-field-disabled-text-color: @field-disabled-text-color;
  --glm-field-required-mark-color: @field-required-mark-color;
}

.glm-field {
  &__label {
    flex: none;
    box-sizing: border-box;
    width: var(--glm-field-label-width);
    margin-right: var(--glm-field-label-margin-right);
    color: var(--glm-field-label-color);
    text-align: left;
    word-wrap: break-word;

    &--center {
      text-align: center;
    }

    &--right {
      text-align: right;
    }

    &--required {
      &::before {
        margin-right: 2px;
        color: var(--glm-field-required-mark-color);
        content: '*';
      }
    }
  }

  &--disabled {
    .glm-field__label {
      color: var(--glm-field-disabled-text-color);
    }
  }

  &__value {
    overflow: visible;
  }

  &__body {
    display: flex;
    align-items: center;
  }

  &__control {
    display: block;
    box-sizing: border-box;
    width: 100%;
    min-width: 0; // for flex-shrink in field__button
    margin: 0;
    padding: 0;
    color: var(--glm-field-input-text-color);
    line-height: inherit;
    text-align: left;
    background-color: transparent;
    border: 0;
    resize: none;
    // https://github.com/youzan/vant/pull/9418
    user-select: auto;

    &::placeholder {
      color: var(--glm-field-placeholder-text-color);
    }

    &:disabled {
      color: var(--glm-field-input-disabled-text-color);
      cursor: not-allowed;
      opacity: 1;
      // fix disabled color in mobile safari
      -webkit-text-fill-color: var(--glm-field-input-disabled-text-color);
    }

    &:read-only {
      cursor: default;
    }

    &--center {
      justify-content: center;
      text-align: center;
    }

    &--right {
      justify-content: flex-end;
      text-align: right;
    }

    &--custom {
      display: flex;
      align-items: center;
      min-height: var(--glm-cell-line-height);
    }

    &--error,
    &--error::placeholder {
      color: var(--glm-field-input-error-text-color);
      -webkit-text-fill-color: currentColor;
    }

    &--min-height {
      min-height: var(--glm-field-text-area-min-height);
    }

    // for ios wechat
    &[type='date'],
    &[type='time'],
    &[type='datetime-local'] {
      min-height: var(--glm-cell-line-height);
    }

    // for safari
    &[type='search'] {
      -webkit-appearance: none;
    }
  }

  &__clear,
  &__icon,
  &__button,
  &__right-icon {
    flex-shrink: 0;
  }

  &__clear,
  &__right-icon {
    margin-right: calc(var(--glm-padding-xs) * -1);
    padding: 0 var(--glm-padding-xs);
    line-height: inherit;
  }

  &__clear {
    color: var(--glm-field-clear-icon-color);
    font-size: var(--glm-field-clear-icon-size);
    cursor: pointer;
  }

  &__left-icon .glm-icon,
  &__right-icon .glm-icon {
    display: block;
    font-size: var(--glm-field-icon-size);
    line-height: inherit;
  }

  &__left-icon {
    margin-right: var(--glm-padding-base);
  }

  &__right-icon {
    color: var(--glm-field-right-icon-color);
  }

  &__button {
    padding-left: var(--glm-padding-xs);
  }

  &__error-message {
    color: var(--glm-field-error-message-color);
    font-size: var(--glm-field-error-message-font-size);
    text-align: left;

    &--center {
      text-align: center;
    }

    &--right {
      text-align: right;
    }
  }

  &__word-limit {
    margin-top: var(--glm-padding-base);
    color: var(--glm-field-word-limit-color);
    font-size: var(--glm-field-word-limit-font-size);
    line-height: var(--glm-field-word-limit-line-height);
    text-align: right;
  }
}
