shineout
Version:
Shein 前端组件库
736 lines (639 loc) • 15.9 kB
text/less
@import '../../styles/variables.less';
@import '../../styles/themes/@{so-theme}.less';
@datepicker-prefix: ~'@{so-prefix}-datepicker';
@input-title-prefix: ~'@{so-prefix}-input-title-box';
.@{datepicker-prefix} {
&:focus {
outline: none;
}
label& {
display: inline-block;
width: 150px;
}
label&-c-datetime
{
width: 240px;
}
label&-c-time,
label&-c-year
{
width: 120px;
}
label&-r-date,
label&-r-week,
label&-r-quarter,
label&-r-month {
width: 300px;
}
label&-r-datetime {
width: 420px;
}
label&-r-time {
width: 250px;
}
label&-r-year {
width: 240px;
}
&-title {
padding: 0 0 8px 0;
text-align: center;
// border-bottom: 1px solid @table-border-color;
}
&-title-box {
> .@{input-title-prefix}-content {
display: flex;
}
}
&-range &-title-box {
.@{datepicker-prefix}-txt:not(.@{datepicker-prefix}-text-focus) {
background: @primary-color-fade-5;
border-radius: @datepicker-radius;
}
}
&-inner {
width: 100%;
padding: @padding-base-vertical @padding-base-horizontal+12 @padding-base-vertical @padding-base-horizontal;
outline: none;
cursor: pointer;
.@{datepicker-prefix}-rtl&{
padding: @padding-base-vertical @padding-base-horizontal @padding-base-vertical @padding-base-horizontal + 12;
}
}
&-size-small&-inner {
padding: @padding-small-vertical @padding-small-horizontal+12 @padding-small-vertical @padding-small-horizontal;
.@{datepicker-prefix}-rtl&{
padding: @padding-small-vertical @padding-small-horizontal @padding-small-vertical @padding-small-horizontal+12;
}
}
&-size-large&-inner {
padding: @padding-large-vertical @padding-large-horizontal+12 @padding-large-vertical @padding-large-horizontal;
.@{datepicker-prefix}-rtl&{
padding: @padding-large-vertical @padding-large-horizontal @padding-large-vertical @padding-large-horizontal+12;
}
}
&-inner-title {
padding: @title-padding-base-vertical @title-padding-base-horizontal+12 @title-padding-base-vertical @title-padding-base-horizontal;
.@{datepicker-prefix}-rtl&{
padding: @title-padding-base-vertical @title-padding-base-horizontal @title-padding-base-vertical @title-padding-base-horizontal+12
}
}
&-size-small&-inner-title {
padding: @title-padding-small-vertical @title-padding-small-horizontal+12 @title-padding-small-vertical @title-padding-small-horizontal;
.@{datepicker-prefix}-rtl&{
padding: @title-padding-small-vertical @title-padding-small-horizontal @title-padding-small-vertical @title-padding-small-horizontal+12;
}
}
&-size-large&-inner-title {
padding: @title-padding-large-vertical @title-padding-large-horizontal+12 @title-padding-large-vertical @title-padding-large-horizontal;
.@{datepicker-prefix}-rtl&{
padding: @title-padding-large-vertical @title-padding-large-horizontal @title-padding-large-vertical @title-padding-large-horizontal+12;
}
}
&-result {
position: relative;
display: flex;
cursor: pointer;
.@{datepicker-prefix}-icon {
position: absolute;
top: 50%;
right: 0;
width: 14px;
height: 14px;
margin: -9px -16px 0 0;
font-size: 14px;
.@{datepicker-prefix}-rtl & {
right: auto;
left: 0;
margin-right: 0;
margin-left: -16px;
}
path {
transition: all .2s;
fill: @gray-500;
}
}
.@{datepicker-prefix}-close {
display: none;
}
.@{datepicker-prefix}-close:hover {
path {
fill: @gray-700;
}
}
.@{datepicker-prefix}-txt {
flex: 1;
outline: none;
&:after {
content: '\feff ';
}
}
}
&-disabled &-result {
cursor: not-allowed;
}
&-range &-result &-txt {
text-align: center;
}
&-txt[contenteditable="true"] {
cursor: text;
}
&-separate {
margin: 0 @datepicker-margin;
}
&-txt&-text-focus {
background: @colors-primary;
color: #fff;
border-radius: @datepicker-radius;
}
&:hover &-result {
.@{datepicker-prefix}-indecator {
display: none;
}
.@{datepicker-prefix}-close {
display: block;
}
}
&-picker {
position: absolute;
z-index: @zindex-dropdown;
padding: 12px;
color: @input-color;
background: #fff;
background-clip: padding-box;
border-radius: @input-dropdown-border-radius;
box-shadow: 0 0 1px 1px rgba(0, 0, 0, 0.02), @datepicker-box-shadow;
font-size: @font-size-base;
&.@{datepicker-prefix}-quick {
&-ltr{
padding-left: 0;
}
&-rtl {
padding-right: 0;
}
}
span {
color: @gray-600;
}
.@{datepicker-prefix}-header {
display: flex;
padding: 4px 8px;
span {
cursor: pointer;
line-height: 1;
&:hover {
color: @colors-primary;
}
}
.@{datepicker-prefix}-icon {
width: 18px;
height: 16px;
padding: 0 4px;
path {
fill: @gray-600;
}
&:hover path {
fill: @colors-primary;
}
&.@{datepicker-prefix}-disabled {
cursor: not-allowed;
path {
fill: @gray-400;
}
}
}
.@{datepicker-prefix}-ym {
flex: 1;
text-align: center;
span {
padding: 0 6px;
}
}
.@{datepicker-prefix}-ym + .@{datepicker-prefix}-ym {
text-align: left;
text-align: start;
}
}
span.@{datepicker-prefix}-today {
color: @colors-primary;
background: transparent;
box-shadow: 0 0 0 1px @colors-primary inset;
}
.@{datepicker-prefix}-list span {
&:hover {
background: @datepicker-day-hover-bg;
color: #000;
}
&:hover.@{datepicker-prefix}-today {
background: transparent;
color: @colors-primary;
}
}
span.@{datepicker-prefix}-active,
span.@{datepicker-prefix}-active:hover {
background: @colors-primary;
color: #fff;
}
span.@{datepicker-prefix}-active:hover.@{datepicker-prefix}-today {
background: @colors-primary;
color: #fff;
}
}
&-left-bottom &-picker {
top: 100%;
left: 0;
margin-top: 4px;
}
&-left-top &-picker {
bottom: 100%;
left: 0;
margin-bottom: 4px;
box-shadow: 0 0 1px 1px rgba(0, 0, 0, 0.02), @datepicker-box-shadow-up;
}
&-right-top &-picker {
right: 0;
bottom: 100%;
margin-bottom: 4px;
box-shadow: 0 0 1px 1px rgba(0, 0, 0, 0.02), @datepicker-box-shadow-up;
}
&-right-bottom &-picker {
top: 100%;
right: 0;
margin-top: 4px;
}
&-day-picker,
&-month-picker,
&-quarter-picker,
&-year-picker {
width: 252px;
span {
user-select: none;
}
}
&-split {
display: flex;
}
&-range-picker {
display: flex;
& > div:nth-child(2) {
padding-left: 6px;
.@{datepicker-prefix}-rtl & {
padding-left: 0;
padding-right: 6px;
}
}
& > div:nth-last-child(2) {
padding-right: 6px;
.@{datepicker-prefix}-rtl & {
padding-left: 6px;
padding-right: 0;
}
}
& > div:last-child {
position: relative;
&:before {
content: ' ';
position: absolute;
left: 0px;
height: 100%;
border-left: 1px solid @divider-color;
.@{datepicker-prefix}-rtl & {
left: auto;
right: -6px;
}
}
}
}
&-day-picker {
display: flex;
flex-direction: column;
height: 100%;
.@{datepicker-prefix}-week {
margin-bottom: 4px;
border-bottom: solid 1px #f2f2f2;
text-align: center;
span {
display: inline-block;
width: 28px;
margin: 8px 4px;
}
}
.@{datepicker-prefix}-list {
position: relative;
z-index: 10;
background: #fff;
text-align: center;
div {
display: inline-block;
width: 36px;
height: 32px;
padding: 2px 0;
margin-bottom: 4px;
}
div.@{datepicker-prefix}-hover,
div.@{datepicker-prefix}-active {
background: @datepicker-day-hover-bg;
}
div.@{datepicker-prefix}-hover-start {
border-bottom-left-radius: 16px;
border-top-left-radius: 16px;
.@{datepicker-prefix}-rtl & {
border-bottom-left-radius: 0;
border-top-left-radius: 0;
border-bottom-right-radius: 16px;
border-top-right-radius: 16px;
}
}
div.@{datepicker-prefix}-hover-end {
border-bottom-right-radius: 16px;
border-top-right-radius: 16px;
.@{datepicker-prefix}-rtl & {
border-bottom-right-radius: 0;
border-top-right-radius: 0;
border-bottom-left-radius: 16px;
border-top-left-radius: 16px;
}
}
div.@{datepicker-prefix}-active {
&.@{datepicker-prefix}-hover-start,
&.@{datepicker-prefix}-hover-end {
span {
background: @colors-primary;
color: #fff;
}
}
}
span {
display: block;
width: 28px;
height: 28px;
margin: 0 auto;
border-radius: 14px;
cursor: pointer;
font-size: 13px;
line-height: 28px;
text-align: center;
}
.@{datepicker-prefix}-disabled {
color: @gray-400;
cursor: not-allowed;
&.@{datepicker-prefix}-today {
box-shadow: 0 0 0 1px @gray-400 inset;
&:hover {
color: @gray-400;
}
}
}
.@{datepicker-prefix}-other-month {
color: @gray-400;
}
}
.@{datepicker-prefix}-datetime {
position: relative;
padding-top: 12px;
padding-left: 12px;
border-top: solid 1px #f2f2f2;
.@{datepicker-prefix}-rtl &{
padding-left: 0px;
padding-right: 12px;
}
.@{datepicker-prefix}-clock {
fill: @gray-600;
margin-right: 8px;
position: relative;
.@{datepicker-prefix}-rtl &{
margin-right: 0;
margin-left: 8px;
}
top: 2px;
> svg {
width: 14px;
height: 14px;
}
}
.@{datepicker-prefix}-time-picker {
position: absolute;
z-index: 0;
bottom: 100%;
left: 0;
background: #fff;
box-shadow: 0 0 1px 1px rgba(0, 0, 0, 0.02), @datepicker-box-shadow-up;
visibility: hidden;
.@{datepicker-prefix}-rtl &{
left: auto;
right: 0
}
}
&:hover .@{datepicker-prefix}-time-picker {
z-index: 100;
visibility: visible;
}
}
}
&-month-picker {
.@{datepicker-prefix}-list {
padding-top: 12px;
text-align: center;
span {
display: inline-block;
width: 70px;
padding: 4px 6px;
margin: 6px 5px;
border-radius: @datepicker-rect-active-border-radius;
cursor: pointer;
}
.@{datepicker-prefix}-disabled {
color: @gray-400;
cursor: not-allowed;
}
}
}
&-quarter-picker {
.@{datepicker-prefix}-list {
padding-top: 12px;
text-align: center;
white-space: nowrap;
> div {
display: inline-block;
width: 25%;
padding: 0 5px;
margin: 5px 0;
position: relative;
> span {
display: inline-block;
width: 100%;
text-align: center;
padding: 4px 0;
border-radius: @datepicker-rect-active-border-radius;
cursor: pointer;
}
}
.@{datepicker-prefix}-disabled {
color: @gray-400;
cursor: not-allowed;
}
}
}
&-year-picker {
.@{datepicker-prefix}-list {
padding-top: 12px;
text-align: center;
span {
display: inline-block;
width: 50px;
padding: 4px 6px;
margin: 4px 15px;
border-radius: @datepicker-rect-active-border-radius;
cursor: pointer;
}
.@{datepicker-prefix}-disabled {
color: @gray-400;
cursor: not-allowed;
}
}
}
&-time-picker {
width: auto;
font-size: 0;
white-space: nowrap;
.@{datepicker-prefix}-time-list {
position: relative;
display: inline-block;
overflow: hidden;
width: 65px;
height: 150px;
box-sizing: border-box;
flex-direction: column;
border-right: solid 1px @gray-200;
background: linear-gradient(
to bottom,
@gray-100,
@gray-100,
@datepicker-time-height,
transparent @datepicker-time-height,
transparent
)
0 @datepicker-time-height*2;
font-size: @font-size-base;
text-align: left;
.@{datepicker-prefix}-rtl & {
text-align: right;
}
&:last-child {
border-right: 0;
.@{datepicker-prefix}-rtl & {
border-right: 1px solid @gray-200;
}
}
&:first-child {
.@{datepicker-prefix}-rtl & {
border-right: 0;
}
}
.@{datepicker-prefix}-pad {
height: @datepicker-time-height * 2;
}
span,
a {
display: block;
padding-left: 18px;
color: #eee;
line-height: @datepicker-time-height;
height: @datepicker-time-height;
.@{datepicker-prefix}-rtl & {
padding-left: 0;
padding-right: 18px;
}
}
.@{datepicker-prefix}-time-active {
color: #000;
font-weight: bold;
}
&:hover {
overflow: auto;
}
}
}
&-absolute {
.@{datepicker-prefix}-absolute-left-top {
box-shadow: 0 0 1px 1px rgba(0, 0, 0, 0.02), @datepicker-box-shadow-up;
}
.@{datepicker-prefix}-absolute-right-top {
box-shadow: 0 0 1px 1px rgba(0, 0, 0, 0.02), @datepicker-box-shadow-up;
}
}
&-quick-select {
min-width: 80px;
border-right: 1px solid @divider-color;
.@{datepicker-prefix}-rtl & {
border-right: none;
border-left: 1px solid @divider-color;
}
&-item {
max-width: 120px;
text-overflow: ellipsis;
overflow: hidden;
white-space: nowrap;
padding: 4px 12px;
cursor: pointer;
position: relative;
transition: all .2s;
&:hover {
background: @primary-color-fade-10;
}
&::after {
content: '';
transition: all .2s;
opacity: 0;
background: @colors-primary;
position: absolute;
right: 0;
top: 0;
bottom: 0;
width: 2px;
.@{datepicker-prefix}-rtl & {
right: auto;
left: 0;
}
}
&-active {
color: @colors-primary;
&:after {
opacity: 1;
}
}
}
}
&-align {
&-left, &-right {
.@{datepicker-prefix}-result {
display: block;
.@{datepicker-prefix}-txt {
flex: none;
&.@{datepicker-prefix}-text-focus {
background: transparent;
color: @colors-primary;
border-radius: 0;
}
}
}
}
&-right .@{datepicker-prefix}-result {
text-align: right;
}
&-center .@{datepicker-prefix}-result {
text-align: center;
}
}
}
.@{datepicker-prefix}-rtl {
direction: rtl;
text-align: right;
.@{datepicker-prefix}-picker {
.@{datepicker-prefix}-header {
.@{datepicker-prefix}-left,
.@{datepicker-prefix}-right {
transform: rotate(180deg);
}
}
}
}