/**Variable**/
@import './helpers/mixin.scss';

.vhb-modal--wrapper {
  display: none;
  position: fixed;
  top: 0;
  left: 0;
  line-height: 1.5;
  width: calc(100% + 18px);
  height: calc(100% + 18px);
  color: $vhb-font-color;
  font-family: $vhb-font-family;
  transition: top .4s ease-in-out;
  &.is--active {
    display: block;
  }
  &.is--visible {
    &.is--mask {
      &:before {
        background-color: rgba(0, 0, 0, 0.5);
      }
    }
    &.type--message {
      .vhb-modal--box {
        opacity: 1;
        transform: translateY(0);
      }
    }
    .vhb-modal--box {
      opacity: 1;
      visibility: visible;
    }
  }
  &.is--loading {
    .vhb-modal--header,
    .vhb-modal--footer {
      position: relative;
      border-bottom-color: $vhb-loading-background-color;
      &:before {
        content: "";
        position: absolute;
        top: 0;
        left: 0;
        width: 100%;
        height: 100%;
        z-index: 1;
        user-select: none;
        background-color: $vhb-loading-background-color;
      }
    }
  }
  &:not(.lock--view) {
    pointer-events: none;
  }
  &:not(.type--message) {
    &.lock--scroll {
      overflow: hidden;
    }
    &:not(.lock--scroll) {
      overflow: auto;
    }
  }
  &.lock--view,
  &.is--mask {
    &:before {
      content: "";
      position: fixed;
      top: 0;
      left: 0;
      width: 100%;
      height: 100%;
      z-index: -1;
      pointer-events: auto;
    }
  }
  &.is--mask {
    &:before {
      background-color: rgba(0, 0, 0, 0);
    }
  }
  &.is--animat {
    &.is--mask {
      &:before {
        @include animatTransition(background-color, .2s);
      }
    }
    &.type--message {
      .vhb-modal--box {
        &:not(.is--drag) {
          @include animatTransition(all, .4s, ease-out);
        }
      }
    }
  }
  &.type--message,
  &.type--alert,
  &.type--confirm {
    .vhb-modal--body {
      white-space: normal;
      word-break: break-word;
    }
  }
  &.type--message {
    text-align: center;
    .vhb-modal--box {
      display: inline-block;
      padding: 2px 0;
      margin-top: 0;
      width: auto;
      box-shadow: 0 0 8px 0 rgba(0, 0, 0, 0.1);
      opacity: 0;
      transform: translateY(-100%);
      .vhb-modal--body {
        &:after {
          content: '';
          display: block;
          clear: both;
          height: 0;
          overflow: hidden;
          visibility: hidden;
        }
      }
      .vhb-modal--content {
        max-width: 800px;
        float: left;
      }
    }
    .vhb-modal--status-wrapper {
      font-size: 1.4em;
      padding-left: 10px;
    }
  }
  &.type--modal,
  &.type--alert,
  &.type--confirm {
    .vhb-modal--box {
      display: flex;
      flex-direction: column;
      position: fixed;
      left: 50%;
      top: 0;
      box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.2);
    }
    .vhb-modal--body {
      overflow: auto;
      .vhb-modal--content {
        overflow: auto;
      }
    }
  }

  &.type--modal {
    .vhb-modal--header {
      padding: 0.6em 4.6em 0.6em 1em;
    }
  }
  &.type--alert,
  &.type--confirm {
    .vhb-modal--status-wrapper {
      font-size: 1.6em;
      padding-left: 10px;
    }
  }
  .vhb-modal--box {
    visibility: hidden;
    width: 420px;
    background-color: $vhb-modal-body-background-color;
    border-radius: $vhb-border-radius;
    border: 1px solid $vhb-modal-border-color;
    text-align: left;
    pointer-events: auto;
    opacity: 0;
    &.is--drag {
      cursor: move;
     .vhb-modal--body,
     .vhb-modal--footer {
        &:after {
          content: "";
          position: absolute;
          top: 0;
          left: 0;
          width: 100%;
          height: 100%;
        }
      }
      .vhb-modal--body {
        overflow: hidden;
        .vhb-modal--content {
          overflow: hidden;
        }
      }
    }
  }
  &.status--info {
    .vhb-modal--status-wrapper {
      color: $vhb-info-color;
    }
  }
  &.status--warning,
  &.status--question {
    .vhb-modal--status-wrapper {
      color: $vhb-warning-color;
    }
  }
  &.status--success {
    .vhb-modal--status-wrapper {
      color: $vhb-success-color;
    }
  }
  &.status--error {
    .vhb-modal--status-wrapper {
      color: $vhb-danger-color;
    }
  }
  &.status--loading {
    .vhb-modal--status-wrapper {
      color: $vhb-disabled-color;
    }
  }
  .vhb-modal--status-wrapper {
    flex-shrink: 0;
    display: flex;
    align-items: center;
  }
  .vhb-modal--content {
    flex-grow: 1;
    padding: 0.8em 1em;
    white-space: pre-line;
  }
  .vhb-modal--header,
  .vhb-modal--body,
  .vhb-modal--footer {
    position: relative;
  }
  .vhb-modal--body {
    display: flex;
    flex-grow: 1;
  }
  .vhb-modal--header {
    flex-shrink: 0;
    font-size: 1.1em;
    font-weight: 700;
    padding: 0.6em 2.8em 0.6em 1em;
    border-bottom: 1px solid $vhb-modal-border-color;
    background-color: $vhb-modal-header-background-color;
    border-radius: $vhb-border-radius $vhb-border-radius 0 0;
    user-select: none;
    &.is--drag {
      cursor: move;
    }
    &.is--ellipsis {
      overflow: hidden;
      text-overflow: ellipsis;
      white-space: nowrap;
    }
  }
  .vhb-modal--zoom-btn,
  .vhb-modal--close-btn {
    position: absolute;
    right: 14px;
    top: 0.85em;
    z-index: 1;
    cursor: pointer;
    &:hover {
      color: $vhb-primary-color;
    }
  }
  .vhb-modal--zoom-btn {
    right: 44px;
  }
  .vhb-modal--footer {
    flex-shrink: 0;
    text-align: right;
    padding: 0.4em 1em 0.8em 1em;
  }
  &.is--maximize {
    .vhb-modal--box {
      .vhb-modal--header {
        cursor: default;
      }
    }
    .vhb-modal--resize {
      .wl-resize,
      .wr-resize,
      .swst-resize,
      .sest-resize,
      .st-resize,
      .swlb-resize,
      .selb-resize,
      .sb-resize {
        display: none;
      }
    }
  }
  .vhb-modal--resize {
    $SpaceSize: 8px;
    $SpaceWidth: 5px;
    .wl-resize,
    .wr-resize,
    .swst-resize,
    .sest-resize,
    .st-resize,
    .swlb-resize,
    .selb-resize,
    .sb-resize {
      position: absolute;
      z-index: 100;
    }
    .wl-resize,
    .wr-resize {
      width: $SpaceSize;
      height: 100%;
      top: 0;
      cursor: w-resize;
    }
    .wl-resize {
      left: -$SpaceWidth;
    }
    .wr-resize {
      right: -$SpaceWidth;
    }
    .swst-resize,
    .sest-resize,
    .swlb-resize,
    .selb-resize {
      width: $SpaceSize + 2;
      height: $SpaceSize + 2;
      z-index: 101;
    }
    .swst-resize,
    .sest-resize {
      top: -$SpaceSize;
    }
    .swlb-resize,
    .selb-resize {
      bottom: -$SpaceSize;
    }
    .sest-resize,
    .swlb-resize {
      cursor: sw-resize;
    }
    .swst-resize,
    .selb-resize {
      cursor: se-resize;
    }
    .swst-resize,
    .swlb-resize {
      left: -$SpaceSize;
    }
    .sest-resize,
    .selb-resize {
      right: -$SpaceSize;
    }
    .st-resize,
    .sb-resize {
      width: 100%;
      height: $SpaceSize;
      left: 0;
      cursor: s-resize;
    }
    .st-resize {
      top: -$SpaceWidth;
    }
    .sb-resize {
      bottom: -$SpaceWidth;
    }
  }
}

.vhb-modal--wrapper {
  font-size: $vhb-font-size;
  &.size--medium {
    font-size: $vhb-font-size-medium;
  }
  &.size--small {
    font-size: $vhb-font-size-small;
  }
  &.size--mini {
    font-size: $vhb-font-size-mini;
  }
}