745 lines
15 KiB
SCSS
Raw Normal View History

2025-03-07 00:29:07 -06:00
@use '../../scss/_bootstrap-extended/include' as light;
@use '../../scss/_bootstrap-extended/include-dark' as dark;
@import '../../scss/_custom-variables/libs';
$daterangepicker-arrow-size: 0.45rem !default;
$daterangepicker-select-width: 3.125rem !default;
$daterangepicker-cell-size: 2.25rem !default;
$daterangepicker-padding: 0.8rem !default;
// Calculate widths
$daterangepicker-width: ($daterangepicker-cell-size * 7)+ ($daterangepicker-padding * 2);
$daterangepicker-width-with-weeks: $daterangepicker-width + $daterangepicker-cell-size;
.daterangepicker {
position: absolute;
max-width: none;
padding: 0.875rem 0 0.5rem;
display: none;
tbody {
//! FIX: padding or margin top will not work in table
&:before {
content: '@';
display: block;
line-height: 6px;
text-indent: -99999px;
}
}
@include app-rtl {
direction: rtl !important;
}
// datepicker header styles
table thead tr:first-child {
height: 52px !important;
position: relative;
}
.calendar-table td {
border-radius: 50rem;
}
// month and year select styles
table thead {
th,
td {
select {
background-color: transparent;
font-weight: light.$font-weight-medium;
}
}
}
}
// prev arrow styles excluding single daterangepicker
.daterangepicker {
.drp-calendar:not(.single).left {
.prev {
@include app-ltr {
left: 0.25rem;
}
@include app-rtl {
right: 0.25rem;
}
}
}
// next arrow styles excluding single daterangepicker
.drp-calendar:not(.single).right {
.next {
@include app-ltr {
right: 0.25rem;
}
@include app-rtl {
left: 0.25rem;
}
}
}
}
.daterangepicker.auto-apply .drp-buttons {
display: none;
}
.daterangepicker.show-calendar .drp-calendar,
.daterangepicker.show-calendar .drp-buttons {
display: block;
}
.daterangepicker .drp-calendar {
display: none;
padding: 0 $daterangepicker-padding $daterangepicker-padding;
&.single .calendar-table {
border: 0;
}
}
.daterangepicker.single {
.drp-selected {
display: none;
}
.daterangepicker .ranges,
.drp-calendar {
float: none;
}
}
.daterangepicker .calendar-table {
border: 0;
// prev & next arrow default styles
.next,
.prev {
position: absolute;
top: 0.65rem;
min-width: unset;
height: 1.875rem;
width: 1.875rem;
border-radius: 50rem;
display: flex;
justify-content: center;
align-items: center;
}
.next span,
.prev span {
display: inline-block;
border-width: 0 1.9px 1.9px 0;
border-style: solid;
border-radius: 0;
height: $daterangepicker-arrow-size;
width: $daterangepicker-arrow-size;
}
.prev span {
margin-right: -$daterangepicker-arrow-size * 0.5;
transform: rotate(135deg);
@include app-rtl {
margin-left: -$daterangepicker-arrow-size * 0.5;
margin-right: 0;
transform: rotate(-45deg);
}
}
.next span {
margin-left: -$daterangepicker-arrow-size * 0.5;
transform: rotate(-45deg);
@include app-rtl {
margin-left: 0;
margin-right: -$daterangepicker-arrow-size * 0.5;
transform: rotate(135deg);
}
}
table {
border: 0;
border-spacing: 0;
border-collapse: collapse;
margin: 0;
width: 100%;
}
th,
td {
vertical-align: middle;
min-width: $daterangepicker-cell-size;
line-height: calc(#{$daterangepicker-cell-size} - 2px);
white-space: nowrap;
text-align: center;
cursor: pointer;
}
td {
height: $daterangepicker-cell-size;
width: $daterangepicker-cell-size;
}
th {
width: $daterangepicker-cell-size;
height: $daterangepicker-cell-size + 0.5rem;
}
tr:first-child th:not(.prev):not(.next) {
height: $daterangepicker-cell-size;
}
// daterangepicker single
.daterangepicker .single {
// arrow alignments
.next {
float: right;
@include app-ltr {
right: 0.625rem;
}
@include app-rtl {
left: 0.625rem;
}
}
.prev {
@include app-ltr {
right: 3.125rem;
}
@include app-rtl {
left: 3.125rem;
}
}
// month alignments
th.month {
position: absolute;
top: 0.5rem;
@include app-ltr {
text-align: left;
left: 0.562rem;
}
@include app-rtl {
text-align: right;
right: 0.562rem;
}
}
}
}
.daterangepicker td {
@include app-ltr {
&.start-date:not(.end-date) {
border-bottom-right-radius: 0 !important;
border-top-right-radius: 0 !important;
}
&.end-date:not(.start-date) {
border-bottom-left-radius: 0 !important;
border-top-left-radius: 0 !important;
}
}
&.in-range:not(.start-date):not(.end-date) {
border-radius: 0 !important;
}
@include app-rtl {
&.start-date:not(.end-date) {
border-bottom-left-radius: 0 !important;
border-top-left-radius: 0 !important;
}
&.end-date:not(.start-date) {
border-bottom-right-radius: 0 !important;
border-top-right-radius: 0 !important;
}
}
}
.daterangepicker td.disabled,
.daterangepicker option.disabled {
cursor: not-allowed;
text-decoration: line-through;
}
.daterangepicker th.month {
width: auto;
}
.daterangepicker select {
&.monthselect,
&.yearselect {
height: auto;
padding: 1px;
margin: 0;
border: 0;
cursor: default;
}
&:focus-visible {
outline: 0;
}
&.monthselect {
width: 46%;
margin-right: 2%;
@include app-rtl {
margin-left: 2%;
margin-right: 0;
}
}
&.yearselect {
width: 40%;
}
&.hourselect,
&.minuteselect,
&.secondselect,
&.ampmselect {
outline: 0;
width: $daterangepicker-select-width;
padding: 2px;
margin: 0 auto;
border-radius: light.$border-radius-sm;
}
}
.daterangepicker .calendar-time {
position: relative;
line-height: 30px;
text-align: center;
margin: 0 auto;
select.disabled {
cursor: not-allowed;
}
}
.daterangepicker .drp-buttons {
padding: $daterangepicker-padding $daterangepicker-padding * 1.5;
clear: both;
display: none;
text-align: right;
vertical-align: middle;
.btn {
margin-left: $daterangepicker-padding * 1.2;
}
@include app-rtl {
text-align: left;
.btn {
margin-left: 0;
margin-right: $daterangepicker-padding * 1.2;
}
}
}
.daterangepicker .drp-selected {
width: 100%;
padding-bottom: $daterangepicker-padding;
display: block;
}
.daterangepicker .ranges {
text-align: left;
float: none;
margin: 0;
// Daterangepicker Ranges spacing
ul {
padding: 0.5rem;
margin: 0 auto;
list-style: none;
width: 100%;
}
li {
border-radius: light.$border-radius;
padding: light.$dropdown-item-padding-y light.$dropdown-item-padding-x;
&:not(:first-child) {
margin-top: 0.125rem;
}
}
@include app-rtl {
text-align: right;
}
}
.daterangepicker.show-calendar .ranges {
border-bottom: 1px solid;
&:empty {
display: none;
}
}
.daterangepicker .drp-calendar.right {
@include app-ltr {
padding-left: 1px;
}
@include app-rtl {
padding-right: 1px;
}
}
// Light style
@if $enable-light-style {
.light-style {
.daterangepicker {
z-index: light.$zindex-popover !important;
border: light.$dropdown-border-width solid light.$dropdown-border-color;
border-radius: light.$border-radius;
width: calc(#{$daterangepicker-width} + calc(#{light.$dropdown-border-width} * 2));
box-shadow: light.$card-box-shadow;
background-color: light.$dropdown-bg;
table thead {
background: light.$dropdown-bg;
th,
td {
color: light.$headings-color;
&.prev,
&.next {
span {
border-color: light.$body-color !important;
}
}
select {
background-color: transparent;
color: light.$headings-color;
}
}
}
&.drop-up {
margin-top: -(light.$dropdown-spacer);
}
&.with-week-numbers {
width: calc(#{$daterangepicker-width-with-weeks} + calc(#{light.$dropdown-border-width} * 2));
}
}
.daterangepicker .calendar-table td {
border-radius: light.$border-radius-pill;
}
.daterangepicker .drp-selected {
font-size: light.$font-size-sm;
}
.daterangepicker .calendar-table thead tr:last-child th {
border-radius: 0 !important;
color: light.$headings-color;
font-size: light.$font-size-sm;
font-weight: light.$font-weight-normal;
}
.daterangepicker th.month {
color: light.$headings-color;
font-weight: light.$font-weight-normal;
}
.daterangepicker td.week,
.daterangepicker th.week {
color: light.$headings-color;
font-weight: light.$font-weight-normal;
}
.daterangepicker td.disabled,
.daterangepicker option.disabled {
color: light.$text-muted;
}
.daterangepicker td.available:not(.active):hover,
.daterangepicker th.available:hover {
background-color: light.$gray-50;
}
.daterangepicker td.off {
color: light.$text-muted;
}
.daterangepicker .ranges li {
cursor: pointer;
padding: light.$dropdown-item-padding-y light.$dropdown-item-padding-x;
&:hover {
background-color: light.$dropdown-link-hover-bg;
}
}
.daterangepicker .calendar-table .next,
.daterangepicker .calendar-table .prev {
background-color: light.$gray-50;
span {
border-color: light.$body-color;
}
}
.daterangepicker select {
&.hourselect,
&.minuteselect,
&.secondselect,
&.ampmselect {
background: light.rgba-to-hex(light.$gray-100, light.$rgba-to-hex-bg);
font-size: light.$font-size-sm;
color: light.$body-color;
border: 1px solid transparent;
option {
background: light.$card-bg;
}
}
// ! FIX: OS Windows and Linux Browsers DD Option color
&.monthselect,
&.yearselect {
option {
color: light.$body-color;
background: light.$input-bg;
&:disabled {
color: light.$text-muted;
}
}
}
}
.daterangepicker .calendar-time select.disabled {
color: light.$text-light;
}
@include light.media-breakpoint-up(md) {
.daterangepicker {
width: auto !important;
&:not(.single) .drp-selected {
width: auto;
padding: 0;
display: inline-block;
}
}
@include app-ltr-style {
.daterangepicker:not(.single) .drp-calendar {
float: left;
&.left {
padding-right: 1rem;
}
}
}
@include app-rtl-style {
.daterangepicker:not(.single) .drp-calendar {
float: right;
&.left {
padding-left: 1rem;
}
}
}
}
@include light.media-breakpoint-up(lg) {
.daterangepicker .ranges {
border-bottom: 0;
}
@include app-ltr-style {
.daterangepicker {
.ranges {
float: left;
}
}
}
@include app-rtl-style {
.daterangepicker {
.ranges {
float: right;
}
}
}
}
}
}
// Dark style
@if $enable-dark-style {
.dark-style {
.daterangepicker {
box-shadow: dark.$card-box-shadow;
width: calc(#{$daterangepicker-width} + calc(#{dark.$dropdown-border-width} * 2));
margin-top: dark.$dropdown-spacer;
background-color: dark.$dropdown-bg;
border: dark.$dropdown-border-width solid dark.$dropdown-border-color;
border-radius: dark.$border-radius;
z-index: dark.$zindex-popover !important;
table thead {
background: dark.$dropdown-bg;
th,
td {
color: dark.$headings-color;
&.prev,
&.next {
span {
border-color: dark.$headings-color !important;
}
}
select {
background-color: transparent;
color: dark.$headings-color;
}
}
}
&.with-week-numbers {
width: calc(#{$daterangepicker-width-with-weeks} + calc(#{dark.$dropdown-border-width} * 2));
}
&.drop-up {
margin-top: -(dark.$dropdown-spacer);
}
}
.daterangepicker .calendar-table td {
border-radius: dark.$border-radius-pill;
}
.daterangepicker .drp-selected {
font-size: dark.$font-size-sm;
}
.daterangepicker .calendar-table thead tr:last-child th {
border-radius: 0 !important;
color: dark.$headings-color;
font-size: dark.$font-size-sm;
font-weight: dark.$font-weight-normal;
}
.daterangepicker th.month {
color: dark.$headings-color;
font-weight: dark.$font-weight-normal;
}
.daterangepicker td.week,
.daterangepicker th.week {
color: dark.$headings-color;
font-weight: dark.$font-weight-normal;
}
.daterangepicker td.disabled,
.daterangepicker option.disabled {
color: dark.$text-muted;
}
.daterangepicker td.available:not(.active):hover,
.daterangepicker th.available:hover {
background-color: dark.$gray-50;
}
.daterangepicker td.off {
color: dark.$text-muted;
}
.daterangepicker .ranges li {
cursor: pointer;
padding: dark.$dropdown-item-padding-y dark.$dropdown-item-padding-x;
&:hover {
background-color: dark.$dropdown-link-hover-bg;
}
}
.daterangepicker .calendar-table .next,
.daterangepicker .calendar-table .prev {
background-color: dark.$gray-50;
span {
border-color: dark.$body-color;
}
}
.daterangepicker select {
&.hourselect,
&.minuteselect,
&.secondselect,
&.ampmselect {
background: dark.rgba-to-hex(dark.$gray-100, dark.$rgba-to-hex-bg);
border: 1px solid transparent;
font-size: dark.$font-size-sm;
color: dark.$body-color;
option {
background: dark.$card-bg;
}
}
// ! FIX: OS Windows and Linux Browsers DD Option color
&.monthselect,
&.yearselect {
option {
color: dark.$body-color;
background: dark.$card-bg;
&:disabled {
color: dark.$text-muted;
}
}
}
}
.daterangepicker .calendar-time select.disabled {
color: dark.$text-light;
}
@include dark.media-breakpoint-up(md) {
.daterangepicker {
width: auto !important;
&:not(.single) .drp-selected {
display: inline-block;
width: auto;
padding: 0;
}
}
@include app-ltr-style {
.daterangepicker:not(.single) .drp-calendar {
float: left;
&.left {
padding-right: 1rem;
}
}
}
@include app-rtl-style {
.daterangepicker:not(.single) .drp-calendar {
float: right;
&.left {
padding-left: 1rem;
}
}
}
}
@include dark.media-breakpoint-up(lg) {
.daterangepicker .ranges {
border-bottom: 0;
}
@include app-ltr-style {
.daterangepicker {
.ranges {
float: left;
}
}
}
@include app-rtl-style {
.daterangepicker {
.ranges {
float: right;
}
}
}
}
}
}