[Back] /*!
* Copyright (c) 2024 LatePoint LLC. All rights reserved.
*/
.latepoint-calendar-wrapper {
position: relative;
&.show-filters{
.latepoint-calendar-filters {
display: flex;
}
.le-filter {
.latepoint-icon {
&:before {
content: "\e90a";
}
}
}
}
&.os-loading {
.latepoint-calendar-controls-wrapper {
&:before {
content: "";
display: block;
position: absolute;
bottom: -1px;
left: 0;
right: 0;
height: 3px;
background: repeating-linear-gradient(to right, #fff 0%, #1D7BFF 50%, #fff 100%);
width: 100%;
background-size: 200% auto;
background-position: 0 100%;
animation: os-loading-gradient 1.5s infinite;
animation-fill-mode: forwards;
animation-timing-function: linear;
}
}
}
}
.latepoint-calendar-controls-wrapper {
position: sticky;
top: 0;
z-index: 10;
border-bottom: 1px solid #ddd;
background-color: #fff;
}
.latepoint-calendar-filters {
border-top: 1px solid #eee;
padding: 15px 0;
gap: 15px;
display: none;
align-items: center;
justify-content: flex-end;
.le-filters-label {
font-size: $font-size-base;
}
}
.le-range-selector {
margin-left: auto;
}
.le-range-selector,
.latepoint-calendar-filters{
select.os-form-control {
padding: 8px 10px;
line-height: 1.55;
border-radius: 6px;
border: 1px solid #ccc;
font-size: $font-size-base;
height: auto;
}
}
.latepoint-calendar-controls {
display: flex;
align-items: center;
gap: 15px;
padding: 15px 0;
.le-label {
color: rgba(0,0,0,0.3);
font-size: floor($font-size-base * 1.8);
font-weight: $body-font-weight-bold;
line-height: 1;
}
.le-week {
font-size: floor($font-size-base * 1.8);
font-weight: $body-font-weight-bold;
line-height: 1;
}
.le-month {
font-size: floor($font-size-base * 2.4);
font-weight: $body-font-weight-bold;
line-height: 1;
}
.le-filter {
padding: 6px 12px;
border: 1px solid #ccc;
color: $body-color;
cursor: pointer;
display: flex;
gap: 10px;
align-items: center;
font-size: $font-size-base;
border-radius: 6px;
position: relative;
&.os-loading{
&:before {
@include loading-circle(#000, 10px);
left: 18px;
}
.latepoint-icon {
color: transparent;
}
}
.latepoint-icon {
}
&:hover {
border-color: #111;
}
}
.le-navigation-wrapper {
border-left: 1px solid #eee;
padding-left: 20px;
margin-left: 5px;
}
.le-navigation {
display: flex;
font-size: $font-size-base;
border-radius: 6px;
align-items: stretch;
border: 1px solid #ccc;
.le-today {
padding: 6px 12px;
color: $body-color;
cursor: pointer;
position: relative;
border-radius: 6px;
&:hover {
box-shadow: 0 0 0 1px #111;
z-index: 2;
}
}
.le-navigation-button {
padding: 11px 10px;
cursor: pointer;
position: relative;
font-size: 10px;
line-height: 1;
border-radius: 6px;
&:hover {
box-shadow: 0 0 0 1px #111;
z-index: 2;
border-color: transparent;
}
&:first-child {
}
&:last-child {
}
&.os-loading {
color: transparent;
&:before {
@include loading-circle(#000, 10px);
}
}
}
}
}
.latepoint-calendar-week {
display: grid;
grid-template-columns: 1fr 1fr 1fr 1fr 1fr 1fr 1fr;
padding-left: 50px;
.le-day-wrapper {
position: relative;
&.os-month-prev {
.le-day-weekday-wrapper {
.le-day-number {
}
}
}
&.day-weekday-6,
&.day-weekday-7 {
.le-day-weekday-wrapper {
background-color: #fffaf1;
}
}
&.os-today {
.le-day-weekday-wrapper {
&:before {
content: "";
left: 0px;
right: 0px;
top: 0px;
background-color: #f34a4a;
position: absolute;
height: 2px;
z-index: 10;
}
}
}
&:hover {
.le-day-number {
color: $brand-primary;
border-bottom-color: $brand-primary;
}
}
&:first-child {
.day-schedule-timeslot-value {
display: block;
}
.le-day-schedule-wrapper .day-schedule-timeslot:before {
content: "";
background-color: #ddd;
height: 1px;
top: 0px;
left: -5px;
width: 5px;
position: absolute;
}
}
&:first-child {
.le-day-weekday-wrapper {
}
}
&:last-child {
border-right: 1px solid #ddd;
}
}
.le-day-weekday-wrapper {
border-left: 1px solid #ddd;
padding-left: 20px;
padding-top: 10px;
padding-bottom: 7px;
border-bottom: 1px solid #bbb;
position: sticky;
top: 35px;
z-index: 7;
box-shadow: 0 2px 0 0 rgba(0,0,0,0.05);
background-color: #fff;
}
.le-day-weekday {
font-weight: $body-font-weight-bold;
color: #aaa;
z-index: 3;
position: relative;
}
.le-day-number {
font-size: $font-size-base * 3;
font-weight: $body-font-weight-bold;
line-height: 1;
border-bottom: 1px dotted transparent;
display: inline-block;
cursor: pointer;
position: relative;
z-index: 2;
&:hover {
border-bottom-style: solid;
}
&.os-loading {
color: transparent!important;
border-bottom-color: transparent!important;
&:before {
@include loading-circle($brand-primary, 30px);
}
}
}
.os-day-month {
position: absolute;
z-index: 1;
font-size: floor($font-size-base * 5);
color: rgba(0,0,0,0.05);
left: 15px;
top: 12px;
line-height: 1;
overflow: hidden;
right: 0;
}
$timeslot_value_width: 50px;
.le-day-schedule-wrapper {
.day-schedule-timeslots {
position: relative;
&:before {
content: "";
top: 0;
bottom: 0;
width: 1px;
background-color: #e1e1e1;
position: absolute;
left: 0;
}
.day-schedule-timeslot-wrapper {
display: flex;
background-color: #f9f9f9;
&:first-child {
.day-schedule-timeslot-value {
display: none;
}
.day-schedule-timeslot:before {
background-color: transparent;
}
}
.day-schedule-timeslot {
flex: 1;
text-align: right;
text-transform: uppercase;
letter-spacing: 1px;
font-size: floor($font-size-base * 0.75);
height: $calendar-timeslot-height;
position: relative;
box-shadow: 0 1px 0 0 #ddd;
}
}
.le-service-wrapper {
position: absolute;
left: 0;
right: 0;
font-size: floor($font-size-base * 0.8);
background-color: #fff;
z-index: 2;
cursor: pointer;
box-shadow: inset 0 1px 0 0px #ddd, 0 3px 0 0 rgba(0,0,0,0.03);
border-bottom: 1px solid #ccc;
&.os-loading {
&:before {
content: "";
@include loading-circle(#111, 8px);
top: 10px;
right: 0px;
left: auto;
}
}
&.is-passed {
.le-service-inner {
opacity: 0.6;
}
cursor: not-allowed;
&:hover {
.is-passed-message {
display: block;
}
}
.is-passed-message {
display: none;
background-color: #000;
color: #fff;
padding: 5px 10px;
font-weight: $body-font-weight-bold;
font-size: floor($font-size-base * 0.8);
position: absolute;
top: 0;
left: 50%;
transform: translate(-50%, -110%);
white-space: nowrap;
}
}
&:hover {
opacity: 1;
z-index: 3;
.le-color-elem {
width: 5px;
}
.le-service-name, .le-service-time-period {
transform: translateX(3px);
}
}
.le-service-inner {
padding: 3px;
padding-left: 8px;
display: flex;
flex-direction: column;
height: 100%;
box-sizing: border-box;
}
.le-color-elem {
position: absolute;
top: 0px;
bottom: -1px;
left: 0px;
width: 3px;
display: block;
transition: all 0.15s ease;
}
}
.le-service-time-period {
transition: transform 0.15s ease;
}
.le-service-name {
font-weight: $body-font-weight-bold;
font-size: floor($font-size-base);
line-height: 1.4;
overflow: hidden;
transition: transform 0.15s ease;
}
}
.day-schedule-timeslot {
position: relative;
}
}
.day-schedule-timeslot-value {
display: none;
position: absolute;
top: 0;
transform: translateY(-50%);
left: -$timeslot_value_width - 10;
width: $timeslot_value_width;
text-align: right;
}
}
.latepoint-calendar-month {
display: grid;
grid-template-columns: 1fr 1fr 1fr 1fr 1fr 1fr 1fr;
gap: 1px;
background-color: #ddd;
padding: 1px;
padding-top: 0;
.le-weekday {
background-color: #fff;
padding: 5px 15px;
font-weight: $body-font-weight-bold;
font-size: floor($font-size-base * 1.2);
&.weekday-6,
&.weekday-7 {
color: #382c18;
}
}
.le-day-wrapper {
min-height: 200px;
background-color: #fff;
padding: 20px;
position: relative;
&:hover {
.le-day-number {
color: $brand-primary;
border-bottom: 1px dotted $brand-primary;
}
}
&.day-weekday-6,
&.day-weekday-7 {
}
&.os-today {
&:before {
content: "";
left: -1px;
right: -1px;
top: -1px;
background-color: #f34a4a;
position: absolute;
height: 2px;
}
}
&.os-day-passed,
&.os-month-prev,
&.os-month-next {
background-color: #f9f9f9;
.le-day-number {
color: #999;
}
.le-service-wrapper {
opacity: 0.8;
}
}
.le-more-services {
color: $brand-primary;
border-bottom: 1px dotted $brand-primary;
font-size: $font-size-base;
display: inline-block;
cursor: pointer;
font-weight: $body-font-weight-bold;
line-height: 1.2;
position: relative;
&:hover {
border-bottom-style: solid;
}
&.os-loading {
color: transparent;
border-bottom-color: transparent;
&:before {
@include loading-circle($brand-primary, 10px);
}
}
}
.os-day-month {
position: absolute;
z-index: 1;
font-size: floor($font-size-base * 4);
color: rgba(0,0,0,0.05);
left: 20px;
top: 7px;
line-height: 1;
right: 0;
overflow: hidden;
}
.le-day-number {
z-index: 2;
font-size: floor($font-size-base * 1.8);
font-weight: $body-font-weight-bold;
line-height: 1;
margin-bottom: 10px;
border-bottom: 1px dotted transparent;
display: inline-block;
cursor: pointer;
position: relative;
&:hover {
border-bottom-style: solid;
}
&.os-loading {
color: transparent;
border-bottom-color: transparent;
&:before {
@include loading-circle($brand-primary, 15px);
}
}
}
.le-service-wrapper {
padding: 3px;
padding-left: 10px;
font-size: floor($font-size-base * 0.8);
margin-bottom: 10px;
border: 1px solid #ddd;
position: relative;
background-color: #fff;
z-index: 2;
cursor: pointer;
box-shadow: 0 2px 0 0 rgba(0,0,0,0.05);
border-bottom-color: #bbb;
border-left: none;
&.is-passed {
cursor: not-allowed;
.le-service-inner {
opacity: 0.6;
}
&:hover {
.is-passed-message {
display: block;
}
}
.is-passed-message {
display: none;
background-color: #000;
color: #fff;
padding: 5px 10px;
font-weight: $body-font-weight-bold;
font-size: floor($font-size-base * 0.8);
position: absolute;
top: 0;
left: 50%;
transform: translate(-50%, -110%);
white-space: nowrap;
}
}
&.os-loading {
&:before {
content: "";
@include loading-circle(#111, 8px);
top: 10px;
right: 0px;
left: auto;
}
}
&:hover {
border-color: #bbb;
.le-color-elem {
transform: translateX(-2px);
width: 5px;
}
}
.le-color-elem {
position: absolute;
top: -1px;
bottom: -1px;
left: -1px;
width: 3px;
display: block;
transition: all 0.15s ease;
}
}
.le-service-name {
font-weight: $body-font-weight-bold;
font-size: floor($font-size-base);
line-height: 1.35;
}
.le-service-time-period {
}
}
}
.le-day-view-wrapper {
&.os-loading {
.le-day-info-section {
&:before {
content: "";
display: block;
position: absolute;
bottom: -1px;
left: 0;
right: 0;
height: 3px;
background: repeating-linear-gradient(to right, #fff 0%, #1D7BFF 50%, #fff 100%);
width: 100%;
background-size: 200% auto;
background-position: 0 100%;
animation: os-loading-gradient 1.5s infinite;
animation-fill-mode: forwards;
animation-timing-function: linear;
}
}
}
.le-day-info-section {
display: flex;
border-bottom: 1px solid rgba(0,0,0,0.2);
padding: 20px 40px;
position: sticky;
top: 0;
background-color: #fff;
z-index: 4;
.le-day-info {
text-align: center;
.le-day-number {
font-size: floor($font-size-base * 4.1);
font-weight: $body-font-weight-bold;
line-height: 1;
}
.le-day-month {
color: $color-faded;
font-size: floor($font-size-base * 1.4);
letter-spacing: 2px;
text-transform: uppercase;
font-weight: $body-font-weight-bold;
}
}
.le-day-filters-wrapper {
border-left: 1px solid #eee;
margin-left: 40px;
padding-left: 20px;
flex: 1;
}
.le-day-heading {
font-size: floor($font-size-base * 2.2);
font-weight: $body-font-weight-bold;
margin-bottom: 10px;
}
.le-day-filters {
gap: 10px;
display: flex;
align-items: center;
.os-form-group.os-form-select-group {
margin-bottom: 0px!important;
.os-form-control {
height: auto!important;
padding: 6px!important;
border-color: #ccc!important;
border-radius: 6px!important;
}
}
}
}
$timeslot_value_width: 50px;
.le-day-schedule-wrapper {
padding: 40px;
background-color: #f8f8f8;
.day-schedule-timeslots {
position: relative;
padding-left: $timeslot_value_width;
&:before {
content: "";
top: 0;
bottom: 0;
width: 1px;
background-color: #e1e1e1;
position: absolute;
left: $timeslot_value_width + 10px;
}
.day-schedule-timeslot-wrapper {
display: flex;
box-shadow: 0 1px 0 0 #e1e1e1;
&:first-child {
}
.day-schedule-timeslot {
flex: 0 0 $timeslot_value_width;
text-align: right;
text-transform: uppercase;
letter-spacing: 1px;
font-size: floor($font-size-base * 0.75);
height: $calendar-timeslot-height;
position: relative;
.day-schedule-timeslot-value {
position: absolute;
top: 0;
transform: translateY(-50%);
left: -$timeslot_value_width - 10;
width: $timeslot_value_width;
text-align: right;
}
}
}
.le-service-wrapper {
position: absolute;
left: $timeslot_value_width + 10;
right: 0;
font-size: floor($font-size-base * 0.8);
box-shadow: inset 0 1px 0 0px #ddd, 0 3px 0 0 rgba(0, 0, 0, 0.03), 0 1px 0 0 #ddd;
border-right: 1px solid #ddd;
background-color: #fff;
z-index: 2;
cursor: pointer;
.le-service-inner {
padding: 3px;
padding-left: 10px;
flex-direction: column;
height: 100%;
box-sizing: border-box;
display: flex;
}
&.is-passed {
cursor: not-allowed;
.le-service-inner{
opacity: 0.6;
}
&:hover {
.is-passed-message {
display: block;
}
}
.is-passed-message {
display: none;
background-color: #000;
color: #fff;
padding: 5px 10px;
font-weight: $body-font-weight-bold;
font-size: floor($font-size-base * 0.8);
position: absolute;
top: 0;
left: 50%;
transform: translate(-50%, -110%);
white-space: nowrap;
}
}
&:hover {
border-bottom-color: #999;
opacity: 1;
z-index: 3;
.le-color-elem {
transform: translateX(-2px);
width: 5px;
}
.le-service-name,
.le-service-time-period {
transform: translateX(3px);
}
}
.le-color-elem {
position: absolute;
top: 0px;
bottom: -1px;
left: -1px;
width: 3px;
display: block;
transition: all 0.15s ease;
}
}
.le-service-name {
font-weight: $body-font-weight-bold;
font-size: floor($font-size-base);
line-height: 1.4;
overflow: hidden;
transition: transform 0.15s ease;
}
.le-service-time-period {
transition: transform 0.15s ease;
}
}
.day-schedule-timeslot {
}
}
}