1
1
mirror of https://github.com/primer/css.git synced 2024-11-27 17:52:45 +03:00
css/scss/_tooltips.scss

256 lines
4.4 KiB
SCSS

$multiline-max-width: 250px;
$tooltip-background-color: rgba(0, 0, 0, 0.8);
$tooltip-text-color: #fff;
.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;
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;
-webkit-font-smoothing: subpixel-antialiased;
}
// 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;
}
// This will indicate when we'll activate the tooltip
.tooltipped:hover,
.tooltipped:active,
.tooltipped:focus {
&:before,
&:after {
display: inline-block;
text-decoration: 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 `$multiline-max-width` wide.
.tooltipped-multiline {
&:after {
width: -moz-max-content;
width: -webkit-max-content;
max-width: $multiline-max-width;
word-break: break-word;
word-wrap: normal;
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) {
// IE9 and IE10 rule sets go here
.tooltipped-multiline:after {
width: $multiline-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;
}
}
.fullscreen-overlay-enabled.dark-theme .tooltipped {
@include colorizeTooltip(#000, rgba(255, 255, 255, 0.8));
}