278 lines
5.4 KiB
SCSS
278 lines
5.4 KiB
SCSS
/**
|
|
* Tooltip ([data-tooltip])
|
|
*/
|
|
|
|
[data-tooltip] {
|
|
position: relative;
|
|
|
|
&:not(a, button, input) {
|
|
border-bottom: 1px dotted;
|
|
text-decoration: none;
|
|
cursor: help;
|
|
}
|
|
|
|
&[data-placement="top"]::before,
|
|
&[data-placement="top"]::after,
|
|
&::before,
|
|
&::after {
|
|
display: block;
|
|
z-index: 99;
|
|
position: absolute;
|
|
bottom: 100%;
|
|
left: 50%;
|
|
padding: .25rem .5rem;
|
|
overflow: hidden;
|
|
transform: translate(-50%, -.25rem);
|
|
border-radius: var(--border-radius);
|
|
background: var(--tooltip-background-color);
|
|
content: attr(data-tooltip);
|
|
color: var(--tooltip-color);
|
|
font-style: normal;
|
|
font-weight: var(--font-weight);
|
|
font-size: .875rem;
|
|
text-decoration: none;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
opacity: 0;
|
|
pointer-events: none;
|
|
}
|
|
|
|
// Caret
|
|
&[data-placement="top"]::after,
|
|
&::after {
|
|
padding: 0;
|
|
transform: translate(-50%, 0rem);
|
|
border-top: .3rem solid;
|
|
border-right: .3rem solid transparent;
|
|
border-left: .3rem solid transparent;
|
|
border-radius: 0;
|
|
background-color: transparent;
|
|
content: "";
|
|
color: var(--tooltip-background-color);
|
|
}
|
|
|
|
&[data-placement="bottom"] {
|
|
&::before,
|
|
&::after {
|
|
top: 100%;
|
|
bottom: auto;
|
|
transform: translate(-50%, .25rem);
|
|
}
|
|
|
|
&:after{
|
|
transform: translate(-50%, -.3rem);
|
|
border: .3rem solid transparent;
|
|
border-bottom: .3rem solid;
|
|
}
|
|
}
|
|
|
|
&[data-placement="left"] {
|
|
&::before,
|
|
&::after {
|
|
top: 50%;
|
|
right: 100%;
|
|
bottom: auto;
|
|
left: auto;
|
|
transform: translate(-.25rem, -50%);
|
|
}
|
|
|
|
&:after{
|
|
transform: translate(.3rem, -50%);
|
|
border: .3rem solid transparent;
|
|
border-left: .3rem solid;
|
|
}
|
|
}
|
|
|
|
&[data-placement="right"] {
|
|
&::before,
|
|
&::after {
|
|
top: 50%;
|
|
right: auto;
|
|
bottom: auto;
|
|
left: 100%;
|
|
transform: translate(.25rem, -50%);
|
|
}
|
|
|
|
&:after{
|
|
transform: translate(-.3rem, -50%);
|
|
border: .3rem solid transparent;
|
|
border-right: .3rem solid;
|
|
}
|
|
}
|
|
|
|
// Display
|
|
&:focus,
|
|
&:hover {
|
|
&::before,
|
|
&::after {
|
|
opacity: 1;
|
|
}
|
|
}
|
|
|
|
|
|
@if $enable-transitions {
|
|
|
|
// Animations, excluding touch devices
|
|
@media (hover: hover) and (pointer: fine) {
|
|
&[data-placement="bottom"]:focus,
|
|
&[data-placement="bottom"]:hover
|
|
&:focus,
|
|
&:hover {
|
|
&::before,
|
|
&::after {
|
|
animation-duration: .2s;
|
|
animation-name: tooltip-slide-top;
|
|
}
|
|
|
|
&::after {
|
|
animation-name: tooltip-caret-slide-top;
|
|
}
|
|
}
|
|
|
|
&[data-placement="bottom"] {
|
|
&:focus,
|
|
&:hover {
|
|
&::before,
|
|
&::after {
|
|
animation-duration: .2s;
|
|
animation-name: tooltip-slide-bottom;
|
|
}
|
|
|
|
&::after {
|
|
animation-name: tooltip-caret-slide-bottom;
|
|
}
|
|
}
|
|
}
|
|
|
|
&[data-placement="left"] {
|
|
&:focus,
|
|
&:hover {
|
|
&::before,
|
|
&::after {
|
|
animation-duration: .2s;
|
|
animation-name: tooltip-slide-left;
|
|
}
|
|
|
|
&::after {
|
|
animation-name: tooltip-caret-slide-left;
|
|
}
|
|
}
|
|
}
|
|
|
|
&[data-placement="right"] {
|
|
&:focus,
|
|
&:hover {
|
|
&::before,
|
|
&::after {
|
|
animation-duration: .2s;
|
|
animation-name: tooltip-slide-right;
|
|
}
|
|
|
|
&::after {
|
|
animation-name: tooltip-caret-slide-right;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
@keyframes tooltip-slide-top {
|
|
from {
|
|
transform: translate(-50%, .75rem);
|
|
opacity: 0;
|
|
}
|
|
to {
|
|
transform: translate(-50%, -.25rem);
|
|
opacity: 1;
|
|
}
|
|
}
|
|
|
|
@keyframes tooltip-caret-slide-top {
|
|
from {
|
|
opacity: 0;
|
|
}
|
|
50% {
|
|
transform: translate(-50%, -.25rem);
|
|
opacity: 0;
|
|
}
|
|
to {
|
|
transform: translate(-50%, 0rem);
|
|
opacity: 1;
|
|
}
|
|
}
|
|
|
|
@keyframes tooltip-slide-bottom {
|
|
from {
|
|
transform: translate(-50%, -.75rem);
|
|
opacity: 0;
|
|
}
|
|
to {
|
|
transform: translate(-50%, .25rem);
|
|
opacity: 1;
|
|
}
|
|
}
|
|
|
|
@keyframes tooltip-caret-slide-bottom {
|
|
from {
|
|
opacity: 0;
|
|
}
|
|
50% {
|
|
transform: translate(-50%, -.5rem);
|
|
opacity: 0;
|
|
}
|
|
to {
|
|
transform: translate(-50%, -.3rem);
|
|
opacity: 1;
|
|
}
|
|
}
|
|
|
|
@keyframes tooltip-slide-left {
|
|
from {
|
|
transform: translate(.75rem, -50%);
|
|
opacity: 0;
|
|
}
|
|
to {
|
|
transform: translate(-.25rem, -50%);
|
|
opacity: 1;
|
|
}
|
|
}
|
|
|
|
@keyframes tooltip-caret-slide-left {
|
|
from {
|
|
opacity: 0;
|
|
}
|
|
50% {
|
|
transform: translate(.05rem, -50%);
|
|
opacity: 0;
|
|
}
|
|
to {
|
|
transform: translate(.3rem, -50%);
|
|
opacity: 1;
|
|
}
|
|
}
|
|
|
|
@keyframes tooltip-slide-right {
|
|
from {
|
|
transform: translate(-.75rem, -50%);
|
|
opacity: 0;
|
|
}
|
|
to {
|
|
transform: translate(.25rem, -50%);
|
|
opacity: 1;
|
|
}
|
|
}
|
|
|
|
@keyframes tooltip-caret-slide-right {
|
|
from {
|
|
opacity: 0;
|
|
}
|
|
50% {
|
|
transform: translate(-.05rem, -50%);
|
|
opacity: 0;
|
|
}
|
|
to {
|
|
transform: translate(-.3rem, -50%);
|
|
opacity: 1;
|
|
}
|
|
}
|
|
}
|
|
}
|