rsuite
Version:
A suite of react components
454 lines (369 loc) • 9.34 kB
text/less
@import '../../../styles/common.less';
@import '../../../Button/styles/index.less';
@import '../../../styles/mixins/listbox.less';
@import '../../../styles/mixins/combobox.less';
@import '../../../Stack/styles/index.less';
@import '../../../Form/styles/mixin.less';
@import '../../CloseButton/styles/index.less';
@import '../../../Loader/styles/index.less';
@import '../../../Input/styles/index.less';
@import '../../../InputGroup/styles/index.less';
@import '../../../Highlight/styles/index.less';
@import './mixin.less';
//
// Pickers
// --------------------------------------------------
// Common styles
// ----------------------
.rs-picker {
&-toggle-wrapper {
display: inline-block;
// Clear whitespace.
vertical-align: middle;
max-width: 100%;
}
&-toggle.rs-btn {
.rs-ripple-pond {
display: none ;
}
}
&-block {
display: block;
}
&-disabled {
cursor: not-allowed;
.rs-picker-toggle-value,
.rs-picker-toggle-indicator,
.rs-picker-tag-list .rs-tag {
color: var(--rs-text-disabled) ;
}
.rs-picker-value-count {
opacity: 0.5;
}
}
&-toggle &-toggle-placeholder {
color: var(--rs-text-secondary);
}
&-has-value .rs-btn &-toggle-value,
&-has-value &-toggle &-toggle-value {
color: var(--rs-picker-value);
}
// empty listbox
&-none {
padding: @picker-none-padding;
color: var(--rs-text-secondary);
cursor: default;
}
&-countable &-toggle-value {
display: flex;
}
&-value-list {
flex: 0 1 auto;
.ellipsis-basic();
.ie11-max-width(100%);
}
&-value-count {
margin: 0 @picker-value-count-margin;
background-color: var(--rs-picker-count-bg);
color: var(--rs-picker-count-text);
border-radius: @picker-value-count-border-radius;
padding: 0 @picker-value-count-padding;
line-height: @line-height-computed;
}
&-value-separator {
margin: 0 4px 0 0;
}
&:not(.rs-picker-disabled):hover,
&.rs-picker-focused {
border-color: var(--rs-input-focus-border);
}
&-toggle-active,
&.rs-picker-focused {
box-shadow: var(--rs-state-focus-shadow);
}
&-label.rs-input-group-addon {
color: var(--rs-text-primary);
padding-right: 4px ;
}
&-loader {
width: 14px;
height: 14px;
display: flex;
align-items: center;
}
&-error > .rs-picker-input-group {
border-color: var(--rs-picker-state-error);
&:hover {
border-color: var(--rs-picker-state-error);
}
&:focus-within {
border-color: var(--rs-picker-state-error);
outline: var(--rs-picker-state-error-outline);
}
}
}
.rs-picker-toggle {
// TODO: Should inherit from <Input> styles?
.rs-btn();
.rs-picker-default & {
@padding-vertical: (@padding-y - @picker-default-toggle-border-width);
@padding-horizontal: (@padding-x - @picker-default-toggle-border-width);
padding: @padding-vertical @padding-horizontal;
}
&-textbox {
position: absolute;
width: 100%;
height: 100%;
left: 0;
top: 0;
border: 1px solid #0000;
padding-left: 10px;
padding-right: 32px;
color: var(--rs-text-primary);
background-color: var(--rs-input-bg);
outline: none;
}
&.rs-btn-lg &-textbox {
padding-left: 14px;
}
&.rs-btn-sm &-textbox {
padding-left: 8px;
}
&.rs-btn-xs &-textbox {
padding-left: 6px;
}
&-read-only {
opacity: 0;
}
}
.rs-picker-toggle {
.rs-picker-default & {
transition: @picker-transition;
.high-contrast-mode({
transition: none;
});
}
.rs-picker-default:not(.rs-picker-disabled) & {
&:hover,
&:focus,
&-active {
border-color: var(--rs-input-focus-border);
}
}
.rs-picker-subtle & {
.rs-btn-subtle();
transition: none;
&-active {
background-color: var(--rs-btn-subtle-hover-bg);
color: var(--rs-btn-subtle-hover-text);
}
}
}
/* stylelint-disable-next-line */ // Custom button sizes
.rs-picker-toggle.rs-btn {
.picker-button-caret-md();
.date-picker-button-caret-md();
.date-picker-button-size(base);
&-lg {
.picker-button-caret-lg();
.picker-default-button-reset-padding-left(large);
.date-picker-button-caret-lg();
.date-picker-button-size(large);
.button-size-lg();
.rs-picker-value-count {
line-height: @line-height-large-computed;
}
}
&-md {
.picker-button-caret-md();
.picker-default-button-reset-padding-left(base);
.date-picker-button-caret-md();
.date-picker-button-size(base);
}
&-sm {
.button-size-sm();
.picker-button-caret-sm();
.picker-default-button-reset-padding-left(small);
.date-picker-button-caret-sm();
.date-picker-button-size(small);
}
&-xs {
.button-size-xs();
.picker-button-caret-xs();
.picker-default-button-reset-padding-left(extra-small);
.date-picker-button-caret-xs();
.date-picker-button-size(extra-small);
}
}
/* stylelint-disable-next-line */ // Custom button
.rs-picker-toggle {
.picker-default-toggle();
.picker-subtle-toggle();
&.rs-btn {
width: 100%;
text-align: left;
}
.ellipsis();
&-label {
color: var(--rs-text-primary);
&::after {
content: ':';
margin: 0 4px 0 2px;
}
}
&-value {
display: block;
.ellipsis();
}
.rs-picker-cleanable.rs-picker-has-value & {
padding-right: (@dropdown-toggle-padding-right + @picker-toggle-clean-width);
}
}
.rs-picker-toggle-indicator {
// Picker clear button
.rs-picker-clean {
.combobox-indicator-icon(@picker-toggle-clean-right);
background: inherit;
color: var(--rs-text-secondary);
transition: 0.2s color linear;
cursor: pointer;
&.rs-btn-close {
padding: 4px 0;
}
.rs-@{date-picker-prefix} &,
.rs-@{date-range-picker-prefix} & {
right: (@picker-toggle-clean-right + @picker-item-content-padding-vertical);
}
}
// Picker toggle caret
.rs-picker-caret-icon {
// Extend Dropdown toggle caret style
.combobox-indicator-icon();
font-size: 16px;
color: var(--rs-text-secondary);
}
.rs-picker-loader {
.combobox-indicator-icon();
}
}
// Picker Menu
.rs-picker-popup {
position: absolute;
text-align: left;
z-index: @zindex-picker-popup;
border-radius: @border-radius;
background-color: var(--rs-bg-overlay);
box-shadow: var(--rs-shadow-overlay);
overflow: hidden;
// Remove transition
transition: none;
display: flex;
flex-direction: column;
padding: @border-radius 0;
.high-contrast-mode({
border: 1px solid var(--rs-border-primary);
});
// Increase z-index when modal opened.
.rs-modal-open & {
z-index: (@zindex-modal + @zindex-picker-toggle);
}
// Increase z-index when drawer opened.
.rs-drawer-open & {
z-index: (@zindex-drawer + @zindex-picker-toggle);
}
&.rs-picker-inline {
position: relative;
box-shadow: none;
}
.rs-search-box {
padding: (@picker-menu-padding - @border-radius) @picker-menu-padding
(@picker-menu-padding - @border-radius);
}
.rs-highlight .rs-highlight-mark {
padding: 0;
}
}
// Make sure styles the same with <Input>
.rs-picker-default,
.rs-picker-input {
.rs-btn,
.rs-picker-toggle {
background-color: var(--rs-input-bg) ;
}
&.rs-picker-disabled .rs-picker-toggle,
&.rs-picker-disabled .rs-btn {
background-color: var(--rs-input-disabled-bg) ;
}
&.rs-picker-disabled .rs-input-group {
pointer-events: none;
}
}
// Check Item
.rs-check-item {
display: block;
&:not(.rs-checkbox-disabled):hover,
&:focus,
&&-focus {
.listbox-option-active();
.high-contrast-mode({
.rs-check-tree-node-text-wrapper {
text-decoration: underline;
}
});
}
.rs-checkbox-checker {
padding: 0;
> label {
position: relative;
cursor: pointer;
display: block;
padding: @picker-item-content-padding-vertical @picker-item-content-padding-horizontal
@picker-item-content-padding-vertical @picker-check-item-content-padding-left;
line-height: @line-height-computed;
.high-contrast-mode({
transition: none;
});
&::before {
background-color: var(--rs-bg-overlay);
.high-contrast-mode({
background: none;
});
}
.rs-checkbox-disabled& {
cursor: not-allowed;
}
.grouped &,
.@{ckpns}-menu-group-children & {
padding-left: @picker-check-item-content-padding-left +
@picker-children-check-item-padding-left;
}
}
.rs-checkbox-control {
left: @picker-item-content-padding-horizontal;
.grouped &,
.@{ckpns}-menu-group-children & {
left: (@picker-item-content-padding-horizontal + @picker-children-check-item-padding-left);
}
}
}
}
.rs-picker-menu-group {
background-color: var(--rs-listbox-option-group-bg);
position: sticky;
top: -1px;
z-index: 1;
}
.rs-virt-list {
// Use for single selection
.rs-picker-select-menu-item,
// Use for multiple selection with Checkbox
.rs-check-item label {
.ellipsis-basic();
}
}
.rs-tree-virt-list {
// Use for single selection
.rs-tree-node-label {
.ellipsis-basic();
}
}