mediawiki-skins-Citizen/resources/skins.citizen.styles/Search.less
alistair3149 1939850369
feat(core): allow multiple search components on the same page
This will allow the search suggestion to hook up to multiple search
boxes with `.citizen-search-box` as container. Do note that the default
Citizen suggestion is hardcoded for the primary search, so it only
works for the old core search suggestion module.

This is also a prereq for implementing the Codex search like the one
from Vector.
2022-12-02 17:35:23 -05:00

151 lines
2.8 KiB
Plaintext

@width-search-bar: 480px;
.citizen-search {
--width-search-bar: @width-search-bar;
--height-search-bar: var( --header-button-size );
&__card {
position: absolute;
left: 100%;
display: flex;
width: var( --width-search-bar );
max-width: ~'calc(100vw - var( --padding-page ) )';
height: var( --height-search-bar );
margin: var( --space-xs );
gap: 0.25rem;
.citizen-card();
.citizen-card-hide( top left, X, false );
.citizen-ui-icon {
width: var( --height-search-bar );
height: var( --height-search-bar );
&:before {
background-size: 1rem;
}
}
/**
* Loading indicator for searchbox
* See common/progressbar.less
**/
&.citizen-loading:after {
position: absolute;
top: 100%;
}
}
&__icon,
&__random {
// So that searchInput has the full width,
// and search suggestions will match that width
position: absolute;
}
&__icon {
left: 0;
}
&__random {
right: 0;
border-radius: var( --border-radius--small );
.citizen-ui-icon:before {
transition: @transition-transform;
}
&:hover {
background-color: var( --background-color-quiet--hover );
.citizen-ui-icon:before {
opacity: var( --opacity-icon-base--hover );
transform: rotate( 30deg );
}
}
&:active {
background-color: var( --background-color-quiet--active );
.citizen-ui-icon:before {
opacity: var( --opacity-icon-base--active );
}
}
}
#searchform {
flex-grow: 1;
}
#searchInput {
width: 100%;
height: 100%;
padding: 0 var( --height-search-bar );
border: 0; // Cancel default border
appearance: none;
background: transparent; // Cancel default background
font-size: 0.8125rem;
&:focus {
outline: 0;
// The search suggestion pop-up indicates for focus state
// border-color: var( --color-primary );
// box-shadow: inset 0 0 0 1px var( --color-primary );
}
}
}
// Checkbox hack
#citizen-search__checkbox:checked {
~ .citizen-search__card {
.citizen-card-show( false );
}
}
.citizen-animations-ready {
.citizen-search__card {
.citizen-card-transition();
}
}
@media ( max-width: @width-breakpoint-desktop ) {
.citizen-search__card {
position: fixed;
top: 0;
right: 0;
left: 0;
width: auto;
// Remove searchbox open animation on mobile
// But keep suggestion animation
// So user can get to search instantly
.citizen-animations-ready & {
transition: none;
}
}
#citizen-search__checkbox:checked {
+ .citizen-search__card {
z-index: 2;
}
// HACK: Click overlay to dismiss search bar
~ .citizen-search__button {
.citizen-search__buttonIcon {
display: none;
}
#citizen-search__buttonCheckbox {
position: fixed;
z-index: 1;
top: 0;
right: 0;
bottom: 0;
left: 0;
width: auto;
height: auto;
background-color: var( --background-color-overlay );
}
}
}
}