@sbh321/qcalendar
Version:
A forked version of Jeff Galbraith's fork of Quasar UI QCalendar
613 lines (598 loc) • 17 kB
CSS
/*!
* @subhambhandari/qcalendar v4.0.0-beta.19
* (c) 2024 Subham Bhandari <bhandarimaiya65@gmail.com>
* Released under the MIT License.
*/
.q-calendar {
position: relative;
display: flex;
flex-direction: column;
color: var(--calendar-color);
background: var(--calendar-background);
width: 100%;
min-width: auto;
overflow: hidden;
}
.q-calendar__bordered {
border: var(--calendar-border);
}
.q-calendar__button {
display: inline-block;
flex-direction: row;
align-items: center;
position: relative;
outline: 0;
border: 0;
vertical-align: middle;
padding: 0;
font-size: 0.75em;
line-height: 1.715em;
text-decoration: none;
color: inherit;
background: transparent;
text-transform: uppercase;
text-align: center;
width: auto;
height: auto;
min-height: 2em;
min-width: 2em;
will-change: background;
transition: background 0.3s;
}
.q-calendar__button--rounded {
border-radius: 6px;
}
.q-calendar__button--round {
border-radius: 50%;
}
.q-calendar__button--bordered {
border: var(--calendar-border);
}
.q-calendar__left {
text-align: left ;
justify-content: flex-start;
}
.q-calendar__center {
text-align: center ;
justify-content: center;
}
.q-calendar__right {
text-align: right ;
justify-content: flex-end;
}
.q-calendar__justify {
justify-content: space-between ;
}
.q-calendar__header--inline {
display: flex;
flex: 1 0 0;
flex-direction: row;
flex-wrap: nowrap;
justify-content: space-between;
align-items: center;
}
.q-calendar__ellipsis {
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
}
.q-calendar__overflow-wrap {
overflow-wrap: break-word;
overflow: hidden;
}
.q-calendar__parent {
transition: transform 0.3s;
border: solid currentColor;
border-width: 0 2px 2px 0;
display: inline-block;
padding: 2px;
width: 2px;
height: 2px;
cursor: pointer;
}
.q-calendar__parent--expanded {
margin: 0 2px;
transform: rotate(-135deg);
}
.q-calendar__parent--collapsed {
margin: 0 2px;
transform: rotate(45deg);
}
.q-calendar__child {
position: relative;
transition: max-height 0.28s linear;
}
.q-calendar__child--expanded {
max-height: 800px;
height: auto;
}
.q-calendar__child--collapsed {
max-height: 0;
overflow-y: hidden;
}
.q-calendar__focusable, .q-calendar__manual-focusable, .q-calendar__hoverable {
outline: 0;
}
.q-calendar__focus-helper {
position: absolute;
top: 0;
left: 0 /* rtl:ignore */;
width: 100%;
height: 100%;
pointer-events: none;
border-radius: inherit;
opacity: 0;
transition: background-color 0.3s cubic-bezier(0.25, 0.8, 0.5, 1), opacity 0.4s cubic-bezier(0.25, 0.8, 0.5, 1);
}
.q-calendar__focus-helper:before, .q-calendar__focus-helper:after {
content: "";
position: absolute;
top: 0;
left: 0 /* rtl:ignore */;
width: 100%;
height: 100%;
opacity: 0;
border-radius: inherit;
transition: background-color 0.3s cubic-bezier(0.25, 0.8, 0.5, 1), opacity 0.6s cubic-bezier(0.25, 0.8, 0.5, 1);
}
.q-calendar__focus-helper:before {
background: #000;
}
.q-calendar__focus-helper:after {
background: #fff;
}
.q-calendar__focus-helper--rounded {
border-radius: 6px;
}
.q-calendar__focus-helper--round {
border-radius: 50%;
}
.q-calendar__focusable:focus > .q-calendar__focus-helper, .q-calendar__manual-focusable--focused > .q-calendar__focus-helper, .q-calendar__hoverable:hover > .q-calendar__focus-helper {
background: currentColor;
opacity: 0.15;
}
.q-calendar__focusable:focus > .q-calendar__focus-helper:before, .q-calendar__manual-focusable--focused > .q-calendar__focus-helper:before, .q-calendar__hoverable:hover > .q-calendar__focus-helper:before {
opacity: 0.1;
}
.q-calendar__focusable:focus > .q-calendar__focus-helper:after, .q-calendar__manual-focusable--focused > .q-calendar__focus-helper:after, .q-calendar__hoverable:hover > .q-calendar__focus-helper:after {
opacity: 0.4;
}
.q-calendar__focusable:focus > .q-calendar__focus-helper, .q-calendar__manual-focusable--focused > .q-calendar__focus-helper {
opacity: 0.22;
}
.disabled, .disabled *, [disabled], [disabled] * {
outline: 0 ;
cursor: not-allowed ;
}
.disabled, [disabled] {
opacity: 0.6 ;
}
.q-calendar {
color: var(--calendar-color);
background: var(--calendar-background);
}
.q-calendar .q-calendar__scroll::-webkit-scrollbar {
width: var(--calendar-scrollbar-width-height);
height: var(--calendar-scrollbar-width-height);
}
.q-calendar .q-calendar__scroll::-webkit-scrollbar-track {
background: var(--calendar-scrollbar-track);
box-shadow: inset 0 0 4px var(--calendar-scrollbar-track);
}
.q-calendar .q-calendar__scroll::-webkit-scrollbar-corner {
background: var(--calendar-scrollbar-track);
}
.q-calendar .q-calendar__scroll::-webkit-scrollbar-thumb {
background: var(--calendar-scrollbar-thumb);
border-radius: 5px;
}
.q-calendar .q-calendar__scroll::-webkit-scrollbar-thumb:hover {
background: var(--calendar-scrollbar-thumb-hover);
}
.q-dark div.q-calendar,
.body--dark div.q-calendar,
.q-calendar--dark.q-calendar {
color: var(--calendar-color-dark);
background: var(--calendar-background-dark);
}
.q-dark div.q-calendar__bordered,
.body--dark div.q-calendar__bordered,
.q-calendar--dark.q-calendar__bordered {
border: var(--calendar-border-dark);
}
.q-dark div.q-calendar .q-calendar__scroll::-webkit-scrollbar,
.body--dark div.q-calendar .q-calendar__scroll::-webkit-scrollbar,
.q-calendar--dark.q-calendar .q-calendar__scroll::-webkit-scrollbar {
width: var(--calendar-scrollbar-width-height);
height: var(--calendar-scrollbar-width-height);
}
.q-dark div.q-calendar .q-calendar__scroll::-webkit-scrollbar-track,
.body--dark div.q-calendar .q-calendar__scroll::-webkit-scrollbar-track,
.q-calendar--dark.q-calendar .q-calendar__scroll::-webkit-scrollbar-track {
background: var(--calendar-scrollbar-track-dark);
box-shadow: inset 0 0 4px var(--calendar-scrollbar-track-dark);
}
.q-dark div.q-calendar .q-calendar__scroll::-webkit-scrollbar-corner,
.body--dark div.q-calendar .q-calendar__scroll::-webkit-scrollbar-corner,
.q-calendar--dark.q-calendar .q-calendar__scroll::-webkit-scrollbar-corner {
background: var(--calendar-scrollbar-track-dark);
}
.q-dark div.q-calendar .q-calendar__scroll::-webkit-scrollbar-thumb,
.body--dark div.q-calendar .q-calendar__scroll::-webkit-scrollbar-thumb,
.q-calendar--dark.q-calendar .q-calendar__scroll::-webkit-scrollbar-thumb {
background: var(--calendar-scrollbar-thumb-dark);
border-radius: 5px;
}
.q-dark div.q-calendar .q-calendar__scroll::-webkit-scrollbar-thumb:hover,
.body--dark div.q-calendar .q-calendar__scroll::-webkit-scrollbar-thumb:hover,
.q-calendar--dark.q-calendar .q-calendar__scroll::-webkit-scrollbar-thumb:hover {
background: var(--calendar-scrollbar-thumb-hover-dark);
}
.q-calendar-task {
display: flex;
flex: 1;
flex-direction: column;
flex-wrap: nowrap;
height: 100%;
width: 100%;
}
.q-calendar-task__head {
position: relative;
display: flex;
flex: none;
flex-direction: column;
}
.q-calendar-task__head--tasks {
position: relative;
display: flex;
}
.q-calendar-task__head--days {
position: relative;
display: flex;
flex-direction: row;
flex-wrap: nowrap;
-webkit-user-select: none;
user-select: none;
font-size: 1rem;
}
.q-calendar-task__head--day {
position: relative;
flex: 1 1 100%;
flex-wrap: nowrap;
overflow: hidden;
width: 0;
outline: 0;
}
.q-calendar-task__title {
position: relative;
display: flex;
flex: none;
flex-direction: row;
}
.q-calendar-task__title--task {
position: relative;
display: flex;
}
.q-calendar-task__title--days {
position: relative;
display: flex;
flex-direction: row;
flex-wrap: nowrap;
-webkit-user-select: none;
user-select: none;
font-size: 1rem;
}
.q-calendar-task__title--day {
position: relative;
flex: 1 1 100%;
flex-wrap: nowrap;
overflow: hidden;
width: 0;
outline: 0;
}
.q-calendar-task__head--weekday, .q-calendar-task__head--date {
display: flex;
flex-wrap: nowrap;
-webkit-user-select: none;
user-select: none;
margin: 2px;
flex: 1 0 0;
}
.q-calendar-task__container {
position: relative;
display: flex;
flex: 1;
flex-direction: column;
}
.q-calendar-task__body {
position: relative;
display: flex;
flex: 1 1 60%;
overflow: hidden;
}
.q-calendar-task__scroll-area {
overflow: auto;
flex: 1 1 auto;
display: flex;
align-items: flex-start;
}
.q-calendar-task__task {
position: relative;
display: flex;
flex: none;
flex-direction: row;
width: 100%;
}
.q-calendar-task__task--section {
position: relative;
display: flex;
flex: none;
flex-direction: row;
width: 100%;
}
.q-calendar-task__task--container {
position: relative;
min-height: 22px;
}
.q-calendar-task__task--item {
position: relative;
display: flex;
flex: none;
flex-direction: row;
}
.q-calendar-task__task--days-row {
position: relative;
display: flex;
flex: none;
}
.q-calendar-task__task--day {
display: flex;
justify-content: center;
align-items: center;
}
.q-calendar-task__footer {
position: relative;
display: flex;
flex: none;
flex-direction: column;
}
.q-calendar-task__footer--wrapper {
position: relative;
display: flex;
flex: none;
flex-direction: row;
}
.q-calendar-task__footer--task, .q-calendar-task__footer--day-wrapper {
position: relative;
display: flex;
flex: none;
flex-direction: row;
}
.q-calendar-task__head.q-calendar__sticky {
position: sticky;
left: 0 /* rtl:ignore */;
top: 0;
z-index: 2;
}
.q-calendar-task__head--tasks.q-calendar__sticky {
position: sticky;
left: 0 /* rtl:ignore */;
top: 0;
z-index: 2;
}
.q-calendar-task__title--task.q-calendar__sticky {
position: sticky;
left: 0 /* rtl:ignore */;
top: 0;
z-index: 2;
}
.q-calendar-task__task--container.q-calendar__sticky {
position: sticky;
left: 0 /* rtl:ignore */;
z-index: 1;
}
.q-calendar-task__task--item.q-calendar__sticky {
position: sticky;
left: 0 /* rtl:ignore */;
z-index: 1;
}
.q-calendar-task__footer.q-calendar__sticky {
position: sticky;
left: 0 /* rtl:ignore */;
bottom: 0;
z-index: 1;
}
.q-calendar-task__footer--task.q-calendar__sticky {
position: sticky;
left: 0 /* rtl:ignore */;
bottom: 0;
z-index: 2;
}
.q-calendar-task__footer--day.q-calendar__sticky {
position: sticky;
left: 0 /* rtl:ignore */;
z-index: 2;
}
.q-calendar-task__head {
color: var(--calendar-color);
background: var(--calendar-background);
border-bottom: var(--calendar-border);
font-weight: var(--calendar-head-font-weight);
}
.q-calendar-task__head--tasks {
color: var(--calendar-color);
background: var(--calendar-background);
border-right: var(--calendar-border);
}
.q-calendar-task__head--day {
border-right: var(--calendar-border);
}
.q-calendar-task__head--day:last-child {
border-right: none;
}
.q-calendar-task__head--day.q-active-date .q-calendar__button {
color: var(--calendar-active-date-color);
background: var(--calendar-active-date-background);
}
.q-calendar-task__head--day.q-current-day .q-calendar__button {
border: var(--calendar-border-current);
}
.q-calendar-task__head--day.q-disabled-day {
color: var(--calendar-disabled-date-color);
background: var(--calendar-disabled-date-background) ;
}
.q-calendar-task__title {
color: var(--calendar-color);
background: var(--calendar-background);
border-top: var(--calendar-border);
}
.q-calendar-task__title--task {
color: var(--calendar-color);
background: var(--calendar-background);
border-right: var(--calendar-border);
}
.q-calendar-task__title--day {
border-right: var(--calendar-border);
}
.q-calendar-task__title--day:last-child {
border-right: none;
}
.q-calendar-task__title--day.q-disabled-day {
color: var(--calendar-disabled-date-color);
background: var(--calendar-disabled-date-background) ;
}
.q-calendar-task__task {
border-bottom: var(--calendar-border);
}
.q-calendar-task__task:last-child {
border-bottom: none ;
}
.q-calendar-task__task--section {
border-bottom: var(--calendar-border-section);
}
.q-calendar-task__task--item {
background: var(--calendar-background);
border-right: var(--calendar-border);
}
.q-calendar-task__task--day {
border-right: var(--calendar-border);
}
.q-calendar-task__task--day:last-child {
border-right: none;
}
.q-calendar-task__footer {
font-weight: var(--calendar-head-font-weight);
}
.q-calendar-task__footer--wrapper {
border-top: var(--calendar-border);
}
.q-calendar-task__footer--task {
background: var(--calendar-background);
border-right: var(--calendar-border);
}
.q-calendar-task__footer--day {
background: var(--calendar-background);
border-right: var(--calendar-border);
}
.q-calendar-task__footer--day:last-child {
border-right: none;
}
.q-dark div .q-calendar-task__head,
.body--dark div .q-calendar-task__head,
.q-calendar--dark .q-calendar-task__head {
color: var(--calendar-color-dark);
background: var(--calendar-background-dark);
border-bottom: var(--calendar-border-dark);
}
.q-dark div .q-calendar-task__head--tasks,
.body--dark div .q-calendar-task__head--tasks,
.q-calendar--dark .q-calendar-task__head--tasks {
color: var(--calendar-color-dark);
background: var(--calendar-background-dark);
border-right: var(--calendar-border-dark);
}
.q-dark div .q-calendar-task__head--day,
.body--dark div .q-calendar-task__head--day,
.q-calendar--dark .q-calendar-task__head--day {
border-right: var(--calendar-border-dark);
}
.q-dark div .q-calendar-task__head--day.q-active-date .q-calendar__button,
.body--dark div .q-calendar-task__head--day.q-active-date .q-calendar__button,
.q-calendar--dark .q-calendar-task__head--day.q-active-date .q-calendar__button {
color: var(--calendar-active-date-color-dark);
background: var(--calendar-active-date-background-dark);
}
.q-dark div .q-calendar-task__head--day.q-current-day .q-calendar__button,
.body--dark div .q-calendar-task__head--day.q-current-day .q-calendar__button,
.q-calendar--dark .q-calendar-task__head--day.q-current-day .q-calendar__button {
border: var(--calendar-border-current-dark);
}
.q-dark div .q-calendar-task__head--day.q-disabled-day,
.body--dark div .q-calendar-task__head--day.q-disabled-day,
.q-calendar--dark .q-calendar-task__head--day.q-disabled-day {
color: var(--calendar-disabled-date-color-dark);
background: var(--calendar-disabled-date-background-dark) ;
}
.q-dark div .q-calendar-task__title,
.body--dark div .q-calendar-task__title,
.q-calendar--dark .q-calendar-task__title {
color: var(--calendar-color-dark);
background: var(--calendar-background-dark);
border-top: var(--calendar-border-dark);
}
.q-dark div .q-calendar-task__title--task,
.body--dark div .q-calendar-task__title--task,
.q-calendar--dark .q-calendar-task__title--task {
color: var(--calendar-color-dark);
background: var(--calendar-background-dark);
border-right: var(--calendar-border-dark);
}
.q-dark div .q-calendar-task__title--day,
.body--dark div .q-calendar-task__title--day,
.q-calendar--dark .q-calendar-task__title--day {
border-right: var(--calendar-border-dark);
}
.q-dark div .q-calendar-task__title.q-disabled-day,
.body--dark div .q-calendar-task__title.q-disabled-day,
.q-calendar--dark .q-calendar-task__title.q-disabled-day {
color: var(--calendar-disabled-date-color-dark);
background: var(--calendar-disabled-date-background-dark) ;
}
.q-dark div .q-calendar-task__task,
.body--dark div .q-calendar-task__task,
.q-calendar--dark .q-calendar-task__task {
border-bottom: var(--calendar-border-dark);
}
.q-dark div .q-calendar-task__task--section,
.body--dark div .q-calendar-task__task--section,
.q-calendar--dark .q-calendar-task__task--section {
border-bottom: var(--calendar-border-section-dark);
}
.q-dark div .q-calendar-task__task--item,
.body--dark div .q-calendar-task__task--item,
.q-calendar--dark .q-calendar-task__task--item {
background: var(--calendar-background-dark);
border-right: var(--calendar-border-dark);
}
.q-dark div .q-calendar-task__task--day,
.body--dark div .q-calendar-task__task--day,
.q-calendar--dark .q-calendar-task__task--day {
border-right: var(--calendar-border-dark);
}
.q-dark div .q-calendar-task__footer--wrapper,
.body--dark div .q-calendar-task__footer--wrapper,
.q-calendar--dark .q-calendar-task__footer--wrapper {
border-top: var(--calendar-border-dark);
}
.q-dark div .q-calendar-task__footer--task,
.body--dark div .q-calendar-task__footer--task,
.q-calendar--dark .q-calendar-task__footer--task {
background: var(--calendar-background-dark);
border-right: var(--calendar-border-dark);
}
.q-dark div .q-calendar-task__footer--day,
.body--dark div .q-calendar-task__footer--day,
.q-calendar--dark .q-calendar-task__footer--day {
background: var(--calendar-background-dark);
border-right: var(--calendar-border-dark);
}