UNPKG

@sbh321/qcalendar

Version:

A forked version of Jeff Galbraith's fork of Quasar UI QCalendar

613 lines (598 loc) 17 kB
/*! * @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 !important; justify-content: flex-start; } .q-calendar__center { text-align: center !important; justify-content: center; } .q-calendar__right { text-align: right !important; justify-content: flex-end; } .q-calendar__justify { justify-content: space-between !important; } .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 !important; cursor: not-allowed !important; } .disabled, [disabled] { opacity: 0.6 !important; } .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) !important; } .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) !important; } .q-calendar-task__task { border-bottom: var(--calendar-border); } .q-calendar-task__task:last-child { border-bottom: none !important; } .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) !important; } .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) !important; } .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); }