// Name: Popover
//
// Component: `popover`
//
// Modifiers: `popover-primary`
// `popover-success`
// `popover-info`
// `popover-warning`
// `popover-danger`
// `popover-rotate`
// `popover-scale`
//
// Markup:
//
//
//
//
// ========================================================================
// Variables
// ========================================================================
$popover-primary-color : $inverse !default;
$popover-primary-bg : $brand-primary !default;
$popover-primary-border : $brand-primary !default;
$popover-success-color : $inverse !default;
$popover-success-bg : $brand-success !default;
$popover-success-border : $brand-success !default;
$popover-info-color : $inverse !default;
$popover-info-bg : $brand-info !default;
$popover-info-border : $brand-info !default;
$popover-warning-color : $inverse !default;
$popover-warning-bg : $brand-warning !default;
$popover-warning-border : $brand-warning !default;
$popover-danger-color : $inverse !default;
$popover-danger-bg : $brand-danger !default;
$popover-danger-border : $brand-danger !default;
// Component: Popover
// ========================================================================
.popover {
padding: 0;
box-shadow: $popover-shadow;
&.bs-popover-top {
margin-bottom: $popover-arrow-width;
.arrow {
left: 50%;
bottom: 0;
}
.arrow::before,
.arrow::after {
border-bottom-width: 0;
}
.arrow::before {
bottom: -$popover-arrow-width;
margin-left: -$popover-arrow-width;
border-top-color: $popover-arrow-outer-color;
}
.arrow::after {
bottom: calc((#{$popover-arrow-width} - #{$popover-border-width}) * -1);
margin-left: -$popover-arrow-width;
border-top-color: $popover-arrow-color;
}
}
&.bs-popover-right {
margin-left: $popover-arrow-width;
.arrow {
top: 50%;
left: 0;
}
.arrow::before,
.arrow::after {
margin-top: -$popover-arrow-width;
border-left-width: 0;
}
.arrow::before {
left: -$popover-arrow-width;
border-right-color: $popover-arrow-outer-color;
}
.arrow::after {
left: calc((#{$popover-arrow-width} - #{$popover-border-width}) * -1);
border-right-color: $popover-arrow-color;
}
}
&.bs-popover-bottom {
margin-top: $popover-arrow-width;
.arrow {
top: 0;
left: 50%;
}
.arrow::before,
.arrow::after {
margin-left: -$popover-arrow-width;
border-top-width: 0;
}
.arrow::before {
top: -$popover-arrow-width;
border-bottom-color: $popover-arrow-outer-color;
}
.arrow::after {
top: calc((#{$popover-arrow-width} - #{$popover-border-width}) * -1);
border-bottom-color: $popover-header-bg;
}
// This will remove the popover-header's border just below the arrow
.popover-header::before {
position: absolute;
top: 0;
left: 50%;
display: block;
width: 20px;
margin-left: -10px;
content: "";
border-bottom: $popover-border-width solid $popover-header-bg;
}
}
&.bs-popover-left {
margin-right: $popover-arrow-width;
.arrow {
top: 50%;
right: 0;
}
.arrow::before,
.arrow::after {
margin-top: -$popover-arrow-width;
border-right-width: 0;
}
.arrow::before {
right: -$popover-arrow-width;
border-left-color: $popover-arrow-outer-color;
}
.arrow::after {
right: calc((#{$popover-arrow-width} - #{$popover-border-width}) * -1);
border-left-color: $popover-arrow-color;
}
}
&.popover-top {
@extend .bs-popover-top;
}
&.popover-bottom {
@extend .bs-popover-bottom;
}
&.popover-left {
@extend .bs-popover-left;
}
&.popover-right {
@extend .bs-popover-right;
}
&.popover-auto {
&[x-placement^="top"] {
@extend .bs-popover-top;
}
&[x-placement^="right"] {
@extend .bs-popover-right;
}
&[x-placement^="bottom"] {
@extend .bs-popover-bottom;
}
&[x-placement^="left"] {
@extend .bs-popover-left;
}
}
}
.popover-header {
margin: 0;
}
// Color Modifier
// ========================================================================
// Modifier: `popover-primary`
// -------------------------
.popover-primary {
@include popover-variant($popover-primary-color, $popover-primary-bg, $popover-primary-border);
}
// Modifier: `popover-success`
// -------------------------
.popover-success {
@include popover-variant($popover-success-color, $popover-success-bg, $popover-success-border);
}
// Modifier: `popover-info`
// -------------------------
.popover-info {
@include popover-variant($popover-info-color, $popover-info-bg, $popover-info-border);
}
// Modifier: `popover-warning`
// -------------------------
.popover-warning {
@include popover-variant($popover-warning-color, $popover-warning-bg, $popover-warning-border);
}
// Modifier: `popover-danger`
// -------------------------
.popover-danger {
@include popover-variant($popover-danger-color, $popover-danger-bg, $popover-danger-border);
}