PluginProbe ʕ •ᴥ•ʔ
Appointment Booking Plugin – LatePoint | Calendar & Scheduling for WordPress / 5.4.1
Appointment Booking Plugin – LatePoint | Calendar & Scheduling for WordPress v5.4.1
5.6.8 5.6.7 5.6.6 5.6.5 5.6.4 5.6.3 5.6.2 5.6.1 5.6.0 5.5.2 5.5.1 5.5.0 5.4.2 trunk 5.1.0 5.1.1 5.1.2 5.1.3 5.1.4 5.1.5 5.1.6 5.1.7 5.1.8 5.1.9 5.1.91 5.1.92 5.1.93 5.1.94 5.2.0 5.2.1 5.2.10 5.2.11 5.2.2 5.2.3 5.2.4 5.2.5 5.2.6 5.2.7 5.2.8 5.2.9 5.3.0 5.3.1 5.3.2 5.4.0 5.4.1
latepoint / lib / assets / stylesheets / front / _calendar.scss
latepoint / lib / assets / stylesheets / front Last commit date
_animations.scss 9 months ago _booking.scss 9 months ago _booking_animations.scss 1 year ago _buttons.scss 9 months ago _calendar.scss 3 months ago _customer_dashboard.scss 9 months ago _forms.scss 9 months ago _grid.scss 1 year ago _icons.scss 9 months ago _items.scss 9 months ago _lightbox.scss 9 months ago _login.scss 9 months ago _mixins.scss 1 year ago _notifications.scss 9 months ago _print.scss 1 year ago _responsive.scss 9 months ago _shared.scss 1 year ago _shortcodes.scss 1 year ago _type.scss 1 year ago _utilities.scss 1 year ago _variables.scss 9 months ago
_calendar.scss
816 lines
1 /*!
2 * Copyright (c) 2024 LatePoint LLC. All rights reserved.
3 */
4
5 .latepoint-calendar-wrapper {
6 position: relative;
7 &.show-filters {
8 .latepoint-calendar-filters {
9 display: flex;
10 }
11 .le-filter {
12 .latepoint-icon {
13 &:before {
14 content: "\e90a";
15 }
16 }
17 }
18 }
19 &.os-loading {
20 .latepoint-calendar-controls-wrapper {
21 &:before {
22 content: "";
23 display: block;
24 position: absolute;
25 bottom: -1px;
26 left: 0;
27 right: 0;
28 height: 3px;
29 background: repeating-linear-gradient(
30 to right,
31 #fff 0%,
32 #1d7bff 50%,
33 #fff 100%
34 );
35 width: 100%;
36 background-size: 200% auto;
37 background-position: 0 100%;
38 animation: os-loading-gradient 1.5s infinite;
39 animation-fill-mode: forwards;
40 animation-timing-function: linear;
41 }
42 }
43 }
44 }
45
46 .latepoint-calendar-controls-wrapper {
47 position: sticky;
48 top: 0;
49 z-index: 10;
50 border-bottom: 1px solid #ddd;
51 background-color: #fff;
52 }
53 .latepoint-calendar-filters {
54 border-top: 1px solid #eee;
55 padding: 15px 0;
56 gap: 15px;
57 display: none;
58 align-items: center;
59 justify-content: flex-end;
60 .le-filters-label {
61 font-size: $font-size-base;
62 }
63 }
64 .le-range-selector {
65 margin-left: auto;
66 }
67 .le-range-selector,
68 .latepoint-calendar-filters {
69 select.os-form-control {
70 padding: 8px 10px;
71 line-height: 1.55;
72 border-radius: 6px;
73 border: 1px solid #ccc;
74 font-size: $font-size-base;
75 height: auto;
76 }
77 }
78 .latepoint-calendar-controls {
79 display: flex;
80 align-items: center;
81 gap: 15px;
82 padding: 15px 0;
83 .le-label {
84 color: rgba(0, 0, 0, 0.3);
85 font-size: floor($font-size-base * 1.8);
86 font-weight: $body-font-weight-bold;
87 line-height: 1;
88 }
89 .le-week {
90 font-size: floor($font-size-base * 1.8);
91 font-weight: $body-font-weight-bold;
92 line-height: 1;
93 }
94 .le-month {
95 font-size: floor($font-size-base * 2.4);
96 font-weight: $body-font-weight-bold;
97 line-height: 1;
98 }
99 .le-filter {
100 padding: 6px 12px;
101 border: 1px solid #ccc;
102 color: $body-color;
103 cursor: pointer;
104 display: flex;
105 gap: 10px;
106 align-items: center;
107 font-size: $font-size-base;
108 border-radius: 6px;
109 position: relative;
110 &.os-loading {
111 &:before {
112 @include loading-circle(#000, 10px);
113 left: 18px;
114 }
115 .latepoint-icon {
116 color: transparent;
117 }
118 }
119 .latepoint-icon {
120 }
121 &:hover {
122 border-color: #111;
123 }
124 }
125 .le-navigation-wrapper {
126 border-left: 1px solid #eee;
127 padding-left: 20px;
128 margin-left: 5px;
129 }
130 .le-navigation {
131 display: flex;
132 font-size: $font-size-base;
133 border-radius: 6px;
134 align-items: stretch;
135 border: 1px solid #ccc;
136 .le-today {
137 padding: 6px 12px;
138 color: $body-color;
139 cursor: pointer;
140 position: relative;
141 border-radius: 6px;
142 &:hover {
143 box-shadow: 0 0 0 1px #111;
144 z-index: 2;
145 }
146 }
147
148 .le-navigation-button {
149 padding: 11px 10px;
150 cursor: pointer;
151 position: relative;
152 font-size: 10px;
153 line-height: 1;
154 border-radius: 6px;
155 &:hover {
156 box-shadow: 0 0 0 1px #111;
157 z-index: 2;
158 border-color: transparent;
159 }
160 &:first-child {
161 }
162 &:last-child {
163 }
164 &.os-loading {
165 color: transparent;
166 &:before {
167 @include loading-circle(#000, 10px);
168 }
169 }
170 }
171 }
172 }
173
174 .latepoint-calendar-week {
175 display: grid;
176 grid-template-columns: 1fr 1fr 1fr 1fr 1fr 1fr 1fr;
177 padding-left: 50px;
178 .le-day-wrapper {
179 position: relative;
180 &.os-month-prev {
181 .le-day-weekday-wrapper {
182 .le-day-number {
183 }
184 }
185 }
186 &.day-weekday-6,
187 &.day-weekday-7 {
188 .le-day-weekday-wrapper {
189 background-color: #fffaf1;
190 }
191 }
192 &.os-today {
193 .le-day-weekday-wrapper {
194 &:before {
195 content: "";
196 left: 0px;
197 right: 0px;
198 top: 0px;
199 background-color: #f34a4a;
200 position: absolute;
201 height: 2px;
202 z-index: 10;
203 }
204 }
205 }
206 &:hover {
207 .le-day-number {
208 color: $brand-primary;
209 border-bottom-color: $brand-primary;
210 }
211 }
212 &:first-child {
213 .day-schedule-timeslot-value {
214 display: block;
215 }
216 .le-day-schedule-wrapper .day-schedule-timeslot:before {
217 content: "";
218 background-color: #ddd;
219 height: 1px;
220 top: 0px;
221 left: -5px;
222 width: 5px;
223 position: absolute;
224 }
225 }
226 &:first-child {
227 .le-day-weekday-wrapper {
228 }
229 }
230 &:last-child {
231 border-right: 1px solid #ddd;
232 }
233 }
234 .le-day-weekday-wrapper {
235 border-left: 1px solid #ddd;
236 padding-left: 20px;
237 padding-top: 10px;
238 padding-bottom: 7px;
239 border-bottom: 1px solid #bbb;
240 position: sticky;
241 top: 35px;
242 z-index: 7;
243 box-shadow: 0 2px 0 0 rgba(0, 0, 0, 0.05);
244 background-color: #fff;
245 }
246 .le-day-weekday {
247 font-weight: $body-font-weight-bold;
248 color: #aaa;
249 z-index: 3;
250 position: relative;
251 }
252 .le-day-number {
253 font-size: $font-size-base * 3;
254 font-weight: $body-font-weight-bold;
255 line-height: 1;
256 border-bottom: 1px dotted transparent;
257 display: inline-block;
258 cursor: pointer;
259 position: relative;
260 z-index: 2;
261 &:hover {
262 border-bottom-style: solid;
263 }
264 &.os-loading {
265 color: transparent !important;
266 border-bottom-color: transparent !important;
267 &:before {
268 @include loading-circle($brand-primary, 30px);
269 }
270 }
271 }
272 .os-day-month {
273 position: absolute;
274 z-index: 1;
275 font-size: floor($font-size-base * 5);
276 color: rgba(0, 0, 0, 0.05);
277 left: 15px;
278 top: 12px;
279 line-height: 1;
280 overflow: hidden;
281 right: 0;
282 }
283
284 $timeslot_value_width: 50px;
285 .le-day-schedule-wrapper {
286 .day-schedule-timeslots {
287 position: relative;
288 &:before {
289 content: "";
290 top: 0;
291 bottom: 0;
292 width: 1px;
293 background-color: #e1e1e1;
294 position: absolute;
295 left: 0;
296 }
297 .day-schedule-timeslot-wrapper {
298 display: flex;
299 background-color: #f9f9f9;
300 &:first-child {
301 .day-schedule-timeslot-value {
302 display: none;
303 }
304 .day-schedule-timeslot:before {
305 background-color: transparent;
306 }
307 }
308 .day-schedule-timeslot {
309 flex: 1;
310 text-align: right;
311 text-transform: uppercase;
312 letter-spacing: 1px;
313 font-size: floor($font-size-base * 0.75);
314 height: $calendar-timeslot-height;
315 position: relative;
316 box-shadow: 0 1px 0 0 #ddd;
317 }
318 }
319 .le-service-wrapper {
320 position: absolute;
321 left: 0;
322 right: 0;
323 font-size: floor($font-size-base * 0.8);
324 background-color: #fff;
325 z-index: 2;
326 cursor: pointer;
327 box-shadow:
328 inset 0 1px 0 0px #ddd,
329 0 3px 0 0 rgba(0, 0, 0, 0.03);
330 border-bottom: 1px solid #ccc;
331 &.os-loading {
332 &:before {
333 content: "";
334 @include loading-circle(#111, 8px);
335 top: 10px;
336 right: 0px;
337 left: auto;
338 }
339 }
340 &.is-passed {
341 .le-service-inner {
342 opacity: 0.6;
343 }
344 cursor: not-allowed;
345 &:hover {
346 .is-passed-message {
347 display: block;
348 }
349 }
350 .is-passed-message {
351 display: none;
352 background-color: #000;
353 color: #fff;
354 padding: 5px 10px;
355 font-weight: $body-font-weight-bold;
356 font-size: floor($font-size-base * 0.8);
357 position: absolute;
358 top: 0;
359 left: 50%;
360 transform: translate(-50%, -110%);
361 white-space: nowrap;
362 }
363 }
364 &:hover {
365 opacity: 1;
366 z-index: 3;
367 .le-color-elem {
368 width: 5px;
369 }
370 .le-service-name,
371 .le-service-time-period {
372 transform: translateX(3px);
373 }
374 }
375 .le-service-inner {
376 padding: 3px;
377 padding-left: 8px;
378 display: flex;
379 flex-direction: column;
380 height: 100%;
381 box-sizing: border-box;
382 }
383 .le-color-elem {
384 position: absolute;
385 top: 0px;
386 bottom: -1px;
387 left: 0px;
388 width: 3px;
389 display: block;
390 transition: all 0.15s ease;
391 }
392 }
393 .le-service-time-period {
394 transition: transform 0.15s ease;
395 }
396 .le-service-name {
397 font-weight: $body-font-weight-bold;
398 font-size: floor($font-size-base);
399 line-height: 1.4;
400 overflow: hidden;
401 transition: transform 0.15s ease;
402 }
403 }
404 .day-schedule-timeslot {
405 position: relative;
406 }
407 }
408
409 .day-schedule-timeslot-value {
410 display: none;
411 position: absolute;
412 top: 0;
413 transform: translateY(-50%);
414 left: -$timeslot_value_width - 10;
415 width: $timeslot_value_width;
416 text-align: right;
417 }
418 }
419
420 .latepoint-calendar-month {
421 display: grid;
422 grid-template-columns: 1fr 1fr 1fr 1fr 1fr 1fr 1fr;
423 gap: 1px;
424 background-color: #ddd;
425 padding: 1px;
426 padding-top: 0;
427 .le-weekday {
428 background-color: #fff;
429 padding: 5px 15px;
430 font-weight: $body-font-weight-bold;
431 font-size: floor($font-size-base * 1.2);
432 &.weekday-6,
433 &.weekday-7 {
434 color: #382c18;
435 }
436 }
437 .le-day-wrapper {
438 min-height: 200px;
439 background-color: #fff;
440 padding: 20px;
441 position: relative;
442 &:hover {
443 .le-day-number {
444 color: $brand-primary;
445 border-bottom: 1px dotted $brand-primary;
446 }
447 }
448 &.day-weekday-6,
449 &.day-weekday-7 {
450 }
451 &.os-today {
452 &:before {
453 content: "";
454 left: -1px;
455 right: -1px;
456 top: -1px;
457 background-color: #f34a4a;
458 position: absolute;
459 height: 2px;
460 }
461 }
462 &.os-day-passed,
463 &.os-month-prev,
464 &.os-month-next {
465 background-color: #f9f9f9;
466 .le-day-number {
467 color: #999;
468 }
469 .le-service-wrapper {
470 opacity: 0.8;
471 }
472 }
473 .le-more-services {
474 color: $brand-primary;
475 border-bottom: 1px dotted $brand-primary;
476 font-size: $font-size-base;
477 display: inline-block;
478 cursor: pointer;
479 font-weight: $body-font-weight-bold;
480 line-height: 1.2;
481 position: relative;
482 &:hover {
483 border-bottom-style: solid;
484 }
485 &.os-loading {
486 color: transparent;
487 border-bottom-color: transparent;
488 &:before {
489 @include loading-circle($brand-primary, 10px);
490 }
491 }
492 }
493 .os-day-month {
494 position: absolute;
495 z-index: 1;
496 font-size: floor($font-size-base * 4);
497 color: rgba(0, 0, 0, 0.05);
498 left: 20px;
499 top: 7px;
500 line-height: 1;
501 right: 0;
502 overflow: hidden;
503 }
504 .le-day-number {
505 z-index: 2;
506 font-size: floor($font-size-base * 1.8);
507 font-weight: $body-font-weight-bold;
508 line-height: 1;
509 margin-bottom: 10px;
510 border-bottom: 1px dotted transparent;
511 display: inline-block;
512 cursor: pointer;
513 position: relative;
514 &:hover {
515 border-bottom-style: solid;
516 }
517 &.os-loading {
518 color: transparent;
519 border-bottom-color: transparent;
520 &:before {
521 @include loading-circle($brand-primary, 15px);
522 }
523 }
524 }
525 .le-service-wrapper {
526 padding: 3px;
527 padding-left: 10px;
528 font-size: floor($font-size-base * 0.8);
529 margin-bottom: 10px;
530 border: 1px solid #ddd;
531 position: relative;
532 background-color: #fff;
533 z-index: 2;
534 cursor: pointer;
535 box-shadow: 0 2px 0 0 rgba(0, 0, 0, 0.05);
536 border-bottom-color: #bbb;
537 border-left: none;
538 &.is-passed {
539 cursor: not-allowed;
540 .le-service-inner {
541 opacity: 0.6;
542 }
543 &:hover {
544 .is-passed-message {
545 display: block;
546 }
547 }
548 .is-passed-message {
549 display: none;
550 background-color: #000;
551 color: #fff;
552 padding: 5px 10px;
553 font-weight: $body-font-weight-bold;
554 font-size: floor($font-size-base * 0.8);
555 position: absolute;
556 top: 0;
557 left: 50%;
558 transform: translate(-50%, -110%);
559 white-space: nowrap;
560 }
561 }
562
563 &.os-loading {
564 &:before {
565 content: "";
566 @include loading-circle(#111, 8px);
567 top: 10px;
568 right: 0px;
569 left: auto;
570 }
571 }
572 &:hover {
573 border-color: #bbb;
574 .le-color-elem {
575 transform: translateX(-2px);
576 width: 5px;
577 }
578 }
579 .le-color-elem {
580 position: absolute;
581 top: -1px;
582 bottom: -1px;
583 left: -1px;
584 width: 3px;
585 display: block;
586 transition: all 0.15s ease;
587 }
588 }
589 .le-service-name {
590 font-weight: $body-font-weight-bold;
591 font-size: floor($font-size-base);
592 line-height: 1.35;
593 }
594 .le-service-time-period {
595 }
596 }
597 }
598
599 .le-day-view-wrapper {
600 &.os-loading {
601 .le-day-info-section {
602 &:before {
603 content: "";
604 display: block;
605 position: absolute;
606 bottom: -1px;
607 left: 0;
608 right: 0;
609 height: 3px;
610 background: repeating-linear-gradient(
611 to right,
612 #fff 0%,
613 #1d7bff 50%,
614 #fff 100%
615 );
616 width: 100%;
617 background-size: 200% auto;
618 background-position: 0 100%;
619 animation: os-loading-gradient 1.5s infinite;
620 animation-fill-mode: forwards;
621 animation-timing-function: linear;
622 }
623 }
624 }
625 .le-day-info-section {
626 display: flex;
627 border-bottom: 1px solid rgba(0, 0, 0, 0.2);
628 padding: 20px 40px;
629 position: sticky;
630 top: 0;
631 background-color: #fff;
632 z-index: 4;
633
634 .le-day-info {
635 text-align: center;
636 .le-day-number {
637 font-size: floor($font-size-base * 4.1);
638 font-weight: $body-font-weight-bold;
639 line-height: 1;
640 }
641 .le-day-month {
642 color: $color-faded;
643 font-size: floor($font-size-base * 1.4);
644 letter-spacing: 2px;
645 text-transform: uppercase;
646 font-weight: $body-font-weight-bold;
647 }
648 }
649 .le-day-filters-wrapper {
650 border-left: 1px solid #eee;
651 margin-left: 40px;
652 padding-left: 20px;
653 flex: 1;
654 }
655 .le-day-heading {
656 font-size: floor($font-size-base * 2.2);
657 font-weight: $body-font-weight-bold;
658 margin-bottom: 10px;
659 }
660 .le-day-filters {
661 gap: 10px;
662 display: flex;
663 align-items: center;
664 .os-form-group.os-form-select-group {
665 margin-bottom: 0px !important;
666 .os-form-control {
667 height: auto !important;
668 padding: 6px !important;
669 border-color: #ccc !important;
670 border-radius: 6px !important;
671 }
672 }
673 }
674 .latepoint-lightbox-close {
675 position: absolute;
676 top: 15px;
677 right: 15px;
678 font-size: 20px;
679 color: #333;
680 text-decoration: none;
681 line-height: 1;
682 padding: 5px;
683 cursor: pointer;
684 z-index: 5;
685 &:hover {
686 color: #000;
687 }
688 .latepoint-icon-x:before {
689 content: "\e90a";
690 }
691 }
692 }
693 $timeslot_value_width: 50px;
694 .le-day-schedule-wrapper {
695 padding: 40px;
696 background-color: #f8f8f8;
697 .day-schedule-timeslots {
698 position: relative;
699 padding-left: $timeslot_value_width;
700 &:before {
701 content: "";
702 top: 0;
703 bottom: 0;
704 width: 1px;
705 background-color: #e1e1e1;
706 position: absolute;
707 left: $timeslot_value_width + 10px;
708 }
709 .day-schedule-timeslot-wrapper {
710 display: flex;
711 box-shadow: 0 1px 0 0 #e1e1e1;
712 &:first-child {
713 }
714 .day-schedule-timeslot {
715 flex: 0 0 $timeslot_value_width;
716 text-align: right;
717 text-transform: uppercase;
718 letter-spacing: 1px;
719 font-size: floor($font-size-base * 0.75);
720 height: $calendar-timeslot-height;
721 position: relative;
722 .day-schedule-timeslot-value {
723 position: absolute;
724 top: 0;
725 transform: translateY(-50%);
726 left: -$timeslot_value_width - 10;
727 width: $timeslot_value_width;
728 text-align: right;
729 }
730 }
731 }
732 .le-service-wrapper {
733 position: absolute;
734 left: $timeslot_value_width + 10;
735 right: 0;
736 font-size: floor($font-size-base * 0.8);
737 box-shadow:
738 inset 0 1px 0 0px #ddd,
739 0 3px 0 0 rgba(0, 0, 0, 0.03),
740 0 1px 0 0 #ddd;
741 border-right: 1px solid #ddd;
742 background-color: #fff;
743 z-index: 2;
744 cursor: pointer;
745 .le-service-inner {
746 padding: 3px;
747 padding-left: 10px;
748 flex-direction: column;
749 height: 100%;
750 box-sizing: border-box;
751 display: flex;
752 }
753 &.is-passed {
754 cursor: not-allowed;
755 .le-service-inner {
756 opacity: 0.6;
757 }
758 &:hover {
759 .is-passed-message {
760 display: block;
761 }
762 }
763 .is-passed-message {
764 display: none;
765 background-color: #000;
766 color: #fff;
767 padding: 5px 10px;
768 font-weight: $body-font-weight-bold;
769 font-size: floor($font-size-base * 0.8);
770 position: absolute;
771 top: 0;
772 left: 50%;
773 transform: translate(-50%, -110%);
774 white-space: nowrap;
775 }
776 }
777
778 &:hover {
779 border-bottom-color: #999;
780 opacity: 1;
781 z-index: 3;
782 .le-color-elem {
783 transform: translateX(-2px);
784 width: 5px;
785 }
786 .le-service-name,
787 .le-service-time-period {
788 transform: translateX(3px);
789 }
790 }
791 .le-color-elem {
792 position: absolute;
793 top: 0px;
794 bottom: -1px;
795 left: -1px;
796 width: 3px;
797 display: block;
798 transition: all 0.15s ease;
799 }
800 }
801 .le-service-name {
802 font-weight: $body-font-weight-bold;
803 font-size: floor($font-size-base);
804 line-height: 1.4;
805 overflow: hidden;
806 transition: transform 0.15s ease;
807 }
808 .le-service-time-period {
809 transition: transform 0.15s ease;
810 }
811 }
812 .day-schedule-timeslot {
813 }
814 }
815 }
816