@intility/bifrost-react-datepicker
Version:
React detepicker for Intility's design system, Bifrost.
882 lines (762 loc) • 21.1 kB
CSS
/* stylelint-disable selector-class-pattern */
/* INPUT */
.bf-datepicker {
height: var(--rem40);
}
.bf-datepicker:hover {
cursor: pointer;
}
/* DATEPICKER */
.react-datepicker {
font-size: var(--bf-font-size-m);
-webkit-font-smoothing: antialiased;
background: var(--bfc-base-3);
color: var(--bfc-base-c);
border: 1px solid var(--bfc-base-c-wcag);
border-radius: var(--bf-radius-s);
display: block;
position: relative;
min-width: 243px;
box-shadow: var(--bf-shadow);
}
/* When showTimeSelect is true */
.bf-show-time-select .react-datepicker {
display: flex;
min-width: 329px;
}
/* When showTimeSelectOnly is true */
.bf-show-time-select-only .react-datepicker {
min-width: 87px;
}
.bf-show-time-select-only .react-datepicker .react-datepicker__time-container {
border-left: none;
}
.bf-show-time-select-only
.react-datepicker__time-container
.react-datepicker__time
.react-datepicker__time-box
ul.react-datepicker__time-list
li.react-datepicker__time-list-item {
margin: 4px;
}
/* Remove inline-block from default */
.react-datepicker-wrapper {
display: block;
width: 100%;
}
/* MONTH / YEAR DROPDOWN BUTTON */
.react-datepicker__year-dropdown-container--select,
.react-datepicker__month-dropdown-container--select,
.react-datepicker__month-year-dropdown-container--select,
.react-datepicker__year-dropdown-container--scroll,
.react-datepicker__month-dropdown-container--scroll,
.react-datepicker__month-year-dropdown-container--scroll {
display: inline-block;
margin: 0 2px;
}
/* POPPER */
.react-datepicker-popper {
line-height: 0;
z-index: 1;
}
.react-datepicker__triangle {
display: none;
}
/* HEADER */
.react-datepicker__header {
border-top-left-radius: var(--bf-radius-s);
border-top-right-radius: var(--bf-radius-s);
}
.react-datepicker__header,
.react-datepicker__current-month {
text-align: center;
padding-top: 8px;
position: relative;
background: var(--bfc-base-3);
font-weight: normal;
}
.react-datepicker__day-names {
margin-top: 6px;
white-space: nowrap;
}
.react-datepicker__header__dropdown {
padding: 12px 0;
}
/* TEXT */
.react-datepicker__header,
.react-datepicker__current-month,
.react-datepicker__day-name,
.react-datepicker__day {
color: var(--bfc-base-c);
}
.react-datepicker__day,
.react-datepicker__month-text,
.react-datepicker__quarter-text,
.react-datepicker__year-text,
.react-datepicker__year-read-view,
.react-datepicker__month-read-view,
.react-datepicker__month-option,
.react-datepicker__year-option {
cursor: pointer;
}
.react-datepicker__day-name,
.react-datepicker__day {
display: inline-block;
width: 1.7rem;
line-height: 1.7rem;
text-align: center;
margin: 0.166rem;
}
/* DAY */
.react-datepicker__day {
border: 1px solid transparent;
border-radius: var(--bf-radius-xs);
}
/* DAY TODAY */
.react-datepicker__day--today {
border-color: var(--bfc-base-dimmed-2);
background-color: var(--bfc-base-3);
font-weight: 600;
}
/* CLEARABLE DATE BUTTON */
.bf-datepicker-clearable.bf-datepicker-icon-left
.react-datepicker__input-container
.bf-datepicker {
padding-right: 2.375rem; /* 38px */
}
.bf-datepicker-clearable.bf-datepicker-icon-right
.react-datepicker__input-container
.bf-datepicker {
padding-right: 4.25rem; /* 68px */
}
.bf-datepicker-small
.bf-datepicker-clearable.bf-datepicker-icon-left
.react-datepicker__input-container
.bf-datepicker {
padding-right: 1.875rem; /* 30px */
}
.bf-datepicker-small
.bf-datepicker-clearable.bf-datepicker-icon-right
.react-datepicker__input-container
.bf-datepicker {
padding-right: 3.25rem; /* 52px */
}
.bf-datepicker-small .bf-datepicker {
height: var(--rem32);
padding: 0.1875rem 8px;
}
.bf-datepicker.clearable.bf .react-datepicker__input-container {
display: flex;
position: relative;
}
.react-datepicker__close-icon {
position: absolute;
cursor: pointer;
background: transparent;
border: 0;
outline: 0;
color: var(--bfc-base-c-2);
width: var(--rem32);
height: var(--rem32);
margin: var(--rem4);
padding: var(--rem4) 0;
font-size: var(--bf-font-size-h3);
line-height: 1;
}
.bf-datepicker-small .react-datepicker__close-icon {
width: var(--rem24);
height: var(--rem24);
padding-block: 0;
}
.bf-datepicker-icon-left .react-datepicker__close-icon {
right: 0;
}
.bf-datepicker-icon-right .react-datepicker__close-icon {
right: var(--rem32);
}
.bf-datepicker-small .bf-datepicker-icon-right .react-datepicker__close-icon {
right: var(--rem28);
}
.react-datepicker__close-icon:hover {
color: var(--bfc-base-c-1);
}
.react-datepicker__close-icon::after {
content: "\00d7";
}
/* DROPDOWN TITLES */
.react-datepicker__month-dropdown-container,
.react-datepicker__year-dropdown-container {
font-size: var(--bf-font-size-m);
}
.bf-datepicker-container .react-datepicker__year-dropdown-container--scroll {
margin: 1px 0 0;
}
.react-datepicker__month-read-view--selected-month,
.react-datepicker__year-read-view--selected-year {
padding: 4px 10px;
border: 1px solid transparent;
border-radius: var(--bf-radius-xs);
}
/* DROPDOWN MENUS */
.react-datepicker__month-dropdown,
.react-datepicker__year-dropdown {
display: grid;
grid-template-columns: 1fr 1fr 1fr;
gap: 16px 0;
place-content: center center;
background: var(--bfc-base-3);
color: var(--bfc-base-c-1);
padding: 15px 4px;
font-size: var(--bf-font-size-m);
position: absolute;
top: 45px;
width: calc(100% + 2px);
left: -1px;
height: 292px;
border: 1px solid var(--bfc-base-c-wcag);
border-top-color: var(--bfc-base-c-dimmed);
border-radius: var(--bf-radius-xs);
border-top-left-radius: 0;
border-top-right-radius: 0;
}
/* MONTH + YEAR OPTIONS */
.bf-datepicker-container .react-datepicker__month-option,
.bf-datepicker-container .react-datepicker__year-option {
display: inline-block;
width: 65px;
line-height: 38px;
height: 38px;
border: 1px solid transparent;
margin: 6px 5px;
vertical-align: bottom;
border-radius: var(--bf-radius-xs);
}
/* YEAR DROPDOWN SCROLL ARROW */
.react-datepicker__year-option:nth-child(12) {
display: none;
}
/* NAVIGATION */
.react-datepicker__navigation {
background: none;
cursor: pointer;
position: absolute;
top: 16px;
padding: 0;
border: 0.45rem solid transparent;
z-index: 1;
height: 10px;
width: 10px;
text-indent: -999em;
overflow: hidden;
outline: none;
}
.react-datepicker__navigation--previous {
left: 12px;
border-right-color: var(--bfc-base-c-2);
border-left-width: 0;
}
.react-datepicker__navigation--previous:hover {
border-right-color: var(--bfc-base-c);
}
.react-datepicker__navigation--next {
right: 12px;
border-left-color: var(--bfc-base-c-2);
border-right-width: 0;
}
.react-datepicker__navigation--next:hover {
border-left-color: var(--bfc-base-c);
}
.react-datepicker__navigation--previous:focus-visible,
.react-datepicker__navigation--next:focus-visible {
outline: 2px dotted var(--bfc-base-c);
outline-offset: 2px;
}
/* When showTimeSelect is true */
.react-datepicker__navigation--next--with-time:not(
.react-datepicker__navigation--next--with-today-button
) {
right: 95px;
}
/* Years navigation arrows */
.react-datepicker__navigation--years {
position: relative;
top: 0;
display: block;
margin-left: auto;
margin-right: auto;
}
.bf-datepicker-container .react-datepicker__navigation--years-previous {
top: 15px;
padding: 0;
border-radius: 0;
border-top-color: var(--bfc-base-c-2);
}
.bf-datepicker-container .react-datepicker__navigation--years-upcoming {
top: 7px;
padding: 0;
border-radius: 0;
border-bottom-color: var(--bfc-base-c-2);
}
.bf-datepicker-container
.react-datepicker__year-option:hover
.react-datepicker__navigation--years-upcoming {
background: none;
box-shadow: none;
border-bottom-color: var(--bfc-base-c);
}
.bf-datepicker-container
.react-datepicker__year-option:hover
.react-datepicker__navigation--years-previous {
background: none;
box-shadow: none;
border-top-color: var(--bfc-base-c);
}
.react-datepicker__month-read-view,
.react-datepicker__year-read-view {
visibility: visible ;
}
.react-datepicker__month-read-view--down-arrow,
.react-datepicker__year-read-view--down-arrow {
display: none;
}
.react-datepicker__current-month {
display: none;
}
/* REMOVING ICON FROM SELECTED MONTH OPTION */
.react-datepicker__month-option--selected,
.react-datepicker__year-option--selected {
display: none;
}
/* ICON */
.bf-datepicker-icon-container {
position: relative;
display: flex;
}
.bf-datepicker-icon-container .bf-datepicker-icon {
color: var(--bfc-base-c-2);
position: absolute;
height: var(--rem32);
width: var(--rem32);
margin: var(--rem4);
padding: var(--rem4) 0;
text-align: center;
font-size: var(--bf-font-size-l);
pointer-events: none;
}
.bf-datepicker-small .bf-datepicker-icon-container .bf-datepicker-icon {
height: var(--rem24);
width: var(--rem24);
padding-block: 0;
}
.bf-datepicker-icon-left .bf-datepicker-icon {
right: auto;
left: 0;
}
.bf-datepicker-icon-right .bf-datepicker-icon {
left: auto;
right: 0;
}
.bf-datepicker-icon-right .bf-datepicker {
/* using 2.375rem because we don't have CSS variable for 38px */
padding-right: 2.375rem;
}
.bf-datepicker-icon-left .bf-datepicker {
/* using 2.375rem because we don't have CSS variable for 38px */
padding-left: 2.375rem;
}
.bf-datepicker-small .bf-datepicker-icon-right .bf-datepicker {
/* using 1.875rem because we don't have CSS variable for 30px */
padding-right: 1.875rem;
}
.bf-datepicker-small .bf-datepicker-icon-left .bf-datepicker {
/* using 1.875rem because we don't have CSS variable for 30px */
padding-left: 1.875rem;
}
.bf-datepicker-success .bf-state-icon {
color: var(--bfc-base-c-success);
}
.bf-datepicker-alert .bf-state-icon {
color: var(--bfc-base-c-alert);
}
/* TIME */
.react-datepicker__time-container {
border-left: 1px solid var(--bfc-base-c-dimmed);
}
.react-datepicker__time-container
.react-datepicker__time
.react-datepicker__time-box {
width: 85px;
}
/* TIMEBOX SCROLLBAR */
.react-datepicker__time-container
.react-datepicker__time
.react-datepicker__time-box
ul.react-datepicker__time-list::-webkit-scrollbar {
height: 18px;
width: 18px;
background-color: transparent;
}
.react-datepicker__time-container
.react-datepicker__time
.react-datepicker__time-box
ul.react-datepicker__time-list::-webkit-scrollbar-corner {
background-color: transparent;
}
.react-datepicker__time-container
.react-datepicker__time
.react-datepicker__time-box
ul.react-datepicker__time-list::-webkit-scrollbar-thumb {
height: 30px;
border: 5px solid transparent;
background-color: var(--bfc-base-dimmed);
background-clip: padding-box;
border-radius: 10px;
}
.react-datepicker__time-container
.react-datepicker__time
.react-datepicker__time-box
ul.react-datepicker__time-list::-webkit-scrollbar,
.react-datepicker__time-container
.react-datepicker__time
.react-datepicker__time-box
ul.react-datepicker__time-list::-webkit-scrollbar-corner {
background-color: var(--bfc-base-3);
}
/* Timelist */
.react-datepicker__time-container
.react-datepicker__time
.react-datepicker__time-box
ul.react-datepicker__time-list {
list-style: none;
margin: 0;
height: calc(195px + (1.7rem / 2));
overflow-y: scroll;
padding-right: 0;
padding-left: 0;
width: 100%;
box-sizing: content-box;
}
.react-datepicker__time-list-item {
height: 30px;
line-height: 30px;
padding: 0 4px;
white-space: nowrap;
font-size: var(--bf-font-size-m);
list-style: none;
border: 1px solid transparent;
margin: 4px 4px 4px 8px;
border-radius: var(--bf-radius-xs);
text-align: center;
cursor: pointer;
}
/* Display none to not show header for time selection */
.react-datepicker__header--time {
display: none;
}
/* TIME INPUT */
.react-datepicker__input-time-container {
clear: both;
width: 100%;
margin: 5px 0 10px 15px;
text-align: left;
}
.react-datepicker__input-time-container .react-datepicker-time__caption {
display: inline-block;
font-size: 13px;
}
.react-datepicker__input-time-container
.react-datepicker-time__input-container {
display: inline-block;
}
.react-datepicker__input-time-container
.react-datepicker-time__input-container
.react-datepicker-time__input {
display: inline-block;
margin-left: 10px;
}
.react-datepicker__input-time-container
.react-datepicker-time__input-container
.react-datepicker-time__input
input {
width: 150px;
background: var(--bfc-base-3);
color: var(--bfc-base-c);
font-size: 13px;
border: 1px solid var(--bfc-base-c-wcag);
padding: 4px;
padding-left: 10px;
outline: none;
border-radius: var(--bf-radius-xs);
}
.react-datepicker__input-time-container
.react-datepicker-time__input-container
.react-datepicker-time__input
input:hover {
outline: none;
border: 1px solid var(--bfc-base-c-inverted-1);
}
.react-datepicker__input-time-container
.react-datepicker-time__input-container
.react-datepicker-time__input
input:focus {
outline: none;
border: 1px solid var(--bfc-theme-3);
}
/* Time icon */
.react-datepicker__input-time-container
.react-datepicker-time__input-container
.react-datepicker-time__input::-webkit-calendar-picker-indicator {
cursor: pointer;
border: 1px solid transparent;
border-radius: var(--bf-radius-xs);
}
.bf-darkmode
.react-datepicker__input-time-container
.react-datepicker-time__input-container
.react-datepicker-time__input::-webkit-calendar-picker-indicator {
background-color: var(--bfc-base-c);
}
.react-datepicker__input-time-container
.react-datepicker-time__input-container
.react-datepicker-time__input::-webkit-calendar-picker-indicator:focus {
outline: none;
border: 1px solid var(--bfc-theme-3);
}
.react-datepicker__input-time-container
.react-datepicker-time__input-container
.react-datepicker-time__input
input[type="time"]::-webkit-inner-spin-button,
.react-datepicker__input-time-container
.react-datepicker-time__input-container
.react-datepicker-time__input
input[type="time"]::-webkit-outer-spin-button {
appearance: none;
margin: 0;
}
.react-datepicker__input-time-container
.react-datepicker-time__input-container
.react-datepicker-time__input
input[type="time"] {
appearance: textfield;
}
.react-datepicker__input-time-container
.react-datepicker-time__input-container
.react-datepicker-time__delimiter {
margin-left: 5px;
display: inline-block;
}
/* MONTHPICKER / YEARPICKER */
.react-datepicker__year {
margin: 8px;
}
.react-datepicker-year-header {
padding: 19px 0;
}
.react-datepicker__month {
margin: 0.4rem;
text-align: center;
display: grid;
gap: 8px;
}
.react-datepicker__month .react-datepicker__month-wrapper,
.react-datepicker__year-wrapper {
display: grid;
grid-template-columns: 1fr 1fr 1fr;
gap: 8px;
}
.react-datepicker__month-text,
.react-datepicker__year-text {
height: 38px;
line-height: 38px;
padding: 0 4px;
text-align: center;
border-radius: var(--bf-radius-xs);
border: 1px dashed transparent;
outline: none;
}
.react-datepicker__month-text:hover,
.react-datepicker__year-text:hover {
background: var(--bfc-base-dimmed-2);
}
.react-datepicker__month-text.react-datepicker__month--selected,
.react-datepicker__year-text.react-datepicker__year-text--selected {
background: var(--bfc-theme);
font-weight: 600;
color: var(--bfc-theme-hc);
}
.react-datepicker__month-text.react-datepicker__month--selected:hover,
.react-datepicker__year-text.react-datepicker__year-text--selected:hover {
background: var(--bfc-theme-2);
}
/* Portal (modal) view */
.react-datepicker__portal {
position: fixed;
width: 100dvw;
height: 100dvh;
background-color: rgba(0, 0, 0, 0.8);
left: 0;
top: 0;
justify-content: center;
align-items: center;
display: flex;
z-index: 2147483647;
}
.react-datepicker__portal .react-datepicker__day-name,
.react-datepicker__portal .react-datepicker__day,
.react-datepicker__portal .react-datepicker__time-name {
width: 3rem;
line-height: 3rem;
}
@media (max-width: 400px), (max-height: 550px) {
.react-datepicker__portal .react-datepicker__day-name,
.react-datepicker__portal .react-datepicker__day,
.react-datepicker__portal .react-datepicker__time-name {
width: 2rem;
line-height: 2rem;
}
}
.react-datepicker__portal .react-datepicker__current-month,
.react-datepicker__portal .react-datepicker-time__header {
font-size: 1.44rem;
}
.react-datepicker__portal .react-datepicker__navigation {
border: 0.81rem solid transparent;
}
.react-datepicker__portal .react-datepicker__navigation--previous {
border-right-color: #ccc;
}
.react-datepicker__portal .react-datepicker__navigation--previous:hover {
border-right-color: #b3b3b3;
}
.react-datepicker__portal .react-datepicker__navigation--previous--disabled,
.react-datepicker__portal
.react-datepicker__navigation--previous--disabled:hover {
border-right-color: #e6e6e6;
cursor: default;
}
.react-datepicker__portal .react-datepicker__navigation--next {
border-left-color: #ccc;
}
.react-datepicker__portal .react-datepicker__navigation--next:hover {
border-left-color: #b3b3b3;
}
.react-datepicker__portal .react-datepicker__navigation--next--disabled,
.react-datepicker__portal .react-datepicker__navigation--next--disabled:hover {
border-left-color: #e6e6e6;
cursor: default;
}
.react-datepicker__aria-live {
position: absolute;
clip-path: circle(0);
border: 0;
height: 1px;
margin: -1px;
overflow: hidden;
padding: 0;
width: 1px;
white-space: nowrap;
}
.react-datepicker__day--holidays,
.react-datepicker__month-text--holidays,
.react-datepicker__quarter-text--holidays,
.react-datepicker__year-text--holidays {
position: relative;
border-radius: 0.3rem;
background-color: var(--bfc-warning);
color: var(--bfc-warning-c);
}
.react-datepicker__day--holidays .overlay,
.react-datepicker__month-text--holidays .overlay,
.react-datepicker__quarter-text--holidays .overlay,
.react-datepicker__year-text--holidays .overlay {
position: absolute;
bottom: 100%;
left: 50%;
transform: translateX(-50%);
background-color: var(--bfc-overlay);
color: var(--bfc-overlay-c);
padding: 4px;
border-radius: var(--bf-radius-xs);
white-space: nowrap;
visibility: hidden;
opacity: 0;
transition:
visibility 0s,
opacity 0.3s ease-in-out;
}
.react-datepicker__day--holidays:hover,
.react-datepicker__month-text--holidays:hover,
.react-datepicker__quarter-text--holidays:hover,
.react-datepicker__year-text--holidays:hover {
background-color: var(--bfc-warning);
color: var(--bfc-warning-c);
}
.react-datepicker__day--holidays:hover .overlay,
.react-datepicker__month-text--holidays:hover .overlay,
.react-datepicker__quarter-text--holidays:hover .overlay,
.react-datepicker__year-text--holidays:hover .overlay {
visibility: visible;
opacity: 1;
}
/* OUTSIDE RANGE */
.react-datepicker__day--outside-month {
color: var(--bfc-base-c-2);
}
/* HOVER */
.react-datepicker__day:hover,
.react-datepicker__day--in-selecting-range,
.react-datepicker__month-read-view--selected-month:hover,
.react-datepicker__year-read-view--selected-year:hover,
.react-datepicker__month-option:hover,
.react-datepicker__year-option:hover,
.react-datepicker__time-list-item:hover {
background-color: var(--bfc-base-dimmed-2);
color: var(--bfc-base-c);
}
/* SELECTED */
.react-datepicker__day--selected,
.react-datepicker__day--in-range,
.react-datepicker__month-option--selected_month,
.react-datepicker__month-text--selected,
.react-datepicker__year-option--selected_year,
.react-datepicker__time-list-item--selected {
background: var(--bfc-theme);
color: var(--bfc-theme-hc);
font-weight: 600;
border-color: transparent;
}
/* SELECTED + HOVER */
.react-datepicker__day--selected:hover,
.react-datepicker__day--in-range:hover,
.react-datepicker__month-option--selected_month:hover,
.react-datepicker__month-text--selected:hover,
.react-datepicker__year-option--selected_year:hover,
.react-datepicker__time-list-item--selected:hover {
background: var(--bfc-theme-2);
color: var(--bfc-theme-hc);
}
/* DISABLED */
.react-datepicker__day--disabled,
.react-datepicker__day--disabled:hover,
.react-datepicker__time-list-item--disabled,
.react-datepicker__time-list-item--disabled:hover {
color: var(--bfc-base-disabled);
background-color: transparent;
cursor: default;
}
.react-datepicker__day--disabled .overlay,
.react-datepicker__month-text--disabled .overlay,
.react-datepicker__quarter-text--disabled .overlay,
.react-datepicker__year-text--disabled .overlay {
display: none;
}
/* SELECTING WITH KEYBOARD */
.react-datepicker__week .react-datepicker__day:focus-visible,
.react-datepicker__time-list:focus-visible,
.react-datepicker__time-list-item:focus-visible {
outline: 2px dotted var(--bfc-base-c);
outline-offset: 1px;
border-radius: var(--bf-radius-s);
position: relative;
z-index: 1;
}