/**
 * source: hint-core.scss
 *
 * Defines the basic styling for the tooltip.
 * Each tooltip is made of 2 parts:
 * 	1) body (:after)
 * 	2) arrow (:before)
 *
 * Classes added:
 * 	1) hint
 */

[class*="#{$hintPrefix}"] {
    position: relative;
    display: inline-block;

    &:before, &:after {
        position: absolute;

        // HACK: Trigger hardware accelerated rendering, otherwise transform was not
        // working on a hidden element
        @include vendor('transform', translate3d(0, 0, 0));

        // HACK: visibility is set to hidden because IE & Opera don't support
        // pointer-events on HTML content yet because of which hovering a hidden tooltip
        // shows the tooltip.
        visibility: hidden;
        opacity: 0;
        z-index: $hintZIndex;
        // shouldn't receive pointer events, otherwise even hovering tooltip will make it appear
        pointer-events: none;

        @include vendor('transition', 0.3s ease);
        @include vendor('transition-delay', $hintHideDelay);
    }

    &:hover:before, &:hover:after {
        visibility: visible;
        opacity: 1;
    }

    &:hover:before, &:hover:after {
        // $hintShowDelay will apply as soon as element is hovered.
        @include vendor('transition-delay', $hintShowDelay);
    }

    /**
     * tooltip arrow
     */
    &:before {
        content: '';
        position: absolute;
        background: transparent;
        border: $hintArrowBorderWidth solid transparent;
        // move z-index 1 up than :after so that it shows over box-shadow
        z-index: $hintZIndex + 1;
    }

    /**
     * tooltip body
     */
    &:after {
        background: $hintDefaultColor;
        color: white;
        padding: $hintVerticalPadding $hintHorizontalPadding;
        font-size: $hintFontSize;
        font-family: $hintFontFamily;
        line-height: $hintFontSize; // Vertical centering.
        white-space: nowrap; // Prevent breaking to new line.
    }

    // Always get content from aria-label attribute.
    &[aria-label]:after {
        content: attr(aria-label); // The magic!
    }

    // If the `data-hint` attribute is present, use it.
    // This might be deprecated in future in support of a11y.
    &[data-hint]:after {
        content: attr(data-hint); // The magic!
    }
}

// Hide tooltips if any of the supported attributes is empty.
[aria-label=''],
[data-hint=''] {
    &:before, &:after {
        display: none !important;
    }
}
