292 lines
6.6 KiB
SCSS
292 lines
6.6 KiB
SCSS
|
|
@use 'src/utils';
|
||
|
|
|
||
|
|
|
||
|
|
.c__date-picker {
|
||
|
|
position: relative;
|
||
|
|
|
||
|
|
|
||
|
|
&__wrapper {
|
||
|
|
border-radius: var(--c--components--forms-datepicker--border-radius);
|
||
|
|
border-width: var(--c--components--forms-datepicker--border-width);
|
||
|
|
border-color: var(--c--components--forms-datepicker--border-color);
|
||
|
|
border-style: var(--c--components--forms-datepicker--border-style);
|
||
|
|
display: flex;
|
||
|
|
align-items: center;
|
||
|
|
transition: border var(--c--theme--transitions--duration) var(--c--theme--transitions--ease-out);
|
||
|
|
padding: 0 0.75rem;
|
||
|
|
gap: 1rem;
|
||
|
|
color: var(--c--components--forms-datepicker--color);
|
||
|
|
box-sizing: border-box;
|
||
|
|
height: var(--c--components--forms-datepicker--height);
|
||
|
|
background-color: var(--c--components--forms-datepicker--background-color);
|
||
|
|
position: relative;
|
||
|
|
overflow: hidden;
|
||
|
|
|
||
|
|
&--clickable {
|
||
|
|
cursor: pointer;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
&__inner {
|
||
|
|
flex-grow: 1;
|
||
|
|
display: flex;
|
||
|
|
justify-content: space-between;
|
||
|
|
user-select: none;
|
||
|
|
min-width: 0;
|
||
|
|
|
||
|
|
&--clickable {
|
||
|
|
cursor: pointer;
|
||
|
|
}
|
||
|
|
|
||
|
|
&__value {
|
||
|
|
display: flex;
|
||
|
|
font-size: var(--c--components--forms-datepicker--font-size);
|
||
|
|
overflow: hidden;
|
||
|
|
flex-grow: 1;
|
||
|
|
|
||
|
|
&__segment {
|
||
|
|
&--empty {
|
||
|
|
color: var(--c--components--forms-field--color);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
&__action {
|
||
|
|
display: flex;
|
||
|
|
align-items: center;
|
||
|
|
height: auto;
|
||
|
|
|
||
|
|
&.c__button--small.c__button--icon-only {
|
||
|
|
width: 1.25rem;
|
||
|
|
}
|
||
|
|
|
||
|
|
&--empty {
|
||
|
|
color: var(--c--components--forms-field--color);
|
||
|
|
}
|
||
|
|
|
||
|
|
.material-icons {
|
||
|
|
font-size: 1rem;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
/** Modifiers */
|
||
|
|
|
||
|
|
&--disabled {
|
||
|
|
.c__date-picker__wrapper {
|
||
|
|
color: var(--c--theme--colors--greyscale-600);
|
||
|
|
border-color: var(--c--theme--colors--greyscale-300);
|
||
|
|
cursor: default;
|
||
|
|
pointer-events: none;
|
||
|
|
|
||
|
|
label {
|
||
|
|
color: var(--c--theme--colors--greyscale-400);
|
||
|
|
}
|
||
|
|
|
||
|
|
&__toggle {
|
||
|
|
color: var(--c--theme--colors--greyscale-400);
|
||
|
|
}
|
||
|
|
|
||
|
|
.c__date-picker__inner {
|
||
|
|
color: var(--c--theme--colors--greyscale-600);
|
||
|
|
&__action {
|
||
|
|
color: var(--c--theme--colors--greyscale-400);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
label {
|
||
|
|
cursor: default;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
&--invalid {
|
||
|
|
.c__date-picker__wrapper {
|
||
|
|
border-color: var(--c--theme--colors--danger-600);
|
||
|
|
border-radius: var(--c--components--forms-datepicker--border-radius);
|
||
|
|
|
||
|
|
&__toggle {
|
||
|
|
color: var(--c--theme--colors--danger-600);
|
||
|
|
}
|
||
|
|
|
||
|
|
label {
|
||
|
|
color: var(--c--theme--colors--danger-600);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
&:not(.c__date-picker--disabled) {
|
||
|
|
&:hover {
|
||
|
|
.c__date-picker__wrapper {
|
||
|
|
border-color: var(--c--theme--colors--danger-200);
|
||
|
|
&__toggle {
|
||
|
|
color: var(--c--theme--colors--danger-200);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
&--success {
|
||
|
|
.c__date-picker__wrapper {
|
||
|
|
border-color: var(--c--theme--colors--success-600);
|
||
|
|
border-radius: var(--c--components--forms-datepicker--border-radius);
|
||
|
|
|
||
|
|
&__toggle {
|
||
|
|
color: var(--c--theme--colors--success-600);
|
||
|
|
}
|
||
|
|
|
||
|
|
label {
|
||
|
|
color: var(--c--theme--colors--success-600);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
&:not(.c__date-picker--disabled) {
|
||
|
|
&:hover {
|
||
|
|
.c__date-picker__wrapper {
|
||
|
|
border-color: var(--c--theme--colors--success-200);
|
||
|
|
&__toggle {
|
||
|
|
color: var(--c--theme--colors--success-200);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
&--focused {
|
||
|
|
.c__date-picker__wrapper {
|
||
|
|
border-radius: var(--c--components--forms-datepicker--border-radius--focus);
|
||
|
|
border-color: var(--c--components--forms-datepicker--border-color--focus);
|
||
|
|
|
||
|
|
&__toggle {
|
||
|
|
color: var(--c--components--forms-datepicker--border-color--focus);
|
||
|
|
}
|
||
|
|
}}
|
||
|
|
|
||
|
|
&:not(&--focused):not(&--invalid):not(&--disabled):not(&--success) {
|
||
|
|
&:hover {
|
||
|
|
.c__date-picker__wrapper {
|
||
|
|
border-radius: var(--c--components--forms-datepicker--border-radius--hover);
|
||
|
|
border-color: var(--c--components--forms-datepicker--border-color--hover);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
.c__calendar {
|
||
|
|
display: block;
|
||
|
|
transform: translate(2px, 0);
|
||
|
|
|
||
|
|
&__wrapper {
|
||
|
|
display: block;
|
||
|
|
padding: 0.75rem;
|
||
|
|
|
||
|
|
&--opened {
|
||
|
|
@extend %shadow;
|
||
|
|
background-color: var(--c--components--forms-datepicker--menu-background-color);
|
||
|
|
}
|
||
|
|
|
||
|
|
&__header {
|
||
|
|
display: flex;
|
||
|
|
justify-content: space-between;
|
||
|
|
|
||
|
|
&__actions {
|
||
|
|
display: flex;
|
||
|
|
align-items: center;
|
||
|
|
justify-content: space-between;
|
||
|
|
overflow: hidden;
|
||
|
|
white-space: nowrap;
|
||
|
|
min-width: 8.5rem;
|
||
|
|
|
||
|
|
&__dropdown {
|
||
|
|
padding: 0 0 0 0.5rem;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
&__grid {
|
||
|
|
width: 100%;
|
||
|
|
padding-top: 0.5rem;
|
||
|
|
table-layout: fixed;
|
||
|
|
|
||
|
|
&__header-row {
|
||
|
|
line-height: 3rem;
|
||
|
|
font-size: var(--c--components--button--small-font-size);
|
||
|
|
|
||
|
|
th {
|
||
|
|
font-weight: var(--c--components--button--font-weight);
|
||
|
|
color: var(--c--theme--colors--greyscale-700);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
&__week-row {
|
||
|
|
&__button {
|
||
|
|
margin: 0.2rem auto;
|
||
|
|
&--today {
|
||
|
|
border: 1px solid var(--c--components--forms-datepicker--grid-cell--border-color--today);
|
||
|
|
}
|
||
|
|
&--today:not(&--selected) {
|
||
|
|
color: var(--c--components--forms-datepicker--grid-cell--color--today);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
.c__button--small {
|
||
|
|
height: auto;
|
||
|
|
width: 100%;
|
||
|
|
aspect-ratio: 1;
|
||
|
|
padding: 0;
|
||
|
|
align-items: center;
|
||
|
|
justify-content: center;
|
||
|
|
border-radius: 100%;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
&__menu {
|
||
|
|
@extend %shadow;
|
||
|
|
position: absolute;
|
||
|
|
top: 0;
|
||
|
|
left: -2px;
|
||
|
|
overflow: auto;
|
||
|
|
width: 100%;
|
||
|
|
max-height: 25rem;
|
||
|
|
background-color: var(--c--components--forms-datepicker--menu-background-color);
|
||
|
|
transform: translate(2px, 0);
|
||
|
|
display: none;
|
||
|
|
z-index: 2;
|
||
|
|
|
||
|
|
&--opened {
|
||
|
|
display: block;
|
||
|
|
}
|
||
|
|
|
||
|
|
ul {
|
||
|
|
list-style-type: none;
|
||
|
|
padding: 0;
|
||
|
|
margin: 0;
|
||
|
|
padding-top: px-to-rem(3px);
|
||
|
|
}
|
||
|
|
|
||
|
|
&__item {
|
||
|
|
padding: 0.75rem;
|
||
|
|
font-size: var(--c--components--forms-datepicker--item-font-size);
|
||
|
|
color: var(--c--components--forms-datepicker--item-color);
|
||
|
|
cursor: pointer;
|
||
|
|
|
||
|
|
&--highlight {
|
||
|
|
background-color: var(--c--components--forms-datepicker--item-background-color--hover);
|
||
|
|
}
|
||
|
|
|
||
|
|
&--selected {
|
||
|
|
background-color: var(--c--components--forms-datepicker--item-background-color--selected);
|
||
|
|
}
|
||
|
|
|
||
|
|
&--disabled {
|
||
|
|
color: var(--c--theme--colors--greyscale-400);
|
||
|
|
pointer-events: none;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|