216 lines
5.3 KiB
SCSS
216 lines
5.3 KiB
SCSS
|
@use "sass:map";
|
||
|
@use "../settings" as *;
|
||
|
|
||
|
@if map.get($modules, "components/tooltip") {
|
||
|
/**
|
||
|
* Tooltip ([data-tooltip])
|
||
|
*/
|
||
|
|
||
|
#{$parent-selector} [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: 0.25rem 0.5rem;
|
||
|
overflow: hidden;
|
||
|
transform: translate(-50%, -0.25rem);
|
||
|
border-radius: var(#{$css-var-prefix}border-radius);
|
||
|
background: var(#{$css-var-prefix}tooltip-background-color);
|
||
|
content: attr(data-tooltip);
|
||
|
color: var(#{$css-var-prefix}tooltip-color);
|
||
|
font-style: normal;
|
||
|
font-weight: var(#{$css-var-prefix}font-weight);
|
||
|
font-size: 0.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: 0.3rem solid;
|
||
|
border-right: 0.3rem solid transparent;
|
||
|
border-left: 0.3rem solid transparent;
|
||
|
border-radius: 0;
|
||
|
background-color: transparent;
|
||
|
content: "";
|
||
|
color: var(#{$css-var-prefix}tooltip-background-color);
|
||
|
}
|
||
|
|
||
|
&[data-placement="bottom"] {
|
||
|
&::before,
|
||
|
&::after {
|
||
|
top: 100%;
|
||
|
bottom: auto;
|
||
|
transform: translate(-50%, 0.25rem);
|
||
|
}
|
||
|
|
||
|
&:after {
|
||
|
transform: translate(-50%, -0.3rem);
|
||
|
border: 0.3rem solid transparent;
|
||
|
border-bottom: 0.3rem solid;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
&[data-placement="left"] {
|
||
|
&::before,
|
||
|
&::after {
|
||
|
top: 50%;
|
||
|
right: 100%;
|
||
|
bottom: auto;
|
||
|
left: auto;
|
||
|
transform: translate(-0.25rem, -50%);
|
||
|
}
|
||
|
|
||
|
&:after {
|
||
|
transform: translate(0.3rem, -50%);
|
||
|
border: 0.3rem solid transparent;
|
||
|
border-left: 0.3rem solid;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
&[data-placement="right"] {
|
||
|
&::before,
|
||
|
&::after {
|
||
|
top: 50%;
|
||
|
right: auto;
|
||
|
bottom: auto;
|
||
|
left: 100%;
|
||
|
transform: translate(0.25rem, -50%);
|
||
|
}
|
||
|
|
||
|
&:after {
|
||
|
transform: translate(-0.3rem, -50%);
|
||
|
border: 0.3rem solid transparent;
|
||
|
border-right: 0.3rem solid;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// Display
|
||
|
&:focus,
|
||
|
&:hover {
|
||
|
&::before,
|
||
|
&::after {
|
||
|
opacity: 1;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
@if $enable-transitions {
|
||
|
// Animations, excluding touch devices
|
||
|
@media (hover: hover) and (pointer: fine) {
|
||
|
// Default (top)
|
||
|
&:focus,
|
||
|
&:hover {
|
||
|
&::before,
|
||
|
&::after {
|
||
|
#{$css-var-prefix}tooltip-slide-to: translate(-50%, -0.25rem);
|
||
|
transform: translate(-50%, 0.75rem);
|
||
|
animation-duration: 0.2s;
|
||
|
animation-fill-mode: forwards;
|
||
|
animation-name: tooltip-slide;
|
||
|
opacity: 0;
|
||
|
}
|
||
|
|
||
|
&::after {
|
||
|
#{$css-var-prefix}tooltip-caret-slide-to: translate(-50%, 0rem);
|
||
|
transform: translate(-50%, -0.25rem);
|
||
|
animation-name: tooltip-caret-slide;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// Bottom
|
||
|
&[data-placement="bottom"] {
|
||
|
&:focus,
|
||
|
&:hover {
|
||
|
&::before,
|
||
|
&::after {
|
||
|
#{$css-var-prefix}tooltip-slide-to: translate(-50%, 0.25rem);
|
||
|
transform: translate(-50%, -0.75rem);
|
||
|
animation-name: tooltip-slide;
|
||
|
}
|
||
|
|
||
|
&::after {
|
||
|
#{$css-var-prefix}tooltip-caret-slide-to: translate(-50%, -0.3rem);
|
||
|
transform: translate(-50%, -0.5rem);
|
||
|
animation-name: tooltip-caret-slide;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// Left
|
||
|
&[data-placement="left"] {
|
||
|
&:focus,
|
||
|
&:hover {
|
||
|
&::before,
|
||
|
&::after {
|
||
|
#{$css-var-prefix}tooltip-slide-to: translate(-0.25rem, -50%);
|
||
|
transform: translate(0.75rem, -50%);
|
||
|
animation-name: tooltip-slide;
|
||
|
}
|
||
|
|
||
|
&::after {
|
||
|
#{$css-var-prefix}tooltip-caret-slide-to: translate(0.3rem, -50%);
|
||
|
transform: translate(0.05rem, -50%);
|
||
|
animation-name: tooltip-caret-slide;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// Right
|
||
|
&[data-placement="right"] {
|
||
|
&:focus,
|
||
|
&:hover {
|
||
|
&::before,
|
||
|
&::after {
|
||
|
#{$css-var-prefix}tooltip-slide-to: translate(0.25rem, -50%);
|
||
|
transform: translate(-0.75rem, -50%);
|
||
|
animation-name: tooltip-slide;
|
||
|
}
|
||
|
|
||
|
&::after {
|
||
|
#{$css-var-prefix}tooltip-caret-slide-to: translate(-0.3rem, -50%);
|
||
|
transform: translate(-0.05rem, -50%);
|
||
|
animation-name: tooltip-caret-slide;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
@keyframes tooltip-slide {
|
||
|
to {
|
||
|
transform: var(#{$css-var-prefix}tooltip-slide-to);
|
||
|
opacity: 1;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
@keyframes tooltip-caret-slide {
|
||
|
50% {
|
||
|
opacity: 0;
|
||
|
}
|
||
|
to {
|
||
|
transform: var(#{$css-var-prefix}tooltip-caret-slide-to);
|
||
|
opacity: 1;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|