@use '../../style/themes/default.scss' as *;
@use '../../style/util.scss' as *;
@use './css-var.scss' as *;

@include set-dialog-var($ele);

.ele-dialog {
  &.el-overlay {
    height: auto;
  }

  & > .el-overlay-dialog {
    position: absolute;
    display: flex;
    flex-direction: column;
    justify-content: flex-start;
    align-items: center;

    & > .el-dialog {
      padding: 0;
      flex-shrink: 0;
      position: relative;
      background: eleVar('dialog', 'bg');
      border-radius: eleVar('dialog', 'radius');
      margin-bottom: eleVar('dialog', 'mobile-space');

      // 让 model 外层不出现滚动条
      position: absolute!important;
      left: 50%;
      top: 50%;
      margin-top: 0!important;
      transform: translate(-50%,-50%);
      max-height: calc(100% - 30px);
      max-width: calc(100% - 30px);
      display: flex;
      flex-direction: column;

      & > .el-dialog__header,
      & > .el-dialog__footer {
        flex-shrink: 0;
        border: none;
        padding: 0;
        margin: 0;
      }

      & > .el-dialog__body {
        padding: 0;
        color: inherit;
        font-size: inherit;

        overflow: scroll;
      }
    }
  }
}

/* header */
.ele-dialog-header {
  display: flex;
  align-items: center;
  box-sizing: border-box;
  padding: eleVar('dialog', 'header-padding');
  border-bottom: eleVar('dialog', 'header-border');
}

.ele-dialog-title {
  flex: 1;
  color: eleVar('dialog', 'header-color');
  font-size: eleVar('dialog', 'header-font-size');
  line-height: eleVar('dialog', 'header-line-height');
  font-weight: eleVar('dialog', 'header-font-weight');
  box-sizing: border-box;
}

/* 图标按钮 */
.ele-dialog-tool {
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  width: eleVar('dialog', 'icon-size');
  height: eleVar('dialog', 'icon-size');
  line-height: eleVar('dialog', 'icon-size');
  color: eleVar('dialog', 'icon-color');
  font-size: eleVar('dialog', 'icon-font-size');
  border-radius: eleVar('dialog', 'icon-radius');
  transition: (color $transition-base, background-color $transition-base);
  box-sizing: border-box;
  cursor: pointer;

  &:hover {
    color: eleVar('dialog', 'icon-hover-color');
    background: eleVar('dialog', 'icon-hover-bg');
  }

  & + .ele-dialog-tool {
    margin-left: eleVar('dialog', 'icon-space');
  }
}

/* body */
.ele-dialog-body {
  padding: eleVar('dialog', 'body-padding');
  box-sizing: border-box;

  &.is-form {
    padding: eleVar('dialog', 'form-body-padding');
  }
}

/* footer */
.ele-dialog-footer {
  padding: eleVar('dialog', 'footer-padding');
  border-top: eleVar('dialog', 'footer-border');
  box-sizing: border-box;
}

/* 默认位置 */
.ele-dialog-top > .el-overlay-dialog > .el-dialog {
  margin: 0;
}

.ele-dialog-center > .el-overlay-dialog > .el-dialog {
  margin: auto;
}

.ele-dialog-bottom > .el-overlay-dialog > .el-dialog {
  margin: auto auto 0 auto;
}

.ele-dialog-left > .el-overlay-dialog > .el-dialog {
  margin: auto auto auto 0;
}

.ele-dialog-right > .el-overlay-dialog > .el-dialog {
  margin: auto 0 auto auto;
}

.ele-dialog-left-top > .el-overlay-dialog > .el-dialog {
  margin: 0 auto 0 0;
}

.ele-dialog-left-bottom > .el-overlay-dialog > .el-dialog {
  margin: auto auto 0 0;
}

.ele-dialog-right-top > .el-overlay-dialog > .el-dialog {
  margin: 0 0 0 auto;
}

.ele-dialog-right-bottom > .el-overlay-dialog > .el-dialog {
  margin: auto 0 0 auto;
}

/* 支持拖拽 */
.ele-dialog-movable > .el-overlay-dialog > .el-dialog > .el-dialog__header {
  cursor: move;
  user-select: none;
}

/* 支持拉伸 */
.ele-dialog-resize-icon {
  position: absolute;
  right: 2px;
  bottom: 2px;
  display: flex;
  align-items: center;
  justify-content: center;
  color: eleVar('dialog', 'icon-color');
  font-size: 12px;
  cursor: se-resize;

  &.is-horizontal {
    cursor: e-resize;
  }

  &.is-vertical {
    cursor: s-resize;
  }
}

.ele-dialog-resizable > .el-overlay-dialog > .el-dialog,
.ele-dialog-fullscreen > .el-overlay-dialog > .el-dialog {
  display: flex;
  flex-direction: column;

  & > .el-dialog__body {
    flex: auto;
    overflow: auto;
  }
}

/* 全屏 */
.ele-dialog-fullscreen > .el-overlay-dialog > .el-dialog {
  top: 0 !important;
  left: 0 !important;
  margin: 0 !important;
  width: 100% !important;
  height: 100% !important;
  display: flex !important;
  max-width: none !important;
  min-width: auto !important;
  max-height: none !important;
  min-height: auto !important;
  border-radius: 0 !important;

  & > .el-dialog__header {
    cursor: default;

    & > .ele-dialog-resize-icon {
      display: none;
    }
  }
}

/* 同时打开多个 */
.ele-dialog-container {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  width: 100%;
  height: 100%;
  pointer-events: none;
  box-sizing: border-box;
  z-index: elVar('index', 'popper');
  overflow: hidden;
}

.ele-dialog-multiple {
  pointer-events: none !important;
  position: absolute !important;

  & > .el-overlay-dialog {
    pointer-events: none;
    overflow: hidden;

    & > .el-dialog {
      pointer-events: auto;
    }
  }
}

/* 失活状态 */
.ele-dialog-hide {
  display: none !important;
}

/* 最大宽度适应屏幕 */
.ele-dialog-responsive > .el-overlay-dialog > .el-dialog {
  max-width: calc(100% - #{eleVar('dialog', 'mobile-space')} * 2);
}

/* 限制在主体区域 */
.ele-admin-dialogs > .ele-dialog {
  pointer-events: auto;
  position: absolute !important;
}
