PluginProbe ʕ •ᴥ•ʔ
Appointment Booking Plugin – LatePoint | Calendar & Scheduling for WordPress / 5.6.8
Appointment Booking Plugin – LatePoint | Calendar & Scheduling for WordPress v5.6.8
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 / shared / _step_datepicker.scss
latepoint / lib / assets / stylesheets / shared Last commit date
_animations.scss 1 year ago _auth.scss 9 months ago _booking_form_summary.scss 9 months ago _clean_layout.scss 9 months ago _step_customer.scss 9 months ago _step_datepicker.scss 9 months ago _variables.scss 1 year ago
_step_datepicker.scss
1071 lines
1 /*!
2 * Copyright (c) 2024 LatePoint LLC. All rights reserved.
3 */
4
5
6 // CALENDAR - FULL MONTH
7 .os-weekdays {
8 display: flex;
9 align-items: center;
10
11 .weekday {
12 background-color: #f5f5f5;
13 flex: 1;
14 text-transform: uppercase;
15 font-size: $body-font-size-l;
16 color: #adadae;
17 font-weight: $body-font-weight-bold;
18 letter-spacing: $letter-spacing-lg;
19 text-align: left;
20 padding: 5px 0 0 15px;
21 line-height: 1;
22 border-left: 1px solid #ddd;
23
24 &:first-child {
25 border-left-color: transparent;
26 margin-left: 15px;
27 padding-left: 0;
28 }
29 }
30 }
31
32 .os-current-month-label-w {
33 position: relative;
34 display: flex;
35 justify-content: space-between;
36 align-items: center;
37
38 .os-month-control-buttons-w {
39 display: flex;
40 gap: 15px;
41 }
42
43 .os-month-prev-btn,
44 .os-month-next-btn {
45 border: none;
46 font-size: 16px;
47 background-color: transparent !important;
48 box-shadow: none;
49 outline: none;
50 color: #111;
51 margin: 0px;
52 line-height: 1;
53 vertical-align: middle;
54 display: inline-block;
55 cursor: pointer;
56 padding: 5px;
57 position: relative;
58
59 &:focus-visible {
60 outline: 2px solid $brand-primary !important;
61 }
62
63 &.os-loading {
64 color: transparent !important;
65
66 span, i {
67 color: transparent !important;
68 }
69
70 &:after {
71 display: block;
72 content: "";
73 width: 14px;
74 height: 14px;
75 border-bottom: 2px solid $body-color;
76 border-left: 2px solid $body-color;
77 border-top: 2px solid $body-color;
78 border-right: 2px solid rgba(0, 0, 0, 0);
79 border-radius: 20px;
80 position: absolute;
81 top: 50%;
82 left: 50%;
83 transform: translate(-50%, -50%);
84 animation: os-loading 700ms infinite linear;
85 }
86 }
87
88 &:hover {
89 color: $brand-primary;
90 }
91
92 &:focus {
93 outline: none;
94 }
95
96 &.disabled {
97 color: rgba(0, 0, 0, 0.1);
98 }
99 }
100
101 .os-current-month-label {
102 text-align: center;
103 font-weight: $body-font-weight-bold;
104 font-size: $body-font-size-m;
105 margin-bottom: 10px;
106 color: $body-color;
107 display: flex;
108 align-items: baseline;
109
110 .current-year {
111 display: inline-block;
112 vertical-align: middle;
113 color: color-mix(in srgb, $body-color 40%, transparent);
114 margin-left: 5px;
115 }
116
117 .current-month {
118 display: inline-block;
119 vertical-align: middle;
120 font-size: $body-font-size-xxl;
121 }
122 }
123 }
124
125
126 .os-monthly-calendar-days-w {
127 display: none;
128
129 &.active {
130 display: block;
131 }
132
133 &.hide-if-single-slot {
134 .os-day {
135 &:hover {
136 .os-day-box {
137 .os-day-number {
138 }
139 }
140 }
141
142 &.os-not-available {
143 .os-day-number {
144 }
145
146 .os-day-status {
147 //display: none;
148 }
149 }
150
151 &.os-one-slot-only {
152 .os-day-number {
153 }
154
155 .os-day-status {
156 display: none;
157 }
158 }
159
160 &.selected {
161
162 &:after {
163 $size: 14px;
164 @include latepointfont("\e903");
165 background-color: $brand-primary;
166 box-shadow: 0px 0px 0px 2px #fff;
167 border-radius: 50%;
168 width: 14px;
169 line-height: 14px;
170 height: 14px;
171 bottom: 50%;
172 left: 50%;
173 font-size: 10px;
174 text-align: center;
175 position: absolute;
176 color: #fff;
177 transform: translate(11px, -10px);
178 }
179 }
180 }
181 }
182 }
183
184 .step-datepicker-w {
185 position: relative;
186 }
187
188 .step-datepicker-w, .reschedule-calendar-datepicker {
189 .dp-capacity {
190 @include slot-tooltip-info();
191 }
192
193 .time-selector-w:not(.style-timeline) {
194 .dp-timepicker-trigger:not(.selected):hover {
195 .dp-capacity {
196 display: block;
197 }
198 }
199 }
200 }
201
202 .os-monthly-calendar-days {
203 display: grid;
204 grid-template-columns: 1fr 1fr 1fr 1fr 1fr 1fr 1fr;
205
206 .os-day {
207 text-align: left;
208 font-size: $body-font-size-l;
209 font-weight: $body-font-weight-bold;
210 cursor: pointer;
211 position: relative;
212
213 &:nth-child(7n+1) {
214 border-left-color: transparent;
215 }
216
217 &:focus {
218 outline: none;
219 }
220
221 &:focus-visible {
222 outline: 2px solid $brand-primary;
223 }
224
225 &.week-day-6,
226 &.week-day-7 {
227 }
228
229 &.os-day-next-month,
230 &.os-day-prev-month {
231 color: #B7BCCB;
232 background-color: #fff;
233 }
234
235 &.os-day-current {
236 .os-day-box {
237 //background-color: $calendar-day-box-bg;
238 // border: 1px solid #ececf1;
239 }
240
241 &.os-not-available {
242 cursor: not-allowed;
243
244 .os-day-box {
245 background-color: transparent;
246
247 .os-day-status {
248 background-color: #f7f7f7;
249 }
250
251 .os-day-number {
252 color: #adadae;
253 }
254 }
255
256 &.selected {
257 .os-day-box {
258 background-color: #ec7376;
259
260 .os-day-status {
261 }
262
263 .os-day-number {
264 color: #fff;
265 }
266 }
267 }
268 }
269 }
270
271 &.os-day-passed {
272 .os-day-box {
273 background-color: transparent;
274
275 .os-day-number {
276 color: #bdc5da;
277 }
278 }
279 }
280
281 &.os-not-in-allowed-period {
282 .os-day-box {
283 .os-day-number {
284 }
285 }
286 }
287
288 &.os-today.os-month-current {
289 .os-day-box {
290 .os-day-number {
291 background-color: #fff0c7;
292 }
293 }
294 }
295
296
297 &.os-one-slot-only {
298 .os-day-status {
299 }
300 }
301
302 .os-available-slots-tooltip {
303 @include slot-tooltip-info();
304 }
305
306
307 .os-day-box {
308 position: relative;
309 }
310
311 .os-day-number {
312 color: $headings-color;
313 transition: all 0.1s ease;
314 }
315
316 .os-day-status {
317 transition: all 0.1s ease;
318 }
319
320
321
322 &:hover {
323 .os-day-box {
324 .os-day-number {
325 transform: scale(1.2);
326 transform-origin: bottom left;
327 white-space: nowrap;
328 }
329
330 &:hover {
331 .os-available-slots-tooltip {
332 display: block;
333 }
334 }
335 }
336
337 .os-day-status {
338 height: 10px;
339 }
340 }
341
342 }
343 }
344
345 .os-day-status {
346 margin: 0px;
347 height: 4px;
348 position: absolute;
349 border-radius: 0px;
350 overflow: hidden;
351 bottom: 3px;
352 left: 8px;
353 right: 8px;
354 background-color: $calendar-timeline-off-bg;
355
356 .day-available {
357 background-color: $timeblock-available-bg;
358 top: 0px;
359 bottom: 0px;
360 position: absolute;
361 z-index: 1;
362 min-width: 3px;
363 border-radius: $border-radius;
364 }
365 }
366
367 .calendar-style-classic {
368 .os-monthly-calendar-days .os-day .os-available-slots-tooltip {
369 left: 50%;
370 transform: translate3d(-50%, -50%, 0);
371 animation: 0.1s ease latepointAvailabilityPopupCenter;
372 animation-fill-mode: both;
373 }
374 .os-current-month-label-w {
375 border-bottom: 1px solid rgba(0,0,0,0.05);
376 padding-bottom: 5px;
377 margin-bottom: 15px;
378 }
379
380 .os-weekdays {
381 gap: 12px;
382 .weekday {
383 background-color: transparent;
384 font-size: $body-font-size-xs;
385 color: $body-color;
386 &.weekday-6,
387 &.weekday-7 {
388 color: #ccb63b;
389 background-color: #fffef2;
390 }
391 }
392 }
393 .os-weekdays .weekday {
394 border-left: none;
395 text-align: center;
396 margin-left: 0;
397 padding: 5px;
398 margin-bottom: 12px;
399 }
400 .os-monthly-calendar-days {
401 gap: 10px;
402 display: grid;
403 grid-template-columns: 1fr 1fr 1fr 1fr 1fr 1fr 1fr;
404
405 .os-day {
406 text-align: center;
407 font-size: $body-font-size-m;
408
409 &:hover {
410 .os-day-status {
411 height: 7px;
412 left: 4px;
413 right: 4px;
414 }
415 .os-day-box .os-day-number {
416 transform-origin: bottom;
417 }
418 }
419
420 // MONTH SETTINGS
421 &.os-month-next,
422 &.os-month-prev {
423 .os-day-number, .os-day-status {
424 opacity: 0.6;
425 }
426 }
427 &.os-day-current {
428 .os-day-box {
429 background-color: $calendar-day-box-bg;
430 }
431 &.os-not-available {
432 .os-day-box {
433 background-color: transparent;
434 }
435 }
436 }
437 .os-day-box {
438 padding: 12px 5px;
439 }
440
441 &:nth-child(7n+1) {
442 border-left-color: transparent;
443 }
444 &.selected {
445 &.os-not-available {
446 .os-day-box {
447 background-color: #ec7376;;
448 }
449 }
450 .os-day-box {
451 background-color: $brand-primary;
452 border-color: transparent;
453 color: #fff;
454 opacity: 1;
455
456 .os-day-number {
457 background-color: transparent;
458 color: #fff;
459 transform: scale(1.2);
460 transform-origin: center center;
461 text-align: center;
462 }
463
464 .os-day-status {
465 display: none;
466 }
467
468 &:hover {
469 .os-available-slots-tooltip {
470 display: none;
471 }
472 }
473 }
474
475 &.os-today {
476 .os-day-box {
477 .os-day-number {
478 background-color: transparent;
479 }
480 }
481 }
482 }
483 }
484 }
485 }
486
487 .calendar-style-modern {
488 margin: 0 0 0 -15px;
489 .os-current-month-label-w {
490 padding-left: 14px;
491 }
492 .os-weekdays .weekday:first-child {
493 margin-left: 15px;
494 padding-left: 0;
495 }
496 &.os-month-prev, &.os-month-next {
497 cursor: default;
498 }
499 .os-monthly-calendar-days {
500 .os-day {
501 text-align: left;
502 border-left: 1px solid rgba(0, 0, 0, 0.08);
503
504 &.selected:not(.os-month-prev):not(.os-month-next) {
505 .os-day-box {
506 background-color: $brand-primary;
507 border-color: transparent;
508 color: #fff;
509 opacity: 1;
510 padding-left: 0;
511
512 .os-day-number {
513 background-color: transparent;
514 color: #fff;
515 transform: scale(1.2);
516 transform-origin: center center;
517 text-align: center;
518 }
519
520 .os-day-status {
521 display: none;
522 }
523
524 &:hover {
525 .os-available-slots-tooltip {
526 display: none;
527 }
528 }
529 }
530
531 &.os-today {
532 .os-day-box {
533 .os-day-number {
534 background-color: transparent;
535 }
536 }
537 }
538 &.os-not-available {
539 .os-day-box {
540 background-color: #ec7376;;
541 }
542 }
543 }
544
545 // MONTH SETTINGS
546 &.os-month-next,
547 &.os-month-prev {
548 border-left-color: transparent;
549 cursor: default;
550
551 .os-day-box {
552 pointer-events: none;
553 background-color: transparent;
554
555 .os-day-status {
556 display: none;
557 }
558
559 &:hover {
560 opacity: 1;
561 }
562
563 .os-day-number {
564 color: transparent !important;
565 }
566 }
567 }
568
569 &.os-month-next {
570 display: none;
571 }
572
573 &:nth-child(7n),
574 &:nth-child(7n+6) {
575 .os-available-slots-tooltip {
576 left: auto;
577 right: 0;
578 }
579 }
580 .os-day-box {
581 padding: 15px 0px 15px 15px;
582
583 }
584
585 &:nth-child(7n+1) {
586 border-left-color: transparent;
587 }
588 }
589 }
590
591 .os-day-status {
592 border-radius: 0px;
593 bottom: 6px;
594 left: 15px;
595 right: 0px;
596 height: 5px;
597 }
598
599 }
600
601
602 // TIME SLOTS
603
604
605 .times-header {
606 color: #16171d;
607 font-size: $body-font-size-m;
608 font-weight: $body-font-weight-normal;
609 text-align: center;
610 padding-bottom: 10px;
611
612 span {
613 color: $brand-primary;
614 border-bottom: 1px dotted $brand-primary;
615 }
616 }
617
618 .os-calendar-searching-info {
619 padding-left: 35px;
620 font-size: $body-font-size-s;
621 position: relative;
622 font-weight: $body-font-weight-bold;
623 display: none;
624
625 &:before {
626 @include loading-circle($brand-primary, 20px);
627 left: 10px;
628 }
629 }
630
631 .os-dates-and-times-w {
632 &.is-searching {
633 .os-calendar-searching-info {
634 display: block;
635 }
636
637 .os-calendar-while-searching-wrapper {
638 display: none;
639 }
640
641 .os-timezone-info-wrapper {
642 display: none;
643 }
644 }
645 }
646
647
648 .os-times-w {
649 position: relative;
650 }
651
652 .timeslots {
653 display: flex;
654 justify-content: space-between;
655
656 .not-working-message {
657 flex: 1;
658 padding: 3px 5px;
659 text-align: center;
660 background-color: #f7e8e8;
661 color: #752f2f;
662 font-weight: $body-font-weight-bold;
663 }
664 }
665
666 // styled as a set of boxes with time labels
667 .dp-timebox {
668 white-space: nowrap;
669 text-align: center;
670 padding: 6px 3px;
671 line-height: 1.2;
672 background-color: #d6ffd1;
673 font-size: floor($font-size-base * 1);
674 color: $headings-color;
675 cursor: pointer;
676 font-weight: $body-font-weight-bold;
677 position: relative;
678 width: auto !important;
679 max-width: none !important;
680
681 &:focus {
682 outline: none;
683 box-shadow: none;
684 }
685
686 &:focus-visible {
687 outline: 2px solid $brand-primary;
688 }
689
690 .dp-tick,
691 .dp-success-label {
692 display: none !important;
693 }
694
695 &:hover {
696 background-color: #c0fbb8;
697 }
698
699 &.is-off,
700 &.is-booked {
701 color: #b3b3b3;
702 background-color: #f7f7f7;
703 box-shadow: none;
704 cursor: not-allowed;
705 }
706
707 &.selected {
708 background-color: $brand-primary;
709 color: #fff;
710 box-shadow: none;
711
712 &:after {
713 $size: 14px;
714 @include latepointfont("\e903");
715 background-color: $brand-primary;
716 box-shadow: 0px 0px 0px 2px #fff;
717 border-radius: 50%;
718 width: 14px;
719 line-height: 14px;
720 height: 14px;
721 top: -5px;
722 right: -5px;
723 font-size: 10px;
724 text-align: center;
725 position: absolute;
726 color: #fff;
727 animation: 0.2s ease 0s selectedSlotCheckmark;
728 animation-fill-mode: both;
729 }
730 }
731 }
732
733 .time-selector-w {
734 display: none;
735 margin-top: 20px;
736 margin-left: -2px;
737 margin-right: -2px;
738
739 &.hide-not-available-slots {
740 .dp-timebox {
741 &.is-off, &.is-booked {
742 display: none;
743 }
744 }
745 }
746
747 .th-timezone {
748 text-transform: uppercase;
749 font-size: floor($font-size-base * 0.7);
750 letter-spacing: 0.5px;
751 margin-top: 4px;
752
753 strong {
754 color: $color-faded;
755 }
756 }
757
758 &.style-timebox {
759 margin-top: 20px;
760
761 .timeslots {
762 display: grid;
763 grid-template-columns: repeat(2, 1fr);
764 grid-gap: 10px;
765
766 &.slots-not-available {
767 grid-template-columns: repeat(1, 1fr) !important;
768 }
769
770 .not-working-message {
771 border-radius: 4px;
772 padding: 6px;
773 }
774
775 .dp-timebox {
776 .dp-label-capacity {
777 display: none;
778 }
779
780 &.is-off {
781 display: none;
782 }
783 }
784 }
785
786 .times-header {
787 display: flex;
788 align-items: center;
789 margin-bottom: 10px;
790 padding-top: 10px;
791
792 .times-header-label {
793 flex: 1;
794 margin: 0px 15px;
795 white-space: nowrap;
796 font-weight: $body-font-weight-black;
797 }
798
799 .th-line {
800 height: 1px;
801 flex: 1;
802 background-color: rgba(0, 0, 0, 0.1);
803 content: "";
804 }
805 }
806 }
807
808 &.style-timeline {
809 padding-bottom: 30px;
810 flex-wrap: nowrap;
811 }
812
813 &.with-end-time {
814 &.time-system-12 {
815 .timeslots {
816 grid-template-columns: repeat(2, 1fr);
817 }
818
819 .dp-timebox {
820 span.dp-label-end-time {
821 opacity: 0.7;
822 }
823 }
824 }
825
826 &.time-system-24 {
827 .timeslots {
828 grid-template-columns: repeat(3, 1fr);
829 }
830
831 .dp-timebox {
832 span.dp-label-end-time {
833 opacity: 0.7;
834 }
835 }
836 }
837 }
838
839 &.without-end-time {
840 &.time-system-12 {
841 .timeslots {
842 grid-template-columns: repeat(4, 1fr);
843 }
844
845 .dp-timebox {
846 }
847 }
848
849 &.time-system-24 {
850 .timeslots {
851 grid-template-columns: repeat(5, 1fr);
852 }
853
854 .dp-timebox {
855 }
856 }
857 }
858 }
859
860
861 // styled as a band with timeslots
862 .dp-timeslot {
863 height: $timeblock-tick-height;
864 flex-grow: 1;
865 margin: 0px;
866 box-shadow: inset 1px 0px 0px 0px #fff, inset -1px 0px 0px 0px #fff;
867 border-radius: 0px;
868 position: relative;
869 cursor: pointer;
870 background-color: $timeblock-available-bg;
871
872 &:focus-visible {
873 outline: 2px solid $brand-primary;
874 }
875
876 &:first-child {
877 }
878
879 &:last-child {
880 }
881
882 &:first-child {
883 &:last-child {
884 }
885 }
886
887 .dp-tick {
888 position: absolute;
889 display: block;
890 top: $timeblock-tick-height + 10px;
891 left: 50%;
892 transform: translateX(-50%);
893 font-size: floor($font-size-base * 0.55);
894 text-align: center;
895 color: rgba(0, 0, 0, 0.4);
896 text-transform: uppercase;
897 line-height: 1.4;
898 font-weight: $body-font-weight-bold;
899 letter-spacing: 1px;
900
901 strong {
902 display: block;
903 color: rgba(0, 0, 0, 1);
904 font-size: floor($font-size-base * 0.75);
905 line-height: 1;
906 letter-spacing: 0px;
907 white-space: nowrap;
908 }
909 }
910
911 .dp-success-label {
912 color: rgba(255, 255, 255, 0.8);
913 display: block;
914 text-align: center;
915 margin-bottom: 4px;
916 text-transform: uppercase;
917 letter-spacing: 1px;
918 font-size: floor($font-size-base * 0.7);
919 }
920
921 .dp-label {
922 display: none;
923 text-align: center;
924 padding: 7px 8px 7px 8px;
925 line-height: 1;
926 background-color: #04bb03;
927 color: #fff;
928 font-size: floor($font-size-base * 0.85);
929 font-weight: $body-font-weight-bold;
930 position: absolute;
931 left: 50%;
932 top: -8px;
933 transform: translate(-50%, -100%);
934 white-space: nowrap;
935 transition: all 0.2s ease;
936 z-index: 10;
937 }
938
939 .dp-label-capacity {
940 display: block;
941 color: rgba(255, 255, 255, 0.8);
942 text-align: center;
943 margin-bottom: 4px;
944 text-transform: uppercase;
945 letter-spacing: 1px;
946 font-size: floor($font-size-base * 0.7);
947 }
948
949 &.selected:not(.is-booked),
950 &.selected:not(.is-off) {
951 background-color: $brand-primary;
952 z-index: 4;
953
954 .dp-label-capacity {
955 display: none;
956 }
957
958 &:hover {
959 background-color: $brand-primary;
960 }
961
962 &:after {
963 content: "";
964 position: absolute;
965 width: 1px;
966 left: 50%;
967 transform: translateX(-50%);
968 top: 0px;
969 bottom: 0px;
970 background-color: $brand-primary;
971 display: none;
972 }
973
974 .dp-label {
975 top: -3px;
976 background-color: $brand-primary;
977 color: #fff;
978 display: block;
979
980 }
981
982 &:before {
983 background-color: $brand-primary;
984 display: block;
985 width: 10px;
986 height: 10px;
987 transform: translateX(-50%) rotate(45deg);
988 top: -12px;
989 left: 50%;
990 }
991 }
992
993 &:not(.is-off),
994 &:not(.is-booked) {
995 &:hover {
996 }
997 }
998
999 &.is-booked {
1000 background-color: $calendar-timeline-off-bg;
1001 margin: 0px;
1002 cursor: not-allowed;
1003
1004 + .dp-timeslot:not(.is-booked) {
1005 }
1006
1007 &:before {
1008 background-color: #E42806;
1009 }
1010
1011 .dp-label {
1012 background-color: #E42806;
1013 }
1014
1015 &:hover {
1016 background-color: #E42806;
1017 }
1018 }
1019
1020 &.is-off {
1021 background-color: $calendar-timeline-off-bg;
1022 margin: 0px;
1023 border-color: #fff;
1024 max-width: 25%;
1025 cursor: not-allowed;
1026
1027 + .dp-timeslot:not(.is-booked) {
1028 }
1029
1030 &:before {
1031 background-color: #E42806;
1032 }
1033
1034 .dp-label {
1035 background-color: #E42806;
1036 }
1037
1038 &:hover {
1039 background-color: $calendar-timeline-off-bg;
1040
1041 .dp-label {
1042 display: none;
1043 }
1044 }
1045 }
1046
1047 &.with-tick {
1048 &:after {
1049 content: "";
1050 position: absolute;
1051 width: 1px;
1052 left: 50%;
1053 height: 3px;
1054 bottom: -7px;
1055 background-color: rgba(0, 0, 0, 0.4);
1056 }
1057 }
1058
1059 &:hover {
1060 background-color: #04bb03;
1061
1062 &:before {
1063 top: 0px;
1064 }
1065
1066 .dp-label {
1067 display: block;
1068 }
1069 }
1070 }
1071