You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

158 lines
4.3 KiB

  1. .popover {
  2. position: absolute;
  3. top: 0;
  4. left: 0 #{"/* rtl:ignore */"};
  5. z-index: $zindex-popover;
  6. display: block;
  7. max-width: $popover-max-width;
  8. // Our parent element can be arbitrary since tooltips are by default inserted as a sibling of their target element.
  9. // So reset our font and text properties to avoid inheriting weird values.
  10. @include reset-text();
  11. @include font-size($popover-font-size);
  12. // Allow breaking very long words so they don't overflow the popover's bounds
  13. word-wrap: break-word;
  14. background-color: $popover-bg;
  15. background-clip: padding-box;
  16. border: $popover-border-width solid $popover-border-color;
  17. @include border-radius($popover-border-radius);
  18. @include box-shadow($popover-box-shadow);
  19. .popover-arrow {
  20. position: absolute;
  21. display: block;
  22. width: $popover-arrow-width;
  23. height: $popover-arrow-height;
  24. &::before,
  25. &::after {
  26. position: absolute;
  27. display: block;
  28. content: "";
  29. border-color: transparent;
  30. border-style: solid;
  31. }
  32. }
  33. }
  34. .bs-popover-top {
  35. > .popover-arrow {
  36. bottom: subtract(-$popover-arrow-height, $popover-border-width);
  37. &::before {
  38. bottom: 0;
  39. border-width: $popover-arrow-height ($popover-arrow-width * .5) 0;
  40. border-top-color: $popover-arrow-outer-color;
  41. }
  42. &::after {
  43. bottom: $popover-border-width;
  44. border-width: $popover-arrow-height ($popover-arrow-width * .5) 0;
  45. border-top-color: $popover-arrow-color;
  46. }
  47. }
  48. }
  49. .bs-popover-end {
  50. > .popover-arrow {
  51. left: subtract(-$popover-arrow-height, $popover-border-width);
  52. width: $popover-arrow-height;
  53. height: $popover-arrow-width;
  54. &::before {
  55. left: 0;
  56. border-width: ($popover-arrow-width * .5) $popover-arrow-height ($popover-arrow-width * .5) 0;
  57. border-right-color: $popover-arrow-outer-color;
  58. }
  59. &::after {
  60. left: $popover-border-width;
  61. border-width: ($popover-arrow-width * .5) $popover-arrow-height ($popover-arrow-width * .5) 0;
  62. border-right-color: $popover-arrow-color;
  63. }
  64. }
  65. }
  66. .bs-popover-bottom {
  67. > .popover-arrow {
  68. top: subtract(-$popover-arrow-height, $popover-border-width);
  69. &::before {
  70. top: 0;
  71. border-width: 0 ($popover-arrow-width * .5) $popover-arrow-height ($popover-arrow-width * .5);
  72. border-bottom-color: $popover-arrow-outer-color;
  73. }
  74. &::after {
  75. top: $popover-border-width;
  76. border-width: 0 ($popover-arrow-width * .5) $popover-arrow-height ($popover-arrow-width * .5);
  77. border-bottom-color: $popover-arrow-color;
  78. }
  79. }
  80. // This will remove the popover-header's border just below the arrow
  81. .popover-header::before {
  82. position: absolute;
  83. top: 0;
  84. left: 50%;
  85. display: block;
  86. width: $popover-arrow-width;
  87. margin-left: -$popover-arrow-width * .5;
  88. content: "";
  89. border-bottom: $popover-border-width solid $popover-header-bg;
  90. }
  91. }
  92. .bs-popover-start {
  93. > .popover-arrow {
  94. right: subtract(-$popover-arrow-height, $popover-border-width);
  95. width: $popover-arrow-height;
  96. height: $popover-arrow-width;
  97. &::before {
  98. right: 0;
  99. border-width: ($popover-arrow-width * .5) 0 ($popover-arrow-width * .5) $popover-arrow-height;
  100. border-left-color: $popover-arrow-outer-color;
  101. }
  102. &::after {
  103. right: $popover-border-width;
  104. border-width: ($popover-arrow-width * .5) 0 ($popover-arrow-width * .5) $popover-arrow-height;
  105. border-left-color: $popover-arrow-color;
  106. }
  107. }
  108. }
  109. .bs-popover-auto {
  110. &[data-popper-placement^="top"] {
  111. @extend .bs-popover-top;
  112. }
  113. &[data-popper-placement^="right"] {
  114. @extend .bs-popover-end;
  115. }
  116. &[data-popper-placement^="bottom"] {
  117. @extend .bs-popover-bottom;
  118. }
  119. &[data-popper-placement^="left"] {
  120. @extend .bs-popover-start;
  121. }
  122. }
  123. // Offset the popover to account for the popover arrow
  124. .popover-header {
  125. padding: $popover-header-padding-y $popover-header-padding-x;
  126. margin-bottom: 0; // Reset the default from Reboot
  127. @include font-size($font-size-base);
  128. color: $popover-header-color;
  129. background-color: $popover-header-bg;
  130. border-bottom: $popover-border-width solid $popover-border-color;
  131. @include border-top-radius($popover-inner-border-radius);
  132. &:empty {
  133. display: none;
  134. }
  135. }
  136. .popover-body {
  137. padding: $popover-body-padding-y $popover-body-padding-x;
  138. color: $popover-body-color;
  139. }