1
1
mirror of https://github.com/primer/css.git synced 2024-12-20 20:51:38 +03:00
css/modules/primer-tooltips/lib/tooltips.scss

281 lines
4.7 KiB
SCSS
Raw Normal View History

2017-05-11 07:56:23 +03:00
.tooltipped {
position: relative;
}
// This is the tooltip bubble
.tooltipped::after {
position: absolute;
z-index: 1000000;
display: none;
padding: 5px 8px;
font: normal normal 11px/1.5 $body-font;
-webkit-font-smoothing: subpixel-antialiased;
color: $tooltip-text-color;
text-align: center;
text-decoration: none;
text-shadow: none;
text-transform: none;
letter-spacing: normal;
word-wrap: break-word;
white-space: pre;
pointer-events: none;
content: attr(aria-label);
background: $tooltip-background-color;
border-radius: 3px;
opacity: 0;
}
// This is the tooltip arrow
.tooltipped::before {
position: absolute;
z-index: 1000001;
display: none;
width: 0;
height: 0;
color: $tooltip-background-color;
pointer-events: none;
content: "";
border: 5px solid transparent;
opacity: 0;
}
// delay animation for tooltip
@keyframes tooltip-appear {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
// This will indicate when we'll activate the tooltip
.tooltipped:hover,
.tooltipped:active,
.tooltipped:focus {
&::before,
&::after {
display: inline-block;
text-decoration: none;
animation-name: tooltip-appear;
animation-duration: $tooltip-duration;
animation-fill-mode: forwards;
animation-timing-function: ease-in;
animation-delay: $tooltip-delay;
}
}
.tooltipped-no-delay:hover,
.tooltipped-no-delay:active,
.tooltipped-no-delay:focus {
&::before,
&::after {
opacity: 1;
animation: none;
}
}
.tooltipped-multiline:hover,
.tooltipped-multiline:active,
.tooltipped-multiline:focus {
&::after {
display: table-cell;
}
}
// Tooltipped south
.tooltipped-s,
.tooltipped-se,
.tooltipped-sw {
&::after {
top: 100%;
right: 50%;
margin-top: 5px;
}
&::before {
top: auto;
right: 50%;
bottom: -5px;
margin-right: -5px;
border-bottom-color: $tooltip-background-color;
}
}
.tooltipped-se {
&::after {
right: auto;
left: 50%;
margin-left: -15px;
}
}
.tooltipped-sw::after {
margin-right: -15px;
}
// Tooltips above the object
.tooltipped-n,
.tooltipped-ne,
.tooltipped-nw {
&::after {
right: 50%;
bottom: 100%;
margin-bottom: 5px;
}
&::before {
top: -5px;
right: 50%;
bottom: auto;
margin-right: -5px;
border-top-color: $tooltip-background-color;
}
}
.tooltipped-ne {
&::after {
right: auto;
left: 50%;
margin-left: -15px;
}
}
.tooltipped-nw::after {
margin-right: -15px;
}
// Move the tooltip body to the center of the object.
.tooltipped-s::after,
.tooltipped-n::after {
transform: translateX(50%);
}
// Tooltipped to the left
.tooltipped-w {
&::after {
right: 100%;
bottom: 50%;
margin-right: 5px;
transform: translateY(50%);
}
&::before {
top: 50%;
bottom: 50%;
left: -5px;
margin-top: -5px;
border-left-color: $tooltip-background-color;
}
}
// tooltipped to the right
.tooltipped-e {
&::after {
bottom: 50%;
left: 100%;
margin-left: 5px;
transform: translateY(50%);
}
&::before {
top: 50%;
right: -5px;
bottom: 50%;
margin-top: -5px;
border-right-color: $tooltip-background-color;
}
}
// Multiline tooltips
//
// `.tooltipped-multiline` Add this class when you have long content.
// The downside is you cannot preformat the text with newlines and `[w,e]`
// are always `$tooltip-max-width` wide.
.tooltipped-multiline {
&::after {
width: max-content;
max-width: $tooltip-max-width;
word-wrap: break-word;
white-space: pre-line;
border-collapse: separate;
}
&.tooltipped-s::after,
&.tooltipped-n::after {
right: auto;
left: 50%;
transform: translateX(-50%);
}
&.tooltipped-w::after,
&.tooltipped-e::after {
right: 100%;
}
}
@media screen and (min-width: 0\0) {
// IE11
.tooltipped-multiline::after {
width: $tooltip-max-width;
}
}
// Sticky tooltips
//
// Always show the tooltip.
.tooltipped-sticky {
&::before,
&::after {
display: inline-block;
}
&.tooltipped-multiline {
&::after {
display: table-cell;
}
}
}
// Alert tooltips
//
// Colors for different alert states.
@mixin colorizeTooltip($text-color, $background-color) {
&::after {
color: $text-color;
background: $background-color;
}
&.tooltipped-s,
&.tooltipped-se,
&.tooltipped-sw {
&::before {
border-bottom-color: $background-color;
}
}
&.tooltipped-n,
&.tooltipped-ne,
&.tooltipped-nw {
&::before {
border-top-color: $background-color;
}
}
&.tooltipped-e::before {
border-right-color: $background-color;
}
&.tooltipped-w::before {
border-left-color: $background-color;
}
}
@include retina-media-query {
.tooltipped-w::after {
// weird bug on retina
margin-right: 4.5px;
}
}