/**Variable**/
%ButtonHover {
  color: lighten($s-primary-color, 6%);
  border-color: lighten($s-primary-color, 10%);
}

.s-form {
  position: relative;
  font-size: $s-font-size;
  color: $s-font-color;
  font-family: $s-font-family;
  background-color: $s-form-background-color;
  text-align: left;
  &.is--colon {
    .s-form--item-title {
      &:after {
        content: ":";
        font-size: 1.2em;
        font-family: SimSun, sans-serif;
      }
    }
  }
}

.s-form--item-title,
.s-form--item-content,
.s-form--item-trigger-node {
  display: inline-block;
  vertical-align: middle;
}

.s-form--item-title {
  max-width: 320px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  padding-right: 0.8em;
  .s-form--item-title-prefix,
  .s-form--item-title-suffix {
    & > [class*="s-icon--"] {
      margin-top: -0.2em;
    }
  }
  .s-form--item-title-prefix {
    margin-right: 0.25em;
  }
  .s-form--item-title-suffix {
    margin-left: 0.25em;
  }
}

.s-form--item-trigger-node {
  font-size: 12px;
  min-width: 100px;
  color: #909399;
  text-align: center;
  user-select: none;
  cursor: pointer;
  .s-form--item-trigger-icon {
    margin: 0 0.25em;
    transition: all 0.1s;
  }
}

.s-form--item-valid {
  position: absolute;
  width: 100%;
  font-size: 12px;
  line-height: 1.2em;
  color: $s-form-validate-error-color;
  background-color: $s-form-validate-error-background-color;
  z-index: 1;
  opacity: 0;
  transform-origin: center top;
  transform: scaleY(0);
  transition: all 0.2s ease-in-out;
}

.s-form--item {
  padding: 0.5em 0.8em 0.5em 0;
  display: none;
  &.is--active {
    &:not(.is--hidden) {
      display: inline-block;
    }
  }
  &.is--span {
    .s-default-input:not([type="submit"]):not([type="reset"]),
    .s-default-textarea,
    .s-default-select,
    .s-input,
    .s-textarea,
    .s-select {
      width: 100%;
    }
  }
  &.is--required {
    .s-form--item-title {
      &:before {
        content: "*";
        color: $s-form-validate-error-color;
        margin-right: 0.2em;
        font-family: $s-icon-font-family;
        font-weight: normal;
      }
    }
  }
  &.is--error {
    .s-input > .s-input--inner,
    .s-textarea > .s-input--textarea,
    .s-select,
    .s-select.is--active > .s-input .s-input--inner,
    .s-default-input,
    .s-default-textarea,
    .s-default-select {
      border-color: $s-form-validate-error-color;
    }
    .s-input>.s-input--inner,
    .s-textarea>.s-input--textarea,
    .s-default-input[type="text"],
    .s-default-input[type="search"],
    .s-default-textarea,
    .s-default-select {
      &:focus {
        border-color: $s-form-validate-error-color;
      }
    }
    .s-form--item-valid {
      opacity: 1;
      transform: scaleY(1);
    }
  }
  .s-form--item-inner {
    display: flex;
    flex-direction: row;
    align-items: center;
    .s-form--item-title {
      flex-shrink: 0;
    }
    .s-form--item-content {
      position: relative;
      flex-grow: 1;
    }
  }
  .s-default-input,
  .s-default-textarea,
  .s-default-select {
    outline: 0;
    border: 1px solid $s-input-border-color;
    border-radius: 0.25em;
  }
  .s-default-input,
  .s-default-select {
    height: $s-button-height-default;
  }
  .s-default-input {
    padding: 0 0.8em;
  }
  .s-default-textarea {
    padding: 0.3em 0.6em;
  }
  .s-default-input[type="number"] {
    padding-right: 0.2em;
  }
  .s-default-input[type="text"],
  .s-default-input[type="search"] {
    padding: 0 1em;
  }
  .s-default-input[type="text"],
  .s-default-input[type="search"],
  .s-default-textarea,
  .s-default-select {
    color: $s-font-color;
    &:focus {
      border: 1px solid $s-primary-color;
    }
    &[disabled] {
      cursor: not-allowed;
      background-color: #f3f3f3;
    }
  }
  .s-default-input[type="submit"],
  .s-default-input[type="reset"] {
    line-height: $s-button-height-default - 2px;
    background-color: #fff;
    cursor: pointer;
    &:hover {
      @extend %ButtonHover;
    }
    &:active {
      color: darken($s-primary-color, 2%);
      border-color: darken($s-primary-color, 2%);
    }
  }
  .s-default-input {
    &[type="date"]::-webkit-inner-spin-button {
      margin-top: 6px;
    }
    &[type="date"]::-webkit-inner-spin-button,
    &[type="number"]::-webkit-inner-spin-button {
      height: 24px;
    }
    &::placeholder {
      color: $s-input-placeholder-color;
    }
  }
  .s-default-input[type="text"],
  .s-default-input[type="search"],
  .s-default-textarea,
  .s-default-select {
    width: 180px;
  }
  .s-default-textarea {
    resize: none;
    vertical-align: middle;
    &::placeholder {
      color: $s-input-placeholder-color;
    }
  }
}

.s-form {
  .s-form--item-inner {
    min-height: $s-form-item-min-height-default;
    & > .align--center {
      text-align: center;
    }
    & > .align--left {
      text-align: left;
    }
    & > .align--right {
      text-align: right;
    }
  }
  &.size--medium {
    font-size: $s-font-size-medium;
    .s-form--item-inner {
      min-height: $s-form-item-min-height-medium;
    }
    .s-default-input[type="submit"],
    .s-default-input[type="reset"] {
      line-height: $s-button-height-medium - 2px;
    }
    .s-default-input,
    .s-default-input,
    .s-default-select {
      height: $s-button-height-medium;
    }
  }
  &.size--small {
    font-size: $s-font-size-small;
    .s-form--item-inner {
      min-height: $s-form-item-min-height-small;
    }
    .s-default-input[type="submit"],
    .s-default-input[type="reset"] {
      line-height: $s-button-height-small - 2px;
    }
    .s-default-input,
    .s-default-input,
    .s-default-select {
      height: $s-button-height-small;
    }
  }
  &.size--mini {
    font-size: $s-font-size-mini;
    .s-form--item-inner {
      min-height: $s-form-item-min-height-mini;
    }
    .s-default-input[type="submit"],
    .s-default-input[type="reset"] {
      line-height: $s-button-height-mini - 2px;
    }
    .s-default-input,
    .s-default-input,
    .s-default-select {
      height: $s-button-height-mini;
    }
  }
}