@import "../../assets/scss/main";

$distanceFromActivator: 4px;
$arrowIconHeight: 8px;
$arrowMargin: 12px;
$verticalArrowMargin: 4px;

.popover {
  position: absolute;
  display: flex;
  align-content: center;
  justify-content: center;
  border: 1px solid $borderColor;
  border-radius: $borderRadius;
  box-shadow: $elevation;
  flex-direction: column;

  &__content {
    padding: 20px 24px 32px 24px;
  }

  &__wrapper {
    display: inline-flex;
    align-content: center;
    position: relative;
  }

  &__arrow {
    position: absolute;
  }

  &.bottom {
    top: calc(100% + #{$distanceFromActivator} + #{$arrowIconHeight});
    left: 50%;
    transform: translate(-50%, 0);

    .popover__arrow {
      bottom: calc(100% - 1px);
      left: 50%;
      transform: translate(-50%, 0);
    }
  }

  &.bottomLeft {
    top: calc(100% + #{$distanceFromActivator} + #{$arrowIconHeight});
    right: 0;

    .popover__arrow {
      bottom: calc(100% - 1px);
      right: $arrowMargin;
    }
  }

  &.bottomRight {
    top: calc(100% + #{$distanceFromActivator} + #{$arrowIconHeight});
    left: 0;

    .popover__arrow {
      bottom: calc(100% - 1px);
      left: $arrowMargin;
    }
  }

  &.top {
    bottom: calc(100% + #{$distanceFromActivator} + #{$arrowIconHeight});
    left: 50%;
    transform: translate(-50%, 0);

    .popover__arrow {
      top: calc(100% - 1px);
      left: 50%;
      transform: translate(-50%, 0) rotateZ(180deg);
    }
  }

  &.topLeft {
    bottom: calc(100% + #{$distanceFromActivator} + #{$arrowIconHeight});
    right: 0;

    .popover__arrow {
      top: calc(100% - 1px);
      right: $arrowMargin;
      transform: rotateZ(180deg);
    }
  }

  &.topRight {
    bottom: calc(100% + #{$distanceFromActivator} + #{$arrowIconHeight});
    left: 0;

    .popover__arrow {
      top: calc(100% - 1px);
      left: $arrowMargin;
      transform: rotateZ(180deg);
    }
  }

  &.left {
    bottom: 50%;
    right: calc(100% + #{$distanceFromActivator} + #{$arrowIconHeight});
    transform: translate(0, 50%);

    .popover__arrow {
      left: calc(100% - #{$verticalArrowMargin});
      top: calc(50% - #{$arrowIconHeight} / 2);
      transform: rotateZ(90deg);
    }
  }

  &.leftTop {
    top: 0;
    right: calc(100% + #{$distanceFromActivator} + #{$arrowIconHeight});

    .popover__arrow {
      left: calc(100% - #{$verticalArrowMargin});
      top: $arrowMargin;
      transform: rotateZ(90deg);
    }
  }

  &.leftBottom {
    bottom: 0;
    right: calc(100% + #{$distanceFromActivator} + #{$arrowIconHeight});

    .popover__arrow {
      left: calc(100% - #{$verticalArrowMargin});
      bottom: $arrowMargin;
      transform: rotateZ(90deg);
    }
  }

  &.right {
    bottom: 50%;
    left: calc(100% + #{$distanceFromActivator} + #{$arrowIconHeight});
    transform: translate(0, 50%);

    .popover__arrow {
      right: calc(100% - #{$verticalArrowMargin});
      top: calc(50% - #{$arrowIconHeight} / 2);
      transform: rotateZ(270deg);
    }
  }

  &.rightTop {
    top: 0;
    left: calc(100% + #{$distanceFromActivator} + #{$arrowIconHeight});

    .popover__arrow {
      right: calc(100% - #{$verticalArrowMargin});
      top: $arrowMargin;
      transform: rotateZ(270deg);
    }
  }

  &.rightBottom {
    bottom: 0;
    left: calc(100% + #{$distanceFromActivator} + #{$arrowIconHeight});

    .popover__arrow {
      right: calc(100% - #{$verticalArrowMargin});
      bottom: $arrowMargin;
      transform: rotateZ(270deg);
    }
  }

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

  &__title {
    @include headline;
    font-weight: $bold;
    display: flex;
    width: 100%;
    margin-left: 24px;
    margin-top: 24px;
  }

  &__cross {
    display: flex;
    margin: 8px 8px 12px 8px;
    cursor: pointer;
  }
}
