rsuite
Version:
A suite of react components
242 lines (200 loc) • 4.71 kB
text/less
@import '../../styles/common';
@import 'mixin';
.@{ns}drawer-wrapper {
position: fixed;
z-index: @zindex-drawer;
top: 0;
}
// Container that the drawer scrolls within
.@{ns}drawer {
display: none;
overflow: hidden;
position: fixed;
z-index: @zindex-drawer;
// Prevent Chrome on Windows from adding a focus outline. For details, see
// https://github.com/twbs/bootstrap/pull/10951.
outline: 0;
// Kill the scroll on the body
&-open&-has-backdrop {
overflow: hidden;
}
// Drawer sizes
&-left,
&-right {
top: 0;
height: 100%;
&.@{ns}drawer-lg {
.drawer-content-width(@drawer-horizontal-lg);
}
&.@{ns}drawer-md {
.drawer-content-width(@drawer-horizontal-md);
}
&.@{ns}drawer-sm {
.drawer-content-width(@drawer-horizontal-sm);
}
&.@{ns}drawer-xs {
.drawer-content-width(@drawer-horizontal-xs);
}
}
&-top,
&-bottom {
width: 100%;
&.@{ns}drawer-lg {
.drawer-content-height(@drawer-vertical-lg);
}
&.@{ns}drawer-md {
.drawer-content-height(@drawer-vertical-md);
}
&.@{ns}drawer-sm {
.drawer-content-height(@drawer-vertical-sm);
}
&.@{ns}drawer-xs {
.drawer-content-height(@drawer-vertical-xs);
}
}
// Full page
&-full {
@max-width: ~'calc(100% - @{drawer-full-size-margin})';
@max-height: @max-width;
&.@{ns}drawer-top,
&.@{ns}drawer-bottom {
.drawer-content-height(@max-height);
.@{ns}drawer-content {
height: 100%;
}
}
&.@{ns}drawer-left,
&.@{ns}drawer-right {
.drawer-content-width(@max-width);
}
}
// Drawer directions
&-right {
right: 0;
}
&-left {
left: 0;
}
&-top {
top: 0;
}
&-bottom {
bottom: 0;
}
}
// Make sure drawer can be show in Safari.
.@{ns}drawer-open .@{ns}drawer {
overflow: visible;
}
.@{ns}drawer-dialog {
position: relative;
width: 100%;
height: 100%;
}
.@{ns}drawer-content {
position: absolute;
background-color: @drawer-content-bg;
outline: 0;
width: 100%;
height: 100%;
box-shadow: @drawer-box-shadow;
}
.@{ns}drawer-backdrop {
position: fixed;
top: 0;
right: 0;
bottom: 0;
left: 0;
z-index: @zindex-drawer-background;
background-color: @drawer-backdrop-bg;
// Fade for backdrop
&.fade {
opacity: 0;
transition: opacity 0.3s ease-in;
}
&.in {
opacity: @drawer-backdrop-opacity;
}
}
// Drawer body
.@{ns}drawer-body {
position: relative;
margin: @drawer-body-margin @drawer-content-spacing;
// Javascript handle height
overflow: auto;
}
// Measure scrollbar width for padding body during modal show/hide
.@{ns}drawer-scrollbar-measure {
position: absolute;
top: -9999px;
width: 50px;
height: 50px;
overflow: scroll;
}
// Drawer header
// Top section of the modal title.
.@{ns}drawer-header {
.clearfix;
padding-right: @line-height-computed;
position: relative;
margin: @drawer-content-spacing @drawer-content-spacing 0;
.@{ns}drawer-title {
font-size: @drawer-title-font-size;
line-height: unit(@line-height-computed / @drawer-title-font-size);
width: 100%;
display: block;
color: @drawer-title-color;
.ellipsis;
}
}
// Close Button
.@{ns}drawer-header .@{ns}drawer-header-close {
// button width the same to height
@padding-right: (@line-height-computed - @drawer-close-btn-size)/2;
outline: 0;
position: absolute;
right: 0;
top: 0;
font-size: @drawer-close-btn-size;
line-height: @drawer-close-btn-line-height;
color: @drawer-close-btn-color;
width: @line-height-computed;
padding: 0 @padding-right;
background: none;
// Remove border in IE/Firefox and so on.
border-style: none;
&::before {
.icon-font;
content: @default-close-btn-content;
}
[aria-hidden] {
display: none;
}
}
// Title text within header
.@{ns}drawer-header .@{ns}title {
margin: 0;
color: @text-primary-color;
font-size: @modal-title-font-size;
line-height: @modal-title-line-height;
}
// Footer (for actions)
.@{ns}drawer-footer {
.clearfix; // clear it in case folks use .pull-* classes on buttons
text-align: right; // right align buttons
border-top: none;
margin: 0 @drawer-content-spacing @drawer-content-spacing;
// Properly space out buttons
.@{ns}btn + .@{ns}btn {
margin-left: 10px;
margin-bottom: 0; // account for input[type="submit"] which gets the bottom margin like all other inputs
}
// but override that for button groups
.@{ns}btn-group .@{ns}btn + .@{ns}btn {
margin-left: -1px;
}
// and override it for block buttons as well
.@{ns}btn-block + .@{ns}btn-block {
margin-left: 0;
}
}