@c8y/style
Version:
Styles for Cumulocity IoT applications
147 lines (133 loc) • 3.35 kB
text/less
@import "../../mixins/_reset-text.less";
/**
* Tooltip - Tooltip overlay component
*
* Note: Uses @tooltip-* variables and @size-8 for padding.
*
* Intentionally hardcoded values:
* - Margin offsets (±3px): Off-grid positioning fine-tuning for arrow alignment
* - Padding (3px): Off-grid vertical padding for compact tooltip
*/
// Shared mixins for tooltip arrow borders
.tooltip-arrow-top-border() {
border-width: @tooltip-arrow-width @tooltip-arrow-width 0;
border-top-color: @tooltip-arrow-color;
}
.tooltip-arrow-bottom-border() {
border-width: 0 @tooltip-arrow-width @tooltip-arrow-width;
border-bottom-color: @tooltip-arrow-color;
}
.tooltip-arrow-right-border() {
border-width: @tooltip-arrow-width @tooltip-arrow-width @tooltip-arrow-width 0;
border-right-color: @tooltip-arrow-color;
}
.tooltip-arrow-left-border() {
border-width: @tooltip-arrow-width 0 @tooltip-arrow-width @tooltip-arrow-width;
border-left-color: @tooltip-arrow-color;
}
.tooltip {
position: absolute;
z-index: @zindex-tooltip;
display: block;
font-size: @font-size-small;
opacity: 0;
.reset-text();
&.in {
opacity: @tooltip-opacity;
}
&.top,
&.bs-tooltip-top {
margin-top: -3px;
padding: @tooltip-arrow-width 0;
}
&.right,
&.bs-tooltip-right {
margin-left: 3px;
padding: 0 @tooltip-arrow-width;
}
&.bottom,
&.bs-tooltip-bottom {
margin-top: 3px;
padding: @tooltip-arrow-width 0;
}
&.left,
&.bs-tooltip-left {
margin-left: -3px;
padding: 0 @tooltip-arrow-width;
}
}
// Wrapper for the tooltip content
.tooltip-inner {
padding: @size-4 @size-8;
max-width: @tooltip-max-width;
border-radius: @tooltip-radius;
background-color: @tooltip-background-default;
color: @tooltip-color-default;
text-align: center;
white-space: pre-wrap;
}
.tooltip-arrow {
position: absolute;
width: 0;
height: 0;
border-style: solid;
border-color: transparent;
}
.tooltip {
&.top .tooltip-arrow,
&.bs-tooltip-top .tooltip-arrow {
bottom: 0;
left: 50%;
margin-left: calc(@tooltip-arrow-width * -1);
.tooltip-arrow-top-border();
}
&.top-left .tooltip-arrow,
&.bs-tooltip-top-left .tooltip-arrow {
right: @tooltip-arrow-width;
bottom: 0;
margin-bottom: calc(@tooltip-arrow-width * -1);
.tooltip-arrow-top-border();
}
&.top-right .tooltip-arrow,
&.bs-tooltip-top-right .tooltip-arrow {
bottom: 0;
left: @tooltip-arrow-width;
.tooltip-arrow-top-border();
}
&.right .tooltip-arrow,
&.bs-tooltip-right .tooltip-arrow {
top: 50%;
left: 0;
.tooltip-arrow-right-border();
}
&.left .tooltip-arrow,
&.bs-tooltip-left .tooltip-arrow {
top: 50%;
right: 0;
.tooltip-arrow-left-border();
}
&.bottom .tooltip-arrow,
&.bs-tooltip-bottom .tooltip-arrow {
top: 0;
left: 50%;
.tooltip-arrow-bottom-border();
}
&.bottom-left .tooltip-arrow,
&.bs-tooltip-bottom-left .tooltip-arrow {
top: 0;
right: @tooltip-arrow-width;
.tooltip-arrow-bottom-border();
}
&.bottom-right .tooltip-arrow,
&.bs-tooltip-bottom-right .tooltip-arrow {
top: 0;
left: @tooltip-arrow-width;
.tooltip-arrow-bottom-border();
}
}
// fix for ngx-bootstrap scroll issue on hover
bs-tooltip-container {
position: fixed;
top: -9999px;
left: -9999px;
}