/* stylelint-disable primer/spacing */ .tooltipped { position: relative; } // This is the tooltip bubble .tooltipped::after { position: absolute; z-index: 1000000; display: none; padding: var(--overlay-paddingBlock-condensed, 0.25rem) var(--overlay-padding-condensed, 0.5rem); font: var(--text-body-shorthand-small, normal normal 11px/1.5 $body-font); -webkit-font-smoothing: subpixel-antialiased; color: var(--fgColor-onEmphasis, var(--color-fg-on-emphasis)); 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: var(--bgColor-emphasis, var(--color-neutral-emphasis-plus)); // stylelint-disable-next-line primer/borders border-radius: var(--borderRadius-medium); 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; } } .tooltipped-no-delay:hover, .tooltipped-no-delay:active, .tooltipped-no-delay:focus { &::before, &::after { animation-delay: 0s; } } .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: 6px; } } .tooltipped-se { &::after { right: auto; left: 50%; margin-left: -$spacer-3; } } .tooltipped-sw::after { margin-right: -$spacer-3; } // Tooltips above the object .tooltipped-n, .tooltipped-ne, .tooltipped-nw { &::after { right: 50%; bottom: 100%; margin-bottom: 6px; } } .tooltipped-ne { &::after { right: auto; left: 50%; margin-left: -$spacer-3; } } .tooltipped-nw::after { margin-right: -$spacer-3; } // 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: 6px; transform: translateY(50%); } } // tooltipped to the right .tooltipped-e { &::after { bottom: 50%; left: 100%; margin-left: 6px; transform: translateY(50%); } } // Tooltip align right and left .tooltipped-align-right-1, .tooltipped-align-right-2 { &::after { right: 0; margin-right: 0; } } .tooltipped-align-right-1 { &::before { right: 10px; } } .tooltipped-align-right-2 { &::before { right: 15px; } } .tooltipped-align-left-1, .tooltipped-align-left-2 { &::after { left: 0; margin-left: 0; } } .tooltipped-align-left-1 { &::before { left: 5px; } } .tooltipped-align-left-2 { &::before { left: 10px; } } // 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: var(--overlay-width-small, 20rem); 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%; } } // Sticky tooltips // // Always show the tooltip. .tooltipped-sticky { &::before, &::after { display: inline-block; } &.tooltipped-multiline { &::after { display: table-cell; } } }