fomantic-ui
Version:
Fomantic empowers designers and developers by creating a shared vocabulary for UI.
1,769 lines (1,599 loc) • 60.8 kB
text/less
/*!
* # Fomantic-UI - Dropdown
* https://github.com/fomantic/Fomantic-UI/
*
*
* Released under the MIT license
* https://opensource.org/licenses/MIT
*
*/
/*******************************
Theme
*******************************/
@type: "module";
@element: "dropdown";
@import (multiple) "../../theme.config";
/*******************************
Dropdown
*******************************/
.ui.dropdown {
cursor: pointer;
position: relative;
display: inline-block;
outline: none;
text-align: left;
transition: @transition;
user-select: none;
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
}
/*******************************
Content
*******************************/
/* --------------
Menu
--------------- */
.ui.dropdown .menu {
cursor: auto;
position: absolute;
display: none;
outline: none;
top: 100%;
min-width: max-content;
margin: @menuMargin;
padding: @menuPadding;
background: @menuBackground;
font-size: @relativeMedium;
text-shadow: none;
text-align: @menuTextAlign;
box-shadow: @menuBoxShadow;
border: @menuBorder;
border-radius: @menuBorderRadius;
transition: @menuTransition;
z-index: @menuZIndex;
will-change: transform, opacity;
}
.ui.dropdown .menu > * {
white-space: nowrap;
}
/* --------------
Hidden Input
--------------- */
.ui.dropdown > input:not(.search):first-child,
.ui.dropdown > select {
display: none !important;
}
/* --------------
Dropdown Icon
--------------- */
.ui.dropdown:not(.labeled) > .dropdown.icon {
position: relative;
width: auto;
min-width: @dropdownIconMinWidth;
font-size: @dropdownIconSize;
margin: @dropdownIconMargin;
}
.ui.dropdown .menu > .item .dropdown.icon {
width: auto;
float: @itemDropdownIconFloat;
margin: @itemDropdownIconMargin;
}
.ui.dropdown .menu > .item .dropdown.icon + .text {
margin-right: @itemDropdownIconDistance;
}
/* --------------
Text
--------------- */
.ui.dropdown > .text {
display: inline-block;
transition: @textTransition;
}
/* --------------
Menu Item
--------------- */
.ui.dropdown .menu > .item {
position: relative;
cursor: pointer;
display: block;
border: @itemBorder;
height: @itemHeight;
min-height: @itemMinHeight;
text-align: @itemTextAlign;
border-top: @itemDivider;
line-height: @itemLineHeight;
font-size: @itemFontSize;
color: @itemColor;
padding: @itemPadding;
text-transform: @itemTextTransform;
font-weight: @itemFontWeight;
box-shadow: @itemBoxShadow;
-webkit-touch-callout: none;
}
.ui.dropdown .menu > .item:first-child {
border-top-width: 0;
}
.ui.dropdown .menu > .item.vertical {
display: flex;
flex-direction: column-reverse;
}
/* --------------
Floated Content
--------------- */
.ui.dropdown > .text > [class*="right floated"],
.ui.dropdown .menu .item > [class*="right floated"] {
float: right !important;
margin-right: 0 !important;
margin-left: @floatedDistance !important;
}
.ui.dropdown > .text > [class*="left floated"],
.ui.dropdown .menu .item > [class*="left floated"] {
float: left !important;
margin-left: 0 !important;
margin-right: @floatedDistance !important;
}
.ui.dropdown .menu .item > i.icon.floated,
.ui.dropdown .menu .item > .flag.floated,
.ui.dropdown .menu .item > .image.floated,
.ui.dropdown .menu .item > img.floated {
margin-top: @itemLineHeightOffset;
}
/* --------------
Menu Divider
--------------- */
.ui.dropdown .menu > .header {
margin: @menuHeaderMargin;
padding: @menuHeaderPadding;
font-weight: @menuHeaderFontWeight;
text-transform: @menuHeaderTextTransform;
}
.ui.dropdown .menu > .header:not(.ui) {
color: @menuHeaderColor;
font-size: @menuHeaderFontSize;
}
.ui.dropdown .menu > .divider {
border-top: @menuDividerBorder;
height: 0;
margin: @menuDividerMargin;
}
.ui.dropdown .menu > .horizontal.divider {
border-top: none;
}
.ui.ui.ui.dropdown .menu > .input {
width: auto;
display: flex;
margin: @menuInputMargin;
min-width: @menuInputMinWidth;
}
.ui.dropdown .menu > .header + .input {
margin-top: 0;
}
.ui.dropdown .menu > .input:not(.transparent) input {
padding: @menuInputPadding;
}
.ui.dropdown .menu > .input:not(.transparent) .button,
.ui.dropdown .menu > .input:not(.transparent) i.icon,
.ui.dropdown .menu > .input:not(.transparent) .label {
padding-top: @menuInputVerticalPadding;
padding-bottom: @menuInputVerticalPadding;
}
/* -----------------
Item Description
------------------- */
.ui.dropdown > .text > .description,
.ui.dropdown .menu > .item > .description {
float: @itemDescriptionFloat;
margin: @itemDescriptionMargin;
color: @itemDescriptionColor;
}
.ui.dropdown .menu > .item.vertical > .description {
margin: 0;
}
/* -----------------
Item Text
------------------- */
.ui.dropdown .menu > .item.vertical > .text {
margin-bottom: @verticalItemMargin;
}
/* -----------------
Message
------------------- */
.ui.dropdown .menu > .message {
padding: @messagePadding;
font-weight: @messageFontWeight;
}
.ui.dropdown .menu > .message:not(.ui) {
color: @messageColor;
}
/* --------------
Sub Menu
--------------- */
.ui.dropdown .menu .menu {
top: @subMenuTop;
left: @subMenuLeft;
right: @subMenuRight;
margin: @subMenuMargin !important;
border-radius: @subMenuBorderRadius !important;
z-index: @subMenuZIndex !important;
}
/* Hide Arrow */
.ui.dropdown .menu .menu::after {
display: none;
}
/* --------------
Sub Elements
--------------- */
/* Icons / Flags / Labels / Image */
.ui.dropdown > .text > i.icons,
.ui.dropdown > .text > i.icon,
.ui.dropdown > .text > .label,
.ui.dropdown > .text > .flag,
.ui.dropdown > .text > img,
.ui.dropdown > .text > .image {
margin-top: @textLineHeightOffset;
}
.ui.dropdown .menu > .item > i.icons,
.ui.dropdown .menu > .item > i.icon,
.ui.dropdown .menu > .item > .label,
.ui.dropdown .menu > .item > .flag,
.ui.dropdown .menu > .item > .image,
.ui.dropdown .menu > .item > img {
margin-top: @itemLineHeightOffset;
}
.ui.dropdown > .text > i.icons,
.ui.dropdown > .text > i.icon,
.ui.dropdown > .text > .label,
.ui.dropdown > .text > .flag,
.ui.dropdown > .text > img,
.ui.dropdown > .text > .image,
.ui.dropdown .menu > .item > i.icons,
.ui.dropdown .menu > .item > i.icon,
.ui.dropdown .menu > .item > .label,
.ui.dropdown .menu > .item > .flag,
.ui.dropdown .menu > .item > .image,
.ui.dropdown .menu > .item > img {
margin-left: 0;
float: @itemElementFloat;
margin-right: @itemElementDistance;
}
/* --------------
Image
--------------- */
.ui.dropdown > .text > img,
.ui.dropdown > .text > .image:not(.icon),
.ui.dropdown .menu > .item > .image:not(.icon),
.ui.dropdown .menu > .item > img {
display: inline-block;
vertical-align: top;
width: auto;
margin-top: @menuImageVerticalMargin;
margin-bottom: @menuImageVerticalMargin;
max-height: @menuImageMaxHeight;
}
/*******************************
Coupling
*******************************/
/* --------------
Menu
--------------- */
/* Remove Menu Item Divider */
.ui.dropdown .ui.menu > .item::before,
.ui.menu .ui.dropdown .menu > .item::before {
display: none;
}
/* Prevent Menu Item Border */
.ui.menu .ui.dropdown .menu .active.item {
border-left: none;
}
/* Automatically float dropdown menu right on last menu item */
.ui.menu .right.menu .dropdown:last-child > .menu:not(.left),
.ui.menu .right.dropdown.item > .menu:not(.left),
.ui.buttons > .ui.dropdown:last-child > .menu:not(.left) {
left: auto;
right: 0;
}
& when (@variationDropdownLabel) {
/* --------------
Label
--------------- */
/* Dropdown Menu */
.ui.label.dropdown .menu {
min-width: 100%;
}
}
& when (@variationDropdownButton) {
/* --------------
Button
--------------- */
/* No Margin On Icon Button */
.ui.dropdown.icon.button > .dropdown.icon {
margin: 0;
}
.ui.dropdown.button .menu {
min-width: 100%;
}
.ui.dropdown.button:not(.pointing):not(.floating).active {
border-radius: @borderRadius @borderRadius 0 0;
}
.ui.dropdown.button:not(.pointing):not(.floating) > .menu {
border-radius: 0 0 @borderRadius @borderRadius;
}
}
/*******************************
Types
*******************************/
select.ui.dropdown {
height: @selectHeight;
padding: @selectPadding;
border: @selectBorder;
visibility: @selectVisibility;
}
& when (@variationDropdownSelection) {
/* --------------
Selection
--------------- */
/* Displays like a select box */
.ui.selection.dropdown {
cursor: pointer;
word-wrap: break-word;
line-height: 1em;
white-space: normal;
outline: 0;
transform: rotateZ(0);
min-width: @selectionMinWidth;
min-height: @selectionMinHeight;
background: @selectionBackground;
display: @selectionDisplay;
padding: @selectionPadding;
color: @selectionTextColor;
box-shadow: @selectionBoxShadow;
border: @selectionBorder;
border-radius: @selectionBorderRadius;
transition: @selectionTransition;
}
.ui.selection.dropdown.visible,
.ui.selection.dropdown.active {
z-index: @selectionZIndex;
}
.ui.selection.dropdown > .search.icon,
.ui.selection.dropdown > .delete.icon,
.ui.selection.dropdown > .dropdown.icon {
cursor: pointer;
position: absolute;
width: auto;
height: auto;
line-height: @searchSelectionLineHeight;
top: @selectionVerticalPadding;
right: @selectionHorizontalPadding;
z-index: @selectionIconZIndex;
margin: @selectionIconMargin;
padding: @selectionIconPadding;
opacity: @selectionIconOpacity;
transition: @selectionIconTransition;
}
& when (@variationDropdownCompact) {
/* Compact */
.ui.compact.selection.dropdown {
min-width: 0;
& > .menu {
width: auto;
&:not(.multiline) {
width: max-content;
}
}
}
}
/* Selection Menu */
.ui.selection.dropdown:not(.unlimited) .menu {
overflow-x: hidden;
overflow-y: auto;
overscroll-behavior: @overscrollBehavior;
backface-visibility: hidden;
}
.ui.selection.dropdown .menu {
outline: none;
margin: 0 -@menuBorderWidth;
min-width: @menuMinWidth;
width: @menuMinWidth;
box-shadow: @selectionMenuBoxShadow;
transition: @selectionMenuTransition;
}
.ui.selection.dropdown:not(.pointing):not(.floating) .menu {
border-top-width: 0;
border-radius: @selectionMenuBorderRadius;
}
.ui.selection.dropdown .menu::after,
.ui.selection.dropdown .menu::before {
display: none;
}
/* --------------
Message
--------------- */
.ui.selection.dropdown .menu > .message {
padding: @selectionMessagePadding;
}
@media only screen and (max-width: @largestMobileScreen) {
& when (@variationDropdownShort) {
.ui.selection.dropdown.short .menu {
max-height: @selectionMobileMaxMenuHeight * 0.75;
}
.ui.selection.dropdown[class*="very short"] .menu {
max-height: @selectionMobileMaxMenuHeight * 0.5;
}
}
.ui.selection.dropdown:not(.unlimited) .menu {
max-height: @selectionMobileMaxMenuHeight;
}
& when (@variationDropdownLong) {
.ui.selection.dropdown.long .menu {
max-height: @selectionMobileMaxMenuHeight * 2;
}
.ui.selection.dropdown[class*="very long"] .menu {
max-height: @selectionMobileMaxMenuHeight * 3;
}
}
}
@media only screen and (min-width: @tabletBreakpoint) {
& when (@variationDropdownShort) {
.ui.selection.dropdown.short .menu {
max-height: @selectionTabletMaxMenuHeight * 0.75;
}
.ui.selection.dropdown[class*="very short"] .menu {
max-height: @selectionTabletMaxMenuHeight * 0.5;
}
}
.ui.selection.dropdown:not(.unlimited) .menu {
max-height: @selectionTabletMaxMenuHeight;
}
& when (@variationDropdownLong) {
.ui.selection.dropdown.long .menu {
max-height: @selectionTabletMaxMenuHeight * 2;
}
.ui.selection.dropdown[class*="very long"] .menu {
max-height: @selectionTabletMaxMenuHeight * 3;
}
}
}
@media only screen and (min-width: @computerBreakpoint) {
& when (@variationDropdownShort) {
.ui.selection.dropdown.short .menu {
max-height: @selectionComputerMaxMenuHeight * 0.75;
}
.ui.selection.dropdown[class*="very short"] .menu {
max-height: @selectionComputerMaxMenuHeight * 0.5;
}
}
.ui.selection.dropdown:not(.unlimited) .menu {
max-height: @selectionComputerMaxMenuHeight;
}
& when (@variationDropdownLong) {
.ui.selection.dropdown.long .menu {
max-height: @selectionComputerMaxMenuHeight * 2;
}
.ui.selection.dropdown[class*="very long"] .menu {
max-height: @selectionComputerMaxMenuHeight * 3;
}
}
}
@media only screen and (min-width: @widescreenMonitorBreakpoint) {
& when (@variationDropdownShort) {
.ui.selection.dropdown.short .menu {
max-height: @selectionWidescreenMaxMenuHeight * 0.75;
}
.ui.selection.dropdown[class*="very short"] .menu {
max-height: @selectionWidescreenMaxMenuHeight * 0.5;
}
}
.ui.selection.dropdown:not(.unlimited) .menu {
max-height: @selectionWidescreenMaxMenuHeight;
}
& when (@variationDropdownLong) {
.ui.selection.dropdown.long .menu {
max-height: @selectionWidescreenMaxMenuHeight * 2;
}
.ui.selection.dropdown[class*="very long"] .menu {
max-height: @selectionWidescreenMaxMenuHeight * 3;
}
}
}
/* Menu Item */
.ui.selection.dropdown .menu > .item {
border-top: @selectionItemDivider;
padding: @selectionItemPadding;
white-space: normal;
word-wrap: normal;
}
& when (@variationDropdownPointing) or (@variationDropdownFloating) {
.ui.selection.pointing.dropdown .menu > .item:first-child,
.ui.selection.floating.dropdown .menu > .item:first-child {
border-top: none;
}
}
/* User Item */
.ui.selection.dropdown .menu > .hidden.addition.item {
display: none;
}
/* User addition item */
.ui.dropdown > .menu > .stuck.addition.item:first-child {
position: sticky;
top: 0;
box-shadow: @selectionVisibleBoxShadow;
background: @menuBackground;
z-index: @additionZIndex;
}
/* Hover */
.ui.selection.dropdown:hover {
border-color: @selectionHoverBorderColor;
box-shadow: @selectionHoverBoxShadow;
}
/* Active */
.ui.selection.simple.dropdown:hover,
.ui.selection.active.dropdown {
border-color: @selectionVisibleBorderColor;
box-shadow: @selectionVisibleBoxShadow;
}
.ui.selection.simple.dropdown:hover .menu,
.ui.selection.active.dropdown .menu {
border-color: @selectionVisibleBorderColor;
box-shadow: @selectionVisibleMenuBoxShadow;
}
/* Focus */
.ui.selection.dropdown:focus {
border-color: @selectionFocusBorderColor;
box-shadow: @selectionFocusBoxShadow;
}
.ui.selection.dropdown:focus .menu {
border-color: @selectionFocusBorderColor;
box-shadow: @selectionFocusMenuBoxShadow;
}
/* Visible */
.ui.selection.visible.dropdown > .text:not(.default) {
font-weight: @selectionVisibleTextFontWeight;
color: @selectionVisibleTextColor;
}
/* Visible Hover */
.ui.selection.active.dropdown:hover {
border-color: @selectionActiveHoverBorderColor;
box-shadow: @selectionActiveHoverBoxShadow;
}
.ui.selection.active.dropdown:hover .menu {
border-color: @selectionActiveHoverBorderColor;
box-shadow: @selectionActiveHoverMenuBoxShadow;
}
/* Dropdown Icon */
.ui.active.selection.dropdown > .dropdown.icon,
.ui.visible.selection.dropdown > .dropdown.icon {
opacity: @selectionVisibleIconOpacity;
z-index: 3;
}
/* Connecting Border */
.ui.active.selection.dropdown:not(.pointing):not(.floating) {
border-bottom-left-radius: @selectionVisibleConnectingBorder !important;
border-bottom-right-radius: @selectionVisibleConnectingBorder !important;
}
/* Empty Connecting Border */
.ui.active.empty.selection.dropdown {
border-radius: @selectionBorderRadius !important;
box-shadow: @selectionBoxShadow !important;
}
.ui.active.empty.selection.dropdown .menu {
border: none !important;
box-shadow: none !important;
}
& when (@variationDropdownScrollhint) {
/* CSS specific to iOS devices or firefox mobile only */
@supports (-webkit-touch-callout: none) or (-moz-appearance: none) {
@media (-moz-touch-enabled), (pointer: coarse) {
.ui.dropdown .scrollhint.menu:not(.hidden)::before {
animation: scrollhint @scrollhintDuration @scrollhintEasing @scrollhintIteration;
content: "";
z-index: @scrollhintZIndex;
display: block;
position: absolute;
opacity: 0;
right: @scrollhintOffsetRight;
top: 0;
height: 100%;
border-right: @scrollhintRightBorder;
border-left: @scrollhintLeftBorder;
border-image: linear-gradient(to bottom, @scrollhintStartColor, @scrollhintEndColor) 1 100%;
}
.ui.inverted.dropdown .scrollhint.menu:not(.hidden)::before {
border-image: linear-gradient(to bottom, @invertedScrollhintStartColor, @invertedScrollhintEndColor) 1 100%;
}
@keyframes scrollhint {
0% {
opacity: 1;
top: 100%;
}
100% {
opacity: 0;
top: 0;
}
}
}
}
}
}
& when (@variationDropdownSearch) {
/* --------------
Searchable
--------------- */
/* Search Selection */
.ui.search.dropdown {
min-width: @searchMinWidth;
}
/* Search Dropdown */
.ui.search.dropdown > input.search {
background: none transparent !important;
border: none !important;
box-shadow: none !important;
cursor: text;
top: 0;
left: @textCursorSpacing;
width: 100%;
outline: none;
-webkit-tap-highlight-color: rgba(255, 255, 255, 0);
padding: inherit;
}
/* Text Layering */
.ui.search.dropdown > input.search {
position: absolute;
z-index: 2;
}
.ui.search.dropdown > .text {
cursor: text;
position: relative;
left: @textCursorSpacing;
z-index: auto;
}
& when (@variationDropdownSelection) {
/* Search Selection */
.ui.search.selection.dropdown > input.search {
line-height: @searchSelectionLineHeight;
padding: @searchSelectionInputPadding;
}
/* Used to size multi select input to character width */
.ui.search.selection.dropdown > span.sizer {
line-height: @searchSelectionLineHeight;
padding: @searchSelectionInputPadding;
display: none;
white-space: pre;
}
}
/* Active/Visible Search */
.ui.search.dropdown.active > input.search,
.ui.search.dropdown.visible > input.search {
cursor: auto;
}
.ui.search.dropdown.active > .text,
.ui.search.dropdown.visible > .text {
pointer-events: none;
}
/* Filtered Text */
.ui.active.search.dropdown input.search:focus + .text i.icon,
.ui.active.search.dropdown input.search:focus + .text .flag {
opacity: @selectionTextUnderlayIconOpacity;
}
.ui.active.search.dropdown input.search:focus + .text {
color: @selectionTextUnderlayColor !important;
}
.ui.search.dropdown.button > span.sizer {
display: none;
}
/* Search Menu */
.ui.search.dropdown:not(.unlimited) .menu {
overflow-x: hidden;
overflow-y: auto;
overscroll-behavior: @overscrollBehavior;
backface-visibility: hidden;
}
@media only screen and (max-width: @largestMobileScreen) {
.ui.search.dropdown:not(.unlimited) .menu {
max-height: @searchMobileMaxMenuHeight;
}
}
@media only screen and (min-width: @tabletBreakpoint) {
.ui.search.dropdown:not(.unlimited) .menu {
max-height: @searchTabletMaxMenuHeight;
}
}
@media only screen and (min-width: @computerBreakpoint) {
.ui.search.dropdown:not(.unlimited) .menu {
max-height: @searchComputerMaxMenuHeight;
}
}
@media only screen and (min-width: @widescreenMonitorBreakpoint) {
.ui.search.dropdown:not(.unlimited) .menu {
max-height: @searchWidescreenMaxMenuHeight;
}
}
}
& when (@variationDropdownClear) {
/* Clearable Selection */
.ui.dropdown > .remove.icon {
cursor: pointer;
font-size: @dropdownIconSize;
margin: @selectionIconMargin;
padding: @selectionIconPadding;
right: @clearableIconPosition;
top: @selectionVerticalPadding;
position: absolute;
opacity: @clearableIconOpacity;
z-index: @selectionIconZIndex;
}
& when (@variationDropdownSelection) {
.ui.selection.dropdown > .remove.icon {
right: @clearableIconSelectionPosition;
}
}
& when (@variationDropdownInline) {
.ui.inline.dropdown > .remove.icon {
right: @clearableIconInlinePosition;
}
}
.ui.clearable.dropdown .text,
.ui.clearable.dropdown a:last-of-type {
margin-right: @clearableTextMargin;
}
.ui.dropdown select.noselection ~ .remove.icon,
.ui.dropdown input[value=""] ~ .remove.icon,
.ui.dropdown input:not([value]) ~ .remove.icon,
.ui.dropdown.loading > .remove.icon {
display: none;
}
.ui.dropdown:not(.selection) > .remove.icon ~ .dropdown.icon {
margin-left: @clearableIconMargin;
}
.ui.dropdown:not(.selection):not(.multiple) > .remove.icon {
margin-top: -@clearableIconMarginTop;
}
}
& when (@variationDropdownMultiple) {
/* --------------
Multiple
--------------- */
/* Multiple Selection */
.ui.ui.multiple.dropdown {
padding: @multipleSelectionPadding;
}
.ui.multiple.dropdown .menu {
cursor: auto;
}
/* Selection Label */
.ui.multiple.dropdown > .label {
display: inline-block;
white-space: normal;
font-size: @labelSize;
padding: @labelPadding;
margin: @labelMargin;
box-shadow: @labelBoxShadow;
}
/* Dropdown Icon */
.ui.multiple.dropdown .dropdown.icon {
margin: @multipleSelectionDropdownIconMargin;
padding: @multipleSelectionDropdownIconPadding;
}
/* Text */
.ui.multiple.dropdown > .text {
position: static;
padding: 0;
max-width: 100%;
margin: @multipleSelectionChildMargin;
line-height: @multipleSelectionChildLineHeight;
&.default {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
}
.ui.multiple.dropdown > .label ~ input.search {
margin-left: @multipleSelectionSearchAfterLabelDistance !important;
}
.ui.multiple.dropdown > .label ~ .text {
display: none;
}
.ui.multiple.dropdown > .label:not(.image) > img:not(.centered) {
margin-right: @itemElementDistance;
}
.ui.multiple.dropdown > .label:not(.image) > img.ui:not(.avatar) {
margin-bottom: @itemElementBottomDistance;
}
.ui.multiple.dropdown > .image.label img {
margin: @imageLabelImageMargin;
height: @imageLabelHeight;
}
.ui.multiple.dropdown:not(.selection):not(.labeled) {
& > .dropdown.icon {
right: @dropdownIconMultipleRight;
}
& > .remove.icon {
margin-right: @dropdownIconMultipleRight;
}
&:not(.search) > .remove.icon ~ .text.default,
> .text.default:first-child {
overflow: inherit;
}
}
& when (@variationDropdownSearch) {
/* -----------------
Multiple Search
----------------- */
/* Multiple Search Selection */
.ui.multiple.search.dropdown,
.ui.multiple.search.dropdown > input.search {
cursor: text;
}
/* Prompt Text */
.ui.multiple.search.dropdown > .text {
display: inline-block;
position: absolute;
top: 0;
left: 0;
padding: inherit;
margin: @multipleSelectionChildMargin;
line-height: @multipleSelectionChildLineHeight;
}
.ui.multiple.search.dropdown > .label ~ .text {
display: none;
}
/* Search */
.ui.multiple.search.dropdown > input.search {
position: static;
padding: 0;
max-width: 100%;
margin: @multipleSelectionChildMargin;
width: @multipleSelectionSearchStartWidth;
line-height: @multipleSelectionChildLineHeight;
}
.ui.multiple.search.dropdown.button {
min-width: @selectionMinWidth;
}
.ui.multiple.search.dropdown > span.sizer {
display: none;
}
.ui.multiple.search.dropdown:not(.selection) > .remove.icon + input.search,
.ui.multiple.search.dropdown:not(.selection) > input.search:first-child {
min-width: @multipleSearchMinWidth;
}
}
}
& when (@variationDropdownInline) {
/* --------------
Inline
--------------- */
.ui.inline.dropdown {
cursor: pointer;
display: inline-block;
color: @inlineTextColor;
}
.ui.inline.dropdown .dropdown.icon {
margin: @inlineIconMargin;
vertical-align: baseline;
}
.ui.inline.dropdown > .text {
font-weight: @inlineTextFontWeight;
}
.ui.inline.dropdown .menu {
cursor: auto;
margin-top: @inlineMenuDistance;
border-radius: @inlineMenuBorderRadius;
}
}
/*******************************
States
*******************************/
/* --------------------
Active
---------------------- */
/* Menu Item Active */
.ui.dropdown .menu .active.item {
background: @activeItemBackground;
font-weight: @activeItemFontWeight;
color: @activeItemColor;
box-shadow: @activeItemBoxShadow;
z-index: @activeItemZIndex;
}
/* --------------------
Hover
---------------------- */
/* Menu Item Hover */
.ui.dropdown .menu > .item:hover {
background: @hoveredItemBackground;
color: @hoveredItemColor;
z-index: @hoveredZIndex;
}
/* --------------------
Default Text
---------------------- */
.ui.dropdown:not(.button) > .default.text,
.ui.default.dropdown:not(.button) > .text {
color: @defaultTextColor;
}
.ui.dropdown:not(.button) > input:focus ~ .default.text,
.ui.default.dropdown:not(.button) > input:focus ~ .text {
color: @defaultTextFocusColor;
}
& when (@variationDropdownLoading) {
/* --------------------
Loading
--------------------- */
.ui.loading.dropdown > i.icon {
height: @relative14px !important;
}
.ui.loading.selection.dropdown > i.icon {
padding: @relative21px @relative18px !important;
}
.ui.loading.dropdown > i.icon::before {
position: absolute;
content: "";
top: 50%;
left: 50%;
margin: @loaderMargin;
width: @loaderSize;
height: @loaderSize;
border-radius: @circularRadius;
border: @loaderLineWidth solid @loaderFillColor;
}
.ui.loading.dropdown > i.icon::after {
position: absolute;
content: "";
top: 50%;
left: 50%;
box-shadow: 0 0 0 1px transparent;
margin: @loaderMargin;
width: @loaderSize;
height: @loaderSize;
animation: loader @loaderSpeed infinite linear;
border: @loaderLineWidth solid @loaderLineColor;
border-radius: @circularRadius;
}
/* Coupling */
.ui.loading.dropdown.button > i.icon::before,
.ui.loading.dropdown.button > i.icon::after {
display: none;
}
.ui.loading.dropdown > .text {
transition: none;
}
/* Used To Check Position */
.ui.dropdown .loading.menu {
display: block;
visibility: hidden;
z-index: @loadingZIndex;
}
.ui.dropdown > .loading.menu {
left: 0 !important;
right: auto !important;
}
.ui.dropdown > .menu .loading.menu {
left: 100% !important;
right: auto !important;
}
}
/* --------------------
Keyboard Select
---------------------- */
/* Selected Item */
.ui.dropdown.selected,
.ui.dropdown .menu .selected.item {
background: @selectedBackground;
color: @selectedColor;
}
/* --------------------
Search Filtered
---------------------- */
/* Filtered Item */
.ui.dropdown > .filtered.text {
visibility: hidden;
}
.ui.dropdown .filtered.item {
display: none !important;
}
& when not (@variationDropdownStates = false) {
/* --------------------
States
---------------------- */
each(@variationDropdownStates, {
@state: @value;
@c: @formStates[@@state][dropdownLabelColor];
@bdc: @formStates[@@state][borderColor];
.ui.dropdown.@{state},
.ui.dropdown.@{state} > .text,
.ui.dropdown.@{state} > .default.text {
color: @c;
}
& when (@variationDropdownSelection) {
.ui.selection.dropdown.@{state} {
background: @formStates[@@state][background];
border-color: @bdc;
}
.ui.selection.dropdown.@{state}:hover {
border-color: @bdc;
}
& when (@variationDropdownMultiple) {
.ui.multiple.selection.@{state}.dropdown > .label {
border-color: @bdc;
}
}
}
.ui.dropdown.@{state} > .menu,
.ui.dropdown.@{state} > .menu .menu {
border-color: @bdc;
}
.ui.dropdown.@{state} > .menu > .item {
color: @c;
}
/* Item Hover */
.ui.dropdown.@{state} > .menu > .item:hover {
background-color: @formStates[@@state][dropdownHoverBackground];
}
/* Item Active */
.ui.dropdown.@{state} > .menu .active.item {
background-color: @formStates[@@state][dropdownActiveBackground];
}
});
}
& when (@variationDropdownClear) {
/* --------------------
Clear
---------------------- */
.ui.dropdown > .remove.icon,
.ui.dropdown > .clear.dropdown.icon {
opacity: @clearableIconOpacity;
transition: opacity @defaultDuration @defaultEasing;
}
.ui.dropdown > .remove.icon:hover,
.ui.dropdown > .clear.dropdown.icon:hover {
opacity: @clearableIconActiveOpacity;
}
}
& when (@variationDropdownDisabled) {
/* --------------------
Disabled
---------------------- */
/* Disabled */
.ui.disabled.dropdown,
.ui.dropdown .menu > .disabled.item {
cursor: default;
pointer-events: none;
opacity: @disabledOpacity;
}
}
& when (@variationDropdownReadonly) {
/* --------------------
Read-Only
---------------------- */
.ui.read-only.dropdown {
cursor: default;
pointer-events: none;
}
}
& when (@variationDropdownDisabled) or (@variationDropdownReadonly) {
.ui.disabled.dropdown,
.ui.read-only.dropdown {
> .remove.icon,
> .label > .delete.icon {
display: none;
}
}
}
/*******************************
Variations
*******************************/
/* --------------
Direction
--------------- */
/* Flyout Direction */
.ui.dropdown .menu {
left: 0;
}
/* Default Side (Right) */
.ui.dropdown .right.menu > .menu,
.ui.dropdown .menu .right.menu {
left: 100% !important;
right: auto !important;
border-radius: @subMenuBorderRadius !important;
}
& when (@variationDropdownLeft) {
/* Leftward Opening Menu */
.ui.dropdown > .left.menu {
left: auto !important;
right: 0 !important;
}
.ui.dropdown > .left.menu .menu,
.ui.dropdown .menu .left.menu {
left: auto;
right: 100%;
margin: @leftSubMenuMargin !important;
border-radius: @leftSubMenuBorderRadius !important;
}
.ui.dropdown .item .left.dropdown.icon,
.ui.dropdown .left.menu .item .dropdown.icon {
width: auto;
float: @leftMenuDropdownIconFloat;
margin: @leftMenuDropdownIconMargin;
}
.ui.dropdown .item .left.dropdown.icon,
.ui.dropdown .left.menu .item .dropdown.icon {
width: auto;
float: @leftMenuDropdownIconFloat;
margin: @leftMenuDropdownIconMargin;
}
.ui.dropdown .item .left.dropdown.icon + .text,
.ui.dropdown .left.menu .item .dropdown.icon + .text {
margin-left: @itemDropdownIconDistance;
margin-right: 0;
}
}
& when (@variationDropdownUpward) {
/* --------------
Upward
--------------- */
/* Upward Main Menu */
.ui.upward.dropdown > .menu {
top: auto;
bottom: 100%;
box-shadow: @upwardMenuBoxShadow;
}
/* Upward Sub Menu */
.ui.dropdown .upward.menu {
top: auto !important;
bottom: 0 !important;
}
& when (@variationDropdownSimple) {
/* Active Upward */
.ui.simple.upward.active.dropdown,
.ui.simple.upward.dropdown:hover {
border-radius: 0 0 @borderRadius @borderRadius;
}
}
& when (@variationDropdownButton) {
/* Button */
.ui.upward.dropdown.button:not(.pointing):not(.floating).active {
border-radius: 0 0 @borderRadius @borderRadius;
}
.ui.upward.dropdown.button:not(.pointing):not(.floating) > .menu {
border-radius: @borderRadius @borderRadius 0 0;
}
}
& when (@variationDropdownSelection) {
/* Selection */
.ui.ui.upward.selection.dropdown:not(.pointing):not(.floating) .menu {
border-top-width: @menuBorderWidth;
border-bottom-width: 0;
box-shadow: @upwardSelectionMenuBoxShadow;
border-radius: @upwardSelectionMenuBorderRadius;
}
.ui.upward.selection.dropdown:hover {
box-shadow: @upwardSelectionHoverBoxShadow;
}
/* Active Upward */
.ui.active.upward.selection.dropdown:not(.pointing):not(.floating) {
border-radius: @upwardSelectionVisibleBorderRadius !important;
}
/* Visible Upward */
.ui.upward.selection.dropdown.visible {
box-shadow: @upwardSelectionVisibleBoxShadow;
&:not(.pointing):not(.floating) {
border-radius: @upwardSelectionVisibleBorderRadius !important;
}
}
/* Visible Hover Upward */
.ui.upward.active.selection.dropdown:hover {
box-shadow: @upwardSelectionActiveHoverBoxShadow;
}
.ui.upward.active.selection.dropdown:hover:not(.pointing):not(.floating) .menu {
box-shadow: @upwardSelectionActiveHoverMenuBoxShadow;
}
}
}
& when (@variationDropdownScrolling) {
/* --------------
Scrolling
--------------- */
/* Selection Menu */
.ui.scrolling.dropdown .menu,
.ui.dropdown .scrolling.menu {
overflow-x: hidden;
overflow-y: auto;
overscroll-behavior: @overscrollBehavior;
backface-visibility: hidden;
min-width: 100% !important;
width: auto !important;
}
.ui.dropdown .scrolling.menu {
position: static;
border: none;
box-shadow: none !important;
border-radius: 0 0 @floatingMenuBorderRadius @floatingMenuBorderRadius !important;
margin: 0 !important;
border-top: @menuBorder;
}
.ui.ui.ui.scrolling.dropdown .menu .item,
.ui.ui.ui.dropdown .scrolling.menu > .item {
border-top: @scrollingMenuItemBorder;
}
.ui.scrolling.dropdown .menu .item:first-child,
.ui.dropdown .scrolling.menu .item:first-child {
border-top: none;
}
.ui.dropdown > .animating.menu .scrolling.menu,
.ui.dropdown > .visible.menu .scrolling.menu {
display: block;
}
& when (@supportIE) {
/* Scrollbar in IE */
@media all and (-ms-high-contrast: none) {
.ui.scrolling.dropdown .menu,
.ui.dropdown .scrolling.menu {
min-width: e(%("calc(100%% - %d)", @scrollbarWidth));
}
}
}
@media only screen and (max-width: @largestMobileScreen) {
.ui.scrolling.dropdown .menu,
.ui.dropdown .scrolling.menu {
max-height: @scrollingMobileMaxMenuHeight;
}
& when (@variationDropdownResizable) {
.ui.scrolling.resizable.dropdown .menu,
.ui.dropdown .scrolling.resizable.menu {
height: @scrollingMobileMaxMenuHeight;
}
}
}
@media only screen and (min-width: @tabletBreakpoint) {
.ui.scrolling.dropdown .menu,
.ui.dropdown .scrolling.menu {
max-height: @scrollingTabletMaxMenuHeight;
}
& when (@variationDropdownResizable) {
.ui.scrolling.resizable.dropdown .menu,
.ui.dropdown .scrolling.resizable.menu {
height: @scrollingTabletMaxMenuHeight;
}
}
}
@media only screen and (min-width: @computerBreakpoint) {
.ui.scrolling.dropdown .menu,
.ui.dropdown .scrolling.menu {
max-height: @scrollingComputerMaxMenuHeight;
}
& when (@variationDropdownResizable) {
.ui.scrolling.resizable.dropdown .menu,
.ui.dropdown .scrolling.resizable.menu {
height: @scrollingComputerMaxMenuHeight;
}
}
}
@media only screen and (min-width: @widescreenMonitorBreakpoint) {
.ui.scrolling.dropdown .menu,
.ui.dropdown .scrolling.menu {
max-height: @scrollingWidescreenMaxMenuHeight;
}
& when (@variationDropdownResizable) {
.ui.scrolling.resizable.dropdown .menu,
.ui.dropdown .scrolling.resizable.menu {
height: @scrollingWidescreenMaxMenuHeight;
}
}
}
& when (@variationDropdownResizable) {
.ui.scrolling.resizable.dropdown .menu,
.ui.dropdown .scrolling.resizable.menu {
resize: @resizableDirection;
max-height: none;
}
}
}
& when (@variationInputLabeled) {
/* --------------------
Labeled
--------------------- */
/* Regular Label on Left */
.ui.labeled.input:not([class*="corner labeled"]) .label:first-child + .dropdown {
border-top-left-radius: 0;
border-bottom-left-radius: 0;
border-left-color: transparent;
}
/* Regular Label on Right */
.ui[class*="right labeled"].input > .dropdown:not(:last-child) {
border-top-right-radius: 0 !important;
border-bottom-right-radius: 0 !important;
border-right-color: transparent !important;
}
.ui[class*="right labeled"].input > .dropdown + .label {
border-top-left-radius: 0;
border-bottom-left-radius: 0;
}
}
& when (@variationDropdownColumnar) {
/* --------------
Columnar
--------------- */
.ui.column.dropdown > .menu {
flex-wrap: wrap;
}
.ui.dropdown[class*="two column"] > .menu > .item {
width: 50%;
}
.ui.dropdown[class*="three column"] > .menu > .item {
width: 33%;
}
.ui.dropdown[class*="four column"] > .menu > .item {
width: 25%;
}
.ui.dropdown[class*="five column"] > .menu > .item {
width: 20%;
}
}
& when (@variationDropdownSimple) {
/* --------------
Simple
--------------- */
/* Displays without javascript */
.ui.simple.dropdown .menu::before,
.ui.simple.dropdown .menu::after {
display: none;
}
.ui.simple.dropdown .menu {
position: absolute;
& when (@supportIE) {
/* IE hack to make dropdown icons appear inline */
// stylelint-disable-next-line value-no-vendor-prefix
display: -ms-inline-flexbox !important;
}
display: block;
overflow: hidden;
top: -9999px;
opacity: 0;
width: 0;
height: 0;
transition: @simpleTransition;
margin-top: 0 !important;
}
& when (@variationDropdownUpward) {
.ui.simple.dropdown .upward.menu {
margin-bottom: @simpleUpwardMenuMargin;
}
.ui.simple.selection.dropdown .upward.menu {
margin-bottom: @simpleUpwardSelectionMenuMargin;
}
.ui.menu:not(.vertical) .ui.simple.dropdown.item .upward.menu {
margin-bottom: @simpleUpwardItemMenuMargin;
}
}
.ui.simple.active.dropdown,
.ui.simple.dropdown:hover {
border-bottom-left-radius: 0;
border-bottom-right-radius: 0;
}
.ui.simple.active.dropdown > .menu,
.ui.simple.dropdown:hover > .menu {
overflow: visible;
width: auto;
height: auto;
top: 100%;
opacity: 1;
}
.ui.simple.dropdown > .menu > .item:active > .menu,
.ui.simple.dropdown .menu .item:hover > .menu {
overflow: visible;
width: auto;
height: auto;
top: 0 !important;
left: 100%;
opacity: 1;
}
& when (@variationDropdownSelection) {
.ui.simple.selection.active.dropdown > .menu,
.ui.simple.selection.dropdown:hover > .menu,
.ui.simple.selection.dropdown > .menu > .item:active > .menu,
.ui.simple.selection.dropdown .menu .item:hover > .menu {
overflow: auto;
overscroll-behavior: @overscrollBehavior;
}
}
.ui.simple.dropdown > .menu > .item:active > .left.menu,
.ui.simple.dropdown .menu .item:hover > .left.menu,
.right.menu .ui.simple.dropdown > .menu > .item:active > .menu:not(.right),
.right.menu .ui.simple.dropdown > .menu .item:hover > .menu:not(.right) {
left: auto;
right: 100%;
}
& when (@variationDropdownDisabled) {
.ui.simple.disabled.dropdown:hover .menu {
display: none;
height: 0;
width: 0;
overflow: hidden;
}
}
/* Visible */
.ui.simple.visible.dropdown > .menu {
display: block;
}
& when (@variationDropdownScrolling) {
/* Scrolling */
.ui.simple.scrolling.active.dropdown > .menu,
.ui.simple.scrolling.dropdown:hover > .menu {
overflow-x: hidden;
overflow-y: auto;
overscroll-behavior: @overscrollBehavior;
}
}
}
& when (@variationDropdownFluid) {
/* --------------
Fluid
--------------- */
.ui.fluid.dropdown {
display: block;
width: 100% !important;
min-width: 0;
}
.ui.fluid.dropdown > .dropdown.icon {
float: right;
}
}
& when (@variationDropdownFloating) {
/* --------------
Floating
--------------- */
.ui.floating.dropdown > .menu {
left: 0;
right: auto;
box-shadow: @floatingMenuBoxShadow !important;
border-radius: @floatingMenuBorderRadius !important;
}
.ui:not(.upward).floating.dropdown > .menu {
margin-top: @floatingMenuDistance;
}
.ui.upward.floating.dropdown:not(.simple) > .menu {
margin-bottom: @floatingMenuDistance;
}
}
& when (@variationDropdownPointing) {
/* --------------
Pointing
--------------- */
.ui.pointing.dropdown > .menu {
top: 100%;
margin-top: @pointingMenuDistance;
border-radius: @pointingMenuBorderRadius;
}
.ui.pointing.dropdown > .menu:not(.hidden)::after {
display: block;
position: absolute;
pointer-events: none;
content: "";
visibility: visible;
transform: rotate(45deg);
width: @pointingArrowSize;
height: @pointingArrowSize;
box-shadow: @pointingArrowBoxShadow;
background: @pointingArrowBackground;
z-index: @pointingArrowZIndex;
}
@supports selector(:has(.f)) {
.ui.pointing.dropdown:not(.upward) .menu:has(:first-child:hover)::after,
.ui.upward.pointing.dropdown .menu:has(:last-child:hover)::after {
background: @hoveredItemBackground;
}
.ui.pointing.dropdown:not(.upward) .menu:has(.selected.item:first-child)::after,
.ui.upward.pointing.dropdown .menu:has(.selected.item:last-child)::after {
background: @selectedBackground;
}
}
& when (@variationDropdownSelection) {
.ui.selection.pointing.dropdown > .menu::after {
box-shadow: @pointingArrowBoxShadowSelection;
}
}
.ui.pointing.dropdown > .menu:not(.hidden)::after {
top: @pointingArrowOffset;
left: 50%;
margin: 0 0 0 @pointingArrowOffset;
}
/* Top Left Pointing */
.ui.top.left.pointing.dropdown > .menu {
top: 100%;
bottom: auto;
left: 0;
right: auto;
margin: @pointingArrowDistanceFromEdge 0 0;
}
.ui.top.left.pointing.dropdown > .menu {
top: 100%;
bottom: auto;
left: 0;
right: auto;
margin: @pointingArrowDistanceFromEdge 0 0;
}
.ui.top.left.pointing.dropdown > .menu::after {
top: @pointingArrowOffset;
left: @pointingArrowDistanceFromEdge;
right: auto;
margin: 0;
transform: rotate(45deg);
}
/* Top Right Pointing */
.ui.top.right.pointing.dropdown > .menu {
top: 100%;
bottom: auto;
right: 0;
left: auto;
margin: @pointingArrowDistanceFromEdge 0 0;
}
.ui.top.pointing.dropdown > .left.menu::after,
.ui.top.right.pointing.dropdown > .menu::after {
top: @pointingArrowOffset;
left: auto !important;
right: @pointingArrowDistanceFromEdge !important;
margin: 0;
transform: rotate(45deg);
}
/* Left Pointing */
.ui.left.pointing.dropdown > .menu {
top: 0;
left: 100%;
right: auto;
margin: 0 0 0 @pointingArrowDistanceFromEdge;
}
.ui.left.pointing.dropdown > .menu::after {
top: 1em;
left: @pointingArrowOffset;
margin: 0;
transform: rotate(-45deg);
}
.ui.left:not(.top):not(.bottom).pointing.dropdown > .left.menu {
left: auto !important;
right: 100% !important;
margin: 0 @pointingArrowDistanceFromEdge 0 0;
}
.ui.left:not(.top):not(.bottom).pointing.dropdown > .left.menu::after {
top: 1em;
left: auto;
right: @pointingArrowOffset;
margin: 0;
transform: rotate(135deg);
}
/* Right Pointing */
.ui.right.pointing.dropdown > .menu {
top: 0;
left: auto;
right: 100%;
margin: 0 @pointingArrowDistanceFromEdge 0 0;
}
.ui.right.pointing.dropdown > .menu::after {
top: 1em;
left: auto;
right: @pointingArrowOffset;
margin: 0;
transform: rotate(135deg);
}
/* Bottom Pointing */
.ui.bottom.pointing.dropdown > .menu {
top: auto;
bottom: 100%;
left: 0;
right: auto;
margin: 0 0 @pointingArrowDistanceFromEdge;
}
.ui.bottom.pointing.dropdown > .menu::after {
top: auto;
bottom: @pointingArrowOffset;
right: auto;
margin: 0;
transform: rotate(-135deg);
}
/* Reverse Sub-Menu Direction */
.ui.bottom.pointing.dropdown > .menu .menu {
top: auto !important;
bottom: 0 !important;
}
/* Bottom Left */
.ui.bottom.left.pointing.dropdown > .menu {
left: 0;
right: auto;
}
.ui.bottom.left.pointing.dropdown > .menu::after {