/*! * # Fomantic-UI - Popup * http://github.com/fomantic/Fomantic-UI/ * * * Released under the MIT license * http://opensource.org/licenses/MIT * */ /******************************* Theme *******************************/ @type : 'module'; @element : 'popup'; @import (multiple) '../../theme.config'; /******************************* Popup *******************************/ .ui.popup { display: none; position: absolute; top: 0; right: 0; /* Fixes content being squished when inline (moz only) */ min-width: min-content; z-index: @zIndex; border: @border; line-height: @lineHeight; max-width: @maxWidth; background: @background; padding: @verticalPadding @horizontalPadding; font-weight: @fontWeight; font-style: @fontStyle; color: @color; border-radius: @borderRadius; box-shadow: @boxShadow; } .ui.popup > .header { padding: 0; font-family: @headerFont; font-size: @headerFontSize; line-height: @headerLineHeight; font-weight: @headerFontWeight; } .ui.popup > .header + .content { padding-top: @headerDistance; } .ui.popup:before { position: absolute; content: ''; width: @arrowSize; height: @arrowSize; background: @arrowBackground; transform: rotate(45deg); z-index: @arrowZIndex; box-shadow: @arrowBoxShadow; } /******************************* Types *******************************/ & when (@variationPopupTooltip) { /*-------------- Tooltip ---------------*/ /* Content */ [data-tooltip] { position: relative; } /* Arrow */ [data-tooltip]:before { pointer-events: none; position: absolute; content: ''; font-size: @medium; width: @arrowSize; height: @arrowSize; background: @tooltipArrowBackground; transform: rotate(45deg); z-index: @arrowZIndex; box-shadow: @tooltipArrowBoxShadow; } /* Popup */ [data-tooltip]:after { pointer-events: none; content: attr(data-tooltip); position: absolute; text-transform: none; text-align: left; white-space: nowrap; font-size: @tooltipFontSize; border: @tooltipBorder; line-height: @tooltipLineHeight; max-width: @tooltipMaxWidth; background: @tooltipBackground; padding: @tooltipPadding; font-weight: @tooltipFontWeight; font-style: @tooltipFontStyle; color: @tooltipColor; border-radius: @tooltipBorderRadius; box-shadow: @tooltipBoxShadow; z-index: @tooltipZIndex; } /* Default Position (Top Center) */ [data-tooltip]:not([data-position]):before { top: auto; right: auto; bottom: 100%; left: 50%; background: @tooltipArrowBottomBackground; margin-left: @tooltipArrowHorizontalOffset; margin-bottom: -@tooltipArrowVerticalOffset; } [data-tooltip]:not([data-position]):after { left: 50%; transform: translateX(-50%); bottom: 100%; margin-bottom: @tooltipDistanceAway; } /* Animation */ [data-tooltip]:before, [data-tooltip]:after { pointer-events: none; visibility: hidden; opacity: 0; transition: transform @tooltipDuration @tooltipEasing, opacity @tooltipDuration @tooltipEasing ; } [data-tooltip]:before { transform: rotate(45deg) scale(0) !important; transform-origin: center top; } [data-tooltip]:after { transform-origin: center bottom; } [data-tooltip]:hover:before, [data-tooltip]:hover:after { visibility: visible; pointer-events: auto; opacity: 1; } [data-tooltip]:hover:before { transform: rotate(45deg) scale(1) !important; } /* Animation Position */ [data-tooltip]:after, [data-tooltip][data-position="top center"]:after, [data-tooltip][data-position="bottom center"]:after { transform: translateX(-50%) scale(0) !important; } [data-tooltip]:hover:after, [data-tooltip][data-position="bottom center"]:hover:after { transform: translateX(-50%) scale(1) !important; } [data-tooltip][data-position="left center"]:after, [data-tooltip][data-position="right center"]:after { transform: translateY(-50%) scale(0) !important; } [data-tooltip][data-position="left center"]:hover:after, [data-tooltip][data-position="right center"]:hover:after { transform: translateY(-50%) scale(1) !important; } [data-tooltip][data-position="top left"]:after, [data-tooltip][data-position="top right"]:after, [data-tooltip][data-position="bottom left"]:after, [data-tooltip][data-position="bottom right"]:after { transform: scale(0) !important; } [data-tooltip][data-position="top left"]:hover:after, [data-tooltip][data-position="top right"]:hover:after, [data-tooltip][data-position="bottom left"]:hover:after, [data-tooltip][data-position="bottom right"]:hover:after { transform: scale(1) !important; } & when (@variationPopupFixed) { [data-tooltip][data-variation~="fixed"]:after { white-space: normal; width: @maxWidth; } [data-tooltip][data-variation*="wide fixed"]:after { width: @wideWidth; } [data-tooltip][data-variation*="very wide fixed"]:after { width: @veryWideWidth; } @media only screen and (max-width: @largestMobileScreen) { [data-tooltip][data-variation~="fixed"]:after { width: @maxWidth; } } } & when (@variationPopupInverted) { /*-------------- Inverted ---------------*/ /* Arrow */ [data-tooltip][data-inverted]:before { box-shadow: none !important; } /* Arrow Position */ [data-tooltip][data-inverted]:before { background: @invertedArrowBottomBackground; } /* Popup */ [data-tooltip][data-inverted]:after { background: @tooltipInvertedBackground; color: @tooltipInvertedColor; border: @tooltipInvertedBorder; box-shadow: @tooltipInvertedBoxShadow; } [data-tooltip][data-inverted]:after .header { background: @tooltipInvertedHeaderBackground; color: @tooltipInvertedHeaderColor; } } & when (@variationPopupPosition) { /*-------------- Position ---------------*/ & when (@variationPopupTop) { [data-position~="top"][data-tooltip]:before { background: @arrowBottomBackground; } & when (@variationPopupCenter) { /* Top Center */ [data-position="top center"][data-tooltip]:after { top: auto; right: auto; left: 50%; bottom: 100%; transform: translateX(-50%); margin-bottom: @tooltipDistanceAway; } [data-position="top center"][data-tooltip]:before { top: auto; right: auto; bottom: 100%; left: 50%; background: @tooltipArrowTopBackground; margin-left: @tooltipArrowHorizontalOffset; margin-bottom: -@tooltipArrowVerticalOffset; } } & when (@variationPopupLeft) { /* Top Left */ [data-position="top left"][data-tooltip]:after { top: auto; right: auto; left: 0; bottom: 100%; margin-bottom: @tooltipDistanceAway; } [data-position="top left"][data-tooltip]:before { top: auto; right: auto; bottom: 100%; left: @arrowDistanceFromEdge; margin-left: @tooltipArrowHorizontalOffset; margin-bottom: -@tooltipArrowVerticalOffset; } } & when (@variationPopupRight) { /* Top Right */ [data-position="top right"][data-tooltip]:after { top: auto; left: auto; right: 0; bottom: 100%; margin-bottom: @tooltipDistanceAway; } [data-position="top right"][data-tooltip]:before { top: auto; left: auto; bottom: 100%; right: @arrowDistanceFromEdge; margin-left: @tooltipArrowHorizontalOffset; margin-bottom: -@tooltipArrowVerticalOffset; } } } & when (@variationPopupBottom) { [data-position~="bottom"][data-tooltip]:before { background: @arrowTopBackground; box-shadow: @bottomArrowBoxShadow; } & when (@variationPopupCenter) { /* Bottom Center */ [data-position="bottom center"][data-tooltip]:after { bottom: auto; right: auto; left: 50%; top: 100%; transform: translateX(-50%); margin-top: @tooltipDistanceAway; } [data-position="bottom center"][data-tooltip]:before { bottom: auto; right: auto; top: 100%; left: 50%; margin-left: @tooltipArrowHorizontalOffset; margin-top: -@tooltipArrowVerticalOffset; } } & when (@variationPopupLeft) { /* Bottom Left */ [data-position="bottom left"][data-tooltip]:after { left: 0; top: 100%; margin-top: @tooltipDistanceAway; } [data-position="bottom left"][data-tooltip]:before { bottom: auto; right: auto; top: 100%; left: @arrowDistanceFromEdge; margin-left: @tooltipArrowHorizontalOffset; margin-top: -@tooltipArrowVerticalOffset; } } & when (@variationPopupRight) { /* Bottom Right */ [data-position="bottom right"][data-tooltip]:after { right: 0; top: 100%; margin-top: @tooltipDistanceAway; } [data-position="bottom right"][data-tooltip]:before { bottom: auto; left: auto; top: 100%; right: @arrowDistanceFromEdge; margin-left: @tooltipArrowVerticalOffset; margin-top: -@tooltipArrowHorizontalOffset; } } } & when (@variationPopupCenter) { & when (@variationPopupLeft) { /* Left Center */ [data-position="left center"][data-tooltip]:after { right: 100%; top: 50%; margin-right: @tooltipDistanceAway; transform: translateY(-50%); } [data-position="left center"][data-tooltip]:before { right: 100%; top: 50%; margin-top: @tooltipArrowVerticalOffset; margin-right: @tooltipArrowHorizontalOffset; background: @arrowCenterBackground; box-shadow: @leftArrowBoxShadow; } } & when (@variationPopupRight) { /* Right Center */ [data-position="right center"][data-tooltip]:after { left: 100%; top: 50%; margin-left: @tooltipDistanceAway; transform: translateY(-50%); } [data-position="right center"][data-tooltip]:before { left: 100%; top: 50%; margin-top: @tooltipArrowHorizontalOffset; margin-left: -@tooltipArrowVerticalOffset; background: @arrowCenterBackground; box-shadow: @rightArrowBoxShadow; } } } & when (@variationPopupInverted) { /* Inverted Arrow Color */ & when (@variationPopupBottom) { [data-inverted][data-position~="bottom"][data-tooltip]:before { background: @invertedArrowTopBackground; box-shadow: @bottomArrowBoxShadow; } } & when (@variationPopupCenter) { & when (@variationPopupLeft) { [data-inverted][data-position="left center"][data-tooltip]:before { background: @invertedArrowCenterBackground; box-shadow: @leftArrowBoxShadow; } } & when (@variationPopupRight) { [data-inverted][data-position="right center"][data-tooltip]:before { background: @invertedArrowCenterBackground; box-shadow: @rightArrowBoxShadow; } } } & when (@variationPopupTop) { [data-inverted][data-position~="top"][data-tooltip]:before { background: @invertedArrowBottomBackground; } } } & when (@variationPopupBottom) { [data-position~="bottom"][data-tooltip]:before { transform-origin: center bottom; } [data-position~="bottom"][data-tooltip]:after { transform-origin: center top; } } & when (@variationPopupCenter) { & when (@variationPopupLeft) { [data-position="left center"][data-tooltip]:before { transform-origin: top center; } [data-position="left center"][data-tooltip]:after { transform-origin: right center; } } & when (@variationPopupRight) { [data-position="right center"][data-tooltip]:before { transform-origin: right center; } [data-position="right center"][data-tooltip]:after { transform-origin: left center; } } } } & when (@variationPopupBasic) { /*-------------- Basic ---------------*/ [data-tooltip][data-variation~="basic"]:before { display: none; } } } /*-------------- Spacing ---------------*/ .ui.popup { margin: 0; } & when (@variationPopupTop) { /* Extending from Top */ .ui.top.popup { margin: 0 0 @popupDistanceAway; } & when (@variationPopupLeft) { .ui.top.left.popup { transform-origin: left bottom; } } & when (@variationPopupCenter) { .ui.top.center.popup { transform-origin: center bottom; } } & when (@variationPopupRight) { .ui.top.right.popup { transform-origin: right bottom; } } } & when (@variationPopupCenter) { /* Extending from Vertical Center */ & when (@variationPopupLeft) { .ui.left.center.popup { margin: 0 @popupDistanceAway 0 0; transform-origin: right 50%; } } & when (@variationPopupRight) { .ui.right.center.popup { margin: 0 0 0 @popupDistanceAway; transform-origin: left 50%; } } } & when (@variationPopupBottom) { /* Extending from Bottom */ .ui.bottom.popup { margin: @popupDistanceAway 0 0; } & when (@variationPopupLeft) { .ui.bottom.left.popup { transform-origin: left top; } } & when (@variationPopupCenter) { .ui.bottom.center.popup { transform-origin: center top; } } & when (@variationPopupRight) { .ui.bottom.right.popup { transform-origin: right top; } } /*-------------- Pointer ---------------*/ /*--- Below ---*/ .ui.bottom.center.popup:before { margin-left: @arrowOffset; top: @arrowOffset; left: 50%; right: auto; bottom: auto; box-shadow: @bottomArrowBoxShadow; } .ui.bottom.left.popup { margin-left: @boxArrowOffset; } /*rtl:rename*/ .ui.bottom.left.popup:before { top: @arrowOffset; left: @arrowDistanceFromEdge; right: auto; bottom: auto; margin-left: 0; box-shadow: @bottomArrowBoxShadow; } .ui.bottom.right.popup { margin-right: @boxArrowOffset; } /*rtl:rename*/ .ui.bottom.right.popup:before { top: @arrowOffset; right: @arrowDistanceFromEdge; bottom: auto; left: auto; margin-left: 0; box-shadow: @bottomArrowBoxShadow; } } & when (@variationPopupTop) { /*--- Above ---*/ & when (@variationPopupCenter) { .ui.top.center.popup:before { top: auto; right: auto; bottom: @arrowOffset; left: 50%; margin-left: @arrowOffset; } } & when (@variationPopupLeft) { .ui.top.left.popup { margin-left: @boxArrowOffset; } /*rtl:rename*/ .ui.top.left.popup:before { bottom: @arrowOffset; left: @arrowDistanceFromEdge; top: auto; right: auto; margin-left: 0; } } & when (@variationPopupRight) { .ui.top.right.popup { margin-right: @boxArrowOffset; } /*rtl:rename*/ .ui.top.right.popup:before { bottom: @arrowOffset; right: @arrowDistanceFromEdge; top: auto; left: auto; margin-left: 0; } } } & when (@variationPopupCenter) { /*--- Left Center ---*/ /*rtl:rename*/ & when (@variationPopupLeft) { .ui.left.center.popup:before { top: 50%; right: @arrowOffset; bottom: auto; left: auto; margin-top: @arrowOffset; box-shadow: @leftArrowBoxShadow; } } & when (@variationPopupRight) { /*--- Right Center ---*/ /*rtl:rename*/ .ui.right.center.popup:before { top: 50%; left: @arrowOffset; bottom: auto; right: auto; margin-top: @arrowOffset; box-shadow: @rightArrowBoxShadow; } } & when (@variationPopupLeft) or (@variationPopupRight) { .ui.right.center.popup:before, .ui.left.center.popup:before { background: @arrowCenterBackground; } } } & when (@variationPopupBottom) { /* Arrow Color By Location */ .ui.bottom.popup:before { background: @arrowTopBackground; } } & when (@variationPopupTop) { .ui.top.popup:before { background: @arrowBottomBackground; } } & when (@variationPopupInverted) { & when (@variationPopupBottom) { /* Inverted Arrow Color */ .ui.inverted.bottom.popup:before { background: @invertedArrowTopBackground; } } & when (@variationPopupCenter) { .ui.inverted.right.center.popup:before, .ui.inverted.left.center.popup:before { background: @invertedArrowCenterBackground; } } & when (@variationPopupTop) { .ui.inverted.top.popup:before { background: @invertedArrowBottomBackground; } } } /******************************* Coupling *******************************/ /* Immediate Nested Grid */ .ui.popup > .ui.grid:not(.padded) { width: @nestedGridWidth; margin: @nestedGridMargin; } /******************************* States *******************************/ & when (@variationPopupLoading) { .ui.loading.popup { display: block; visibility: hidden; z-index: @loadingZIndex; } } .ui.animating.popup, .ui.visible.popup { display: block; } .ui.visible.popup { transform: translateZ(0); backface-visibility: hidden; } /******************************* Variations *******************************/ & when (@variationPopupBasic) { /*-------------- Basic ---------------*/ .ui.basic.popup:before { display: none; } } & when (@variationPopupFixed) { .ui.fixed.popup { width: @maxWidth; } } & when (@variationPopupWide) { /*-------------- Wide ---------------*/ .ui.wide.popup { max-width: @wideWidth; &.fixed when (@variationPopupFixed) { width: @wideWidth; } } .ui[class*="very wide"].popup { max-width: @veryWideWidth; &.fixed when (@variationPopupFixed) { width: @veryWideWidth; } } @media only screen and (max-width: @largestMobileScreen) { .ui.wide.popup, .ui[class*="very wide"].popup { max-width: @maxWidth; &.fixed when (@variationPopupFixed) { width:@maxWidth; } } } } & when (@variationPopupFluid) { /*-------------- Fluid ---------------*/ .ui.fluid.popup { width: 100%; max-width: none; } } & when (@variationPopupInverted) { /*-------------- Colors ---------------*/ /* Inverted colors */ .ui.inverted.popup { background: @invertedBackground; color: @invertedColor; border: @invertedBorder; box-shadow: @invertedBoxShadow; } .ui.inverted.popup .header { background-color: @invertedHeaderBackground; color: @invertedHeaderColor; } .ui.inverted.popup:before { background-color: @invertedArrowColor; box-shadow: none !important; } } & when (@variationPopupFlowing) { /*-------------- Flowing ---------------*/ .ui.flowing.popup { max-width: none; } } /*-------------- Sizes ---------------*/ .ui.popup { font-size: @medium; } & when not (@variationPopupSizes = false) { each(@variationPopupSizes, { @s: @@value; .ui.@{value}.popup { font-size: @s; } & when (@variationPopupTooltip) { [data-tooltip][data-variation~="@{value}"]:before, [data-tooltip][data-variation~="@{value}"]:after { font-size: @s; } } }) } .loadUIOverrides();