fomantic-ui
Version:
Fomantic empowers designers and developers by creating a shared vocabulary for UI.
589 lines (529 loc) • 15.8 kB
text/less
/*!
* # Fomantic-UI - Search
* https://github.com/fomantic/Fomantic-UI/
*
*
* Released under the MIT license
* https://opensource.org/licenses/MIT
*
*/
/*******************************
Theme
*******************************/
@type: "module";
@element: "search";
@import (multiple) "../../theme.config";
/*******************************
Search
*******************************/
.ui.search {
position: relative;
}
.ui.search > .prompt {
margin: 0;
outline: none;
-webkit-appearance: none;
-webkit-tap-highlight-color: rgba(255, 255, 255, 0);
text-shadow: none;
font-style: normal;
font-weight: @normal;
line-height: @promptLineHeight;
padding: @promptPadding;
font-size: @promptFontSize;
background: @promptBackground;
border: @promptBorder;
color: @promptColor;
box-shadow: @promptBoxShadow;
transition: @promptTransition;
}
.ui.search .prompt {
border-radius: @promptBorderRadius;
}
/* --------------
Icon
--------------- */
.ui.search .prompt ~ .search.icon {
cursor: pointer;
}
/* --------------
Results
--------------- */
.ui.search > .results {
display: none;
position: absolute;
top: 100%;
left: 0;
transform-origin: center top;
white-space: normal;
text-align: left;
text-transform: none;
background: @resultsBackground;
margin-top: @resultsDistance;
width: @resultsWidth;
border-radius: @resultsBorderRadius;
box-shadow: @resultsBoxShadow;
border: @resultsBorder;
z-index: @resultsZIndex;
}
.ui.search > .results > :first-child {
border-radius: @resultsBorderRadius @resultsBorderRadius 0 0;
}
.ui.search > .results > :last-child {
border-radius: 0 0 @resultsBorderRadius @resultsBorderRadius;
}
/* --------------
Result
--------------- */
.ui.search > .results .result {
cursor: pointer;
display: block;
overflow: hidden;
font-size: @resultFontSize;
padding: @resultPadding;
color: @resultTextColor;
line-height: @resultLineHeight;
border-bottom: @resultDivider;
}
.ui.search > .results .result:last-child {
border-bottom: @resultLastDivider ;
}
/* Image */
.ui.search > .results .result .image {
float: @resultImageFloat;
overflow: hidden;
background: @resultImageBackground;
width: @resultImageWidth;
height: @resultImageHeight;
border-radius: @resultImageBorderRadius;
}
.ui.search > .results .result .image img {
display: block;
width: auto;
height: 100%;
}
/* --------------
Info
--------------- */
.ui.search > .results .result .image + .content {
margin: @resultImageMargin;
}
.ui.search > .results .result .title {
margin: @resultTitleMargin;
font-family: @resultTitleFont;
font-weight: @resultTitleFontWeight;
font-size: @resultTitleFontSize;
color: @resultTitleColor;
}
.ui.search > .results .result .description {
margin-top: @resultDescriptionDistance;
font-size: @resultDescriptionFontSize;
color: @resultDescriptionColor;
}
.ui.search > .results .result .price {
float: @resultPriceFloat;
color: @resultPriceColor;
}
/* --------------
Message
--------------- */
.ui.search > .results > .message {
padding: @messageVerticalPadding @messageHorizontalPadding;
}
.ui.search > .results > .message .header {
font-family: @headerFont;
font-size: @messageHeaderFontSize;
font-weight: @messageHeaderFontWeight;
color: @messageHeaderColor;
}
.ui.search > .results > .message .description {
margin-top: @messageDescriptionDistance;
font-size: @messageDescriptionFontSize;
color: @messageDescriptionColor;
}
/* View All Results */
.ui.search > .results > .action {
display: block;
border-top: @actionBorder;
background: @actionBackground;
padding: @actionPadding;
color: @actionColor;
font-weight: @actionFontWeight;
text-align: @actionAlign;
}
/*******************************
States
*******************************/
/* --------------------
Focus
--------------------- */
.ui.search > .prompt:focus {
border-color: @promptFocusBorderColor;
background: @promptFocusBackground;
color: @promptFocusColor;
}
& when (@variationSearchLoading) {
/* --------------------
Loading
--------------------- */
.ui.loading.search .input > 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.search .input > i.icon::after {
position: absolute;
content: "";
top: 50%;
left: 50%;
margin: @loaderMargin;
width: @loaderSize;
height: @loaderSize;
animation: loader @loaderSpeed infinite linear;
border: @loaderLineWidth solid @loaderLineColor;
border-radius: @circularRadius;
box-shadow: 0 0 0 1px transparent;
}
}
/* --------------
Hover
--------------- */
.ui.search > .results .result:hover,
.ui.category.search > .results .category .result:hover {
background: @resultHoverBackground;
}
.ui.search .action:hover:not(div) {
background: @actionHoverBackground;
}
/* --------------
Active
--------------- */
& when (@variationSearchCategory) {
.ui.category.search > .results .category.active {
background: @categoryActiveBackground;
}
.ui.category.search > .results .category.active > .name {
color: @categoryNameActiveColor;
}
}
.ui.search > .results .result.active,
.ui.category.search > .results .category .result.active {
position: relative;
border-left-color: @resultActiveBorderLeft;
background: @resultActiveBackground;
box-shadow: @resultActiveBoxShadow;
}
.ui.search > .results .result.active .title {
color: @resultActiveTitleColor;
}
.ui.search > .results .result.active .description {
color: @resultActiveDescriptionColor;
}
& when (@variationSearchDisabled) {
/* --------------------
Disabled
---------------------- */
/* Disabled */
.ui.disabled.search {
cursor: default;
pointer-events: none;
opacity: @disabledOpacity;
}
}
/*******************************
Types
*******************************/
& when (@variationSearchSelection) {
/* --------------
Selection
--------------- */
.ui.search.selection .prompt {
border-radius: @selectionPromptBorderRadius;
}
/* Remove input */
.ui.search.selection > .icon.input > .remove.icon {
pointer-events: none;
position: absolute;
left: auto;
opacity: 0;
color: @selectionCloseIconColor;
top: @selectionCloseTop;
right: @selectionCloseRight;
transition: @selectionCloseTransition;
}
.ui.search.selection > .icon.input > .active.remove.icon {
cursor: pointer;
opacity: @selectionCloseIconOpacity;
pointer-events: auto;
}
.ui.search.selection > .icon.input:not([class*="left icon"]) > .icon ~ .remove.icon {
right: @selectionCloseIconInputRight;
}
.ui.search.selection > .icon.input > .remove.icon:hover {
opacity: @selectionCloseIconHoverOpacity;
color: @selectionCloseIconHoverColor;
}
}
& when (@variationSearchCategory) {
/* --------------
Category
--------------- */
.ui.category.search .results {
width: @categoryResultsWidth;
}
.ui.category.search .results.animating,
.ui.category.search .results.visible {
display: table;
}
/* Category */
.ui.category.search > .results .category {
display: table-row;
background: @categoryBackground;
box-shadow: @categoryBoxShadow;
transition: @categoryTransition;
}
/* Last Category */
.ui.category.search > .results .category:last-child {
border-bottom: none;
}
/* First / Last */
.ui.category.search > .results .category:first-child .name + .result {
border-radius: 0 @resultsBorderRadius 0 0;
}
.ui.category.search > .results .category:last-child .result:last-child {
border-radius: 0 0 @resultsBorderRadius 0;
}
/* Category Result Name */
.ui.category.search > .results .category > .name {
display: table-cell;
text-overflow: ellipsis;
width: @categoryNameWidth;
white-space: @categoryNameWhitespace;
background: @categoryNameBackground;
font-family: @categoryNameFont;
font-size: @categoryNameFontSize;
padding: @categoryNamePadding;
font-weight: @categoryNameFontWeight;
color: @categoryNameColor;
border-bottom: @categoryDivider;
}
/* Category Result */
.ui.category.search > .results .category .results {
display: table-cell;
background: @categoryResultBackground;
border-left: @categoryResultLeftBorder;
border-bottom: @categoryDivider;
}
.ui.category.search > .results .category .result {
border-bottom: @categoryResultDivider;
transition: @categoryResultTransition;
padding: @categoryResultPadding;
}
& when (@variationSearchHorizontalCategory) {
.ui.horizontal.category.search > .results .category,
.ui.horizontal.category.search > .results .category > .name,
.ui.horizontal.category.search > .results .category > .results {
display: block;
}
.ui.horizontal.category.search > .results .category > .results {
width: 100%;
border-left: 0;
}
}
}
/*******************************
Variations
*******************************/
& when (@variationSearchScrolling),
(@variationSearchShort),
(@variationSearchLong) {
/* -------------------
Scrolling
-------------------- */
.ui.scrolling.search > .results,
.ui.search.long > .results,
.ui.search.short > .results {
overflow-x: hidden;
overflow-y: auto;
overscroll-behavior: @overscrollBehavior;
backface-visibility: hidden;
}
}
& when (@variationSearchScrolling) {
@media only screen and (max-width: @largestMobileScreen) {
.ui.scrolling.search > .results {
max-height: @scrollingMobileMaxResultsHeight;
.resizable& when (@variationSearchResizable) {
height: @scrollingMobileMaxResultsHeight;
}
}
}
@media only screen and (min-width: @tabletBreakpoint) {
.ui.scrolling.search > .results {
max-height: @scrollingTabletMaxResultsHeight;
.resizable& when (@variationSearchResizable) {
height: @scrollingTabletMaxResultsHeight;
}
}
}
@media only screen and (min-width: @computerBreakpoint) {
.ui.scrolling.search > .results {
max-height: @scrollingComputerMaxResultsHeight;
.resizable& when (@variationSearchResizable) {
height: @scrollingComputerMaxResultsHeight;
}
}
}
@media only screen and (min-width: @widescreenMonitorBreakpoint) {
.ui.scrolling.search > .results {
max-height: @scrollingWidescreenMaxResultsHeight;
.resizable& when (@variationSearchResizable) {
height: @scrollingWidescreenMaxResultsHeight;
}
}
}
& when (@variationSearchResizable) {
.ui.scrolling.resizable.search > .results {
resize: @resizableDirection;
max-height: none;
}
}
}
@media only screen and (max-width: @largestMobileScreen) {
& when (@variationSearchShort) {
.ui.search.short > .results {
max-height: @scrollingMobileMaxResultsHeight;
}
& when (@variationSearchVeryShort) {
.ui.search[class*="very short"] > .results {
max-height: @scrollingMobileMaxResultsHeight * 0.75;
}
}
}
& when (@variationSearchLong) {
.ui.search.long > .results {
max-height: @scrollingMobileMaxResultsHeight * 2;
}
& when (@variationSearchVeryLong) {
.ui.search[class*="very long"] > .results {
max-height: @scrollingMobileMaxResultsHeight * 3;
}
}
}
}
@media only screen and (min-width: @tabletBreakpoint) {
& when (@variationSearchShort) {
.ui.search.short > .results {
max-height: @scrollingTabletMaxResultsHeight;
}
& when (@variationSearchVeryShort) {
.ui.search[class*="very short"] > .results {
max-height: @scrollingTabletMaxResultsHeight * 0.75;
}
}
}
& when (@variationSearchLong) {
.ui.search.long > .results {
max-height: @scrollingTabletMaxResultsHeight * 2;
}
& when (@variationSearchVeryLong) {
.ui.search[class*="very long"] > .results {
max-height: @scrollingTabletMaxResultsHeight * 3;
}
}
}
}
@media only screen and (min-width: @computerBreakpoint) {
& when (@variationSearchShort) {
.ui.search.short > .results {
max-height: @scrollingComputerMaxResultsHeight;
}
& when (@variationSearchVeryShort) {
.ui.search[class*="very short"] > .results {
max-height: @scrollingComputerMaxResultsHeight * 0.75;
}
}
}
& when (@variationSearchLong) {
.ui.search.long > .results {
max-height: @scrollingComputerMaxResultsHeight * 2;
}
& when (@variationSearchVeryLong) {
.ui.search[class*="very long"] > .results {
max-height: @scrollingComputerMaxResultsHeight * 3;
}
}
}
}
@media only screen and (min-width: @widescreenMonitorBreakpoint) {
& when (@variationSearchShort) {
.ui.search.short > .results {
max-height: @scrollingWidescreenMaxResultsHeight;
}
& when (@variationSearchVeryShort) {
.ui.search[class*="very short"] > .results {
max-height: @scrollingWidescreenMaxResultsHeight * 0.75;
}
}
}
& when (@variationSearchLong) {
.ui.search.long > .results {
max-height: @scrollingWidescreenMaxResultsHeight * 2;
}
& when (@variationSearchVeryLong) {
.ui.search[class*="very long"] > .results {
max-height: @scrollingWidescreenMaxResultsHeight * 3;
}
}
}
}
& when (@variationSearchAligned) {
/* -------------------
Left / Right
-------------------- */
.ui[class*="left aligned"].search > .results {
right: auto;
left: 0;
}
.ui[class*="right aligned"].search > .results {
right: 0;
left: auto;
}
}
/* --------------
Fluid
--------------- */
& when (@variationSearchFluid) {
.ui.fluid.search .results {
width: 100%;
}
}
/* --------------
Sizes
--------------- */
.ui.search {
font-size: @relativeMedium;
}
& when not (@variationFeedSizes = false) {
each(@variationFeedSizes, {
@s: @{value}SearchSize;
.ui.@{value}.search {
font-size: @@s;
}
});
}
/* --------------
Mobile
--------------- */
@media only screen and (max-width: @largestMobileScreen) {
.ui.search .results {
max-width: @mobileMaxWidth;
}
}
// stylelint-disable no-invalid-position-at-import-rule
@import (multiple, optional) "../../overrides.less";