Datepicker Component
A CSS implementation of the Sprout datepicker component.
Related
Sprout datepicker documentation [external]
Example
html
<!-- Start trigger -->
<div class="spr-datepicker-trigger spr-inline-container-xs spr-align-center">
<div>10/10/2020</div>
<div>
<i class="spr-icon spr-icon-calendar"></i>
</div>
</div>
<!-- End trigger -->
<!-- Start calendar -->
<div class="spr-datepicker-container">
<div class="spr-inline-container-sm spr-justify-center spr-justify-space-between">
<div class="spr-inline-container-sm spr-justify-center spr-align-center">
<div class="spr-datepicker-arrow">
<i class="spr-icon spr-icon-carat-down spr-icon-rotate-90"></i>
</div>
<div class="spr-bold spr-datepicker-month">Jul</div>
<div class="spr-datepicker-arrow">
<i class="spr-icon spr-icon-carat-down spr-icon-rotate-270"></i>
</div>
</div>
<div class="spr-inline-container-sm spr-justify-center spr-align-center">
<div class="spr-datepicker-arrow">
<i class="spr-icon spr-icon-carat-down spr-icon-rotate-90"></i>
</div>
<div class="spr-bold">2021</div>
<div class="spr-datepicker-arrow">
<i class="spr-icon spr-icon-carat-down spr-icon-rotate-270"></i>
</div>
</div>
</div>
<div>
<div class="spr-datepicker-row spr-datepicker-top">
<div class="spr-datepicker-cell">Sun</div>
<div class="spr-datepicker-cell">Mon</div>
<div class="spr-datepicker-cell">Tues</div>
<div class="spr-datepicker-cell">Wed</div>
<div class="spr-datepicker-cell">Thurs</div>
<div class="spr-datepicker-cell">Fri</div>
<div class="spr-datepicker-cell">Sat</div>
</div>
<div class="spr-datepicker-row">
<!-- days that fall in previous or next month -->
<div class="spr-datepicker-cell spr-datepicker-grey">30</div>
<div class="spr-datepicker-cell spr-datepicker-grey">31</div>
<!-- day clicked on by user -->
<div class="spr-datepicker-cell spr-datepicker-selected">1</div>
<!-- day hovered over by user -->
<div class="spr-datepicker-cell spr-datepicker-highlighted">2</div>
<!-- all other days -->
<div class="spr-datepicker-cell">3</div>
<div class="spr-datepicker-cell">4</div>
<div class="spr-datepicker-cell">5</div>
</div>
</div>
</div>
<!-- End calendar -->
Compiled CSS
Example
scss
@import 'components/datepicker';
css
compiled
@keyframes openPopover {
from {
transform: scale(0.9);
}
to {
transform: scale(1);
}
}
.spr-icon-rotate-90 {
transform: rotate(90deg);
}
.spr-icon-rotate-180 {
transform: rotate(180deg);
}
.spr-icon-rotate-270 {
transform: rotate(270deg);
}
.spr-datepicker-trigger {
border: 1px solid #1a1a1a;
border-radius: 0.25rem;
padding: 0.5rem;
width: fit-content;
cursor: pointer;
background-color: #fff;
}
.spr-datepicker-placeholder {
color: #53565a;
}
.spr-datepicker-container {
padding: 0.75rem 0.75rem;
font-size: 0.875rem;
}
.spr-datepicker-month {
width: 75px;
text-align: center;
}
.spr-datepicker-row {
display: flex;
margin-bottom: 0.5rem;
}
.spr-datepicker-row:last-of-type {
margin-bottom: 0;
}
.spr-datepicker-top {
color: #53565a;
border-bottom: 1px solid #c8c9c7;
font-weight: 500;
}
.spr-datepicker-cell {
margin-right: 0.5rem;
text-align: center;
width: 32px;
height: 32px;
display: flex;
align-items: center;
justify-content: center;
}
.spr-datepicker-cell:last-of-type {
margin-right: 0;
}
.spr-datepicker-cell:focus:not(.spr-datepicker-selected), .spr-datepicker-cell:focus-visible:not(.spr-datepicker-selected) {
background-color: rgba(200, 201, 199, 0.2);
}
.spr-datepicker-cell:focus, .spr-datepicker-cell:focus-visible {
border-radius: 50%;
border-color: rgba(26, 26, 26, 0.2);
box-shadow: 0 0 0 0.125rem rgba(200, 201, 199, 0.35), inset 0 0 0 0.0625rem #ebebeb;
}
.spr-datepicker-highlighted {
cursor: pointer;
color: #1a1a1a;
border-radius: 50%;
background: #ecedee;
}
.spr-datepicker-arrow {
cursor: pointer;
}
.spr-datepicker-arrow:hover {
background-color: #ebebeb !important;
box-shadow: inset 0 0 0 0 #ecedee;
}
.spr-datepicker-arrow:focus {
background-color: #ebebeb !important;
box-shadow: 0 0 0 0.125rem rgba(236, 237, 238, 0.35), inset 0 0 0 0.0625rem #ecedee;
}
.spr-datepicker-selected:not(.spr-datepicker-grey) {
cursor: pointer;
background: #006fcf;
color: #fff;
border-radius: 50%;
font-weight: 500;
}
.spr-datepicker-selected:hover {
background: #00175a;
}
.spr-datepicker-grey {
opacity: 0.5;
}
.spr-datepicker-disabled {
opacity: 0.25;
pointer-events: none;
}
.spr-datepicker-action-group {
border-top: 1px solid #ecedee;
}
.spr-datepicker-action-group .spr-datepicker-action-button {
display: flex;
border: 1px solid #ecedee;
border-radius: 0.125rem;
margin: 0.75rem 0;
padding: 0.5rem;
justify-content: center;
font-weight: 500;
cursor: pointer;
}
.spr-datepicker-action-group .spr-datepicker-action-button:hover {
background-color: #ebebeb !important;
box-shadow: inset 0 0 0 0 #ecedee;
}
.spr-datepicker-action-group .spr-datepicker-action-button:focus {
background-color: #ebebeb !important;
box-shadow: 0 0 0 0.125rem rgba(236, 237, 238, 0.35), inset 0 0 0 0.0625rem #ecedee;
}
.spr-datepicker-action-group .spr-datepicker-action-button:active {
background-color: #c8cfd6 !important;
box-shadow: inset 0 0 0 0.0625rem #ecedee;
}
.spr-datepicker-desktop-view {
display: flex;
}
.spr-datepicker-desktop-view .spr-datepicker-action-group {
border-left: 1px solid #ecedee;
border-top: none;
margin-left: 0.75rem;
}
.spr-datepicker-desktop-view .spr-datepicker-action-group .spr-datepicker-action-button {
margin: 0px 0px 0.75rem 0.75rem;
}
.spr-datepicker-mobile-popover {
margin: auto;
width: fit-content;
}