PluginProbe ʕ •ᴥ•ʔ
Appointment Booking Plugin – LatePoint | Calendar & Scheduling for WordPress / 5.1.91
Appointment Booking Plugin – LatePoint | Calendar & Scheduling for WordPress v5.1.91
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 _booking_form_summary.scss 1 year ago _clean_layout.scss 1 year ago _step_customer.scss 1 year ago _step_datepicker.scss 1 year ago _variables.scss 1 year ago
_step_datepicker.scss
786 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 .weekday {
11 background-color: #f5f5f5;
12 flex: 1;
13 text-transform: uppercase;
14 font-size: $body-font-size-l;
15 color: #adadae;
16 font-weight: $body-font-weight-bold;
17 letter-spacing: $letter-spacing-lg;
18 text-align: left;
19 padding: 5px 0 0 15px;
20 line-height: 1;
21 border-left: 1px solid #ddd;
22 &:first-child {
23 border-left-color: transparent;
24 margin-left: 15px;
25 padding-left: 0;
26 }
27 }
28 }
29
30 .os-current-month-label-w {
31 position: relative;
32 display: flex;
33 justify-content: space-between;
34 align-items: center;
35 padding: 0 0 0 14px;
36 .os-month-control-buttons-w {
37 display: flex;
38 gap: 15px;
39 }
40 .os-month-prev-btn,
41 .os-month-next-btn {
42 border: none;
43 font-size: 16px;
44 background-color: transparent!important;
45 box-shadow: none;
46 outline: none;
47 color: #111;
48 margin: 0px;
49 line-height: 1;
50 vertical-align: middle;
51 display: inline-block;
52 cursor: pointer;
53 padding: 5px;
54 position: relative;
55 &:focus-visible {
56 outline: 2px solid $brand-primary!important;
57 }
58 &.os-loading {
59 color: transparent!important;
60 span, i {
61 color: transparent!important;
62 }
63 &:after {
64 display: block;
65 content: "";
66 width: 14px;
67 height: 14px;
68 border-bottom: 2px solid $body-color;
69 border-left: 2px solid $body-color;
70 border-top: 2px solid $body-color;
71 border-right: 2px solid rgba(0,0,0,0);
72 border-radius: 20px;
73 position: absolute;
74 top: 50%;
75 left: 50%;
76 transform: translate(-50%, -50%);
77 animation: os-loading 700ms infinite linear;
78 }
79 }
80 &:hover {
81 color: $brand-primary;
82 }
83 &:focus {
84 outline: none;
85 }
86 &.disabled {
87 color: rgba(0,0,0,0.1);
88 }
89 }
90 .os-current-month-label {
91 text-align: center;
92 font-weight: $body-font-weight-bold;
93 font-size: $body-font-size-m;
94 margin-bottom: 10px;
95 color: $body-color;
96 display: flex;
97 align-items: baseline;
98 .current-year {
99 display: inline-block;
100 vertical-align: middle;
101 color: color-mix(in srgb, $body-color 40%, transparent);
102 margin-left: 5px;
103 }
104 .current-month {
105 display: inline-block;
106 vertical-align: middle;
107 font-size: $body-font-size-xxl;
108 }
109 }
110 }
111
112
113 .os-monthly-calendar-days-w {
114 display: none;
115 &.active {
116 display: block;
117 }
118 &.hide-if-single-slot {
119 .os-day {
120 &:hover {
121 .os-day-box {
122 .os-day-number {
123 }
124 }
125 }
126 &.os-not-available {
127 .os-day-number {
128 }
129 .os-day-status {
130 //display: none;
131 }
132 }
133 &.os-one-slot-only {
134 .os-day-number {
135 }
136 .os-day-status {
137 display: none;
138 }
139 }
140 &.selected {
141
142 &:after {
143 $size: 14px;
144 @include latepointfont("\e903");
145 background-color: $brand-primary;
146 box-shadow: 0px 0px 0px 2px #fff;
147 border-radius: 50%;
148 width: 14px;
149 line-height: 14px;
150 height: 14px;
151 bottom: 50%;
152 left: 50%;
153 font-size: 10px;
154 text-align: center;
155 position: absolute;
156 color: #fff;
157 transform: translate(11px, -10px);
158 }
159 }
160 }
161 }
162 }
163
164 .step-datepicker-w {
165 position: relative;
166 }
167 .step-datepicker-w, .reschedule-calendar-datepicker {
168 .dp-capacity {
169 @include slot-tooltip-info();
170 }
171 .time-selector-w:not(.style-timeline) {
172 .dp-timepicker-trigger:not(.selected):hover {
173 .dp-capacity {
174 display: block;
175 }
176 }
177 }
178 }
179 .os-monthly-calendar-days {
180 display: grid;
181 grid-template-columns: 1fr 1fr 1fr 1fr 1fr 1fr 1fr;
182 .os-day {
183 text-align: left;
184 font-size: $body-font-size-l;
185 font-weight: $body-font-weight-bold;
186 cursor: pointer;
187 position: relative;
188 border-left: 1px solid rgba(0,0,0,0.08);
189
190 &:nth-child(7n+1){
191 border-left-color: transparent;
192 }
193 &:focus {
194 outline: none;
195 }
196 &:focus-visible {
197 outline: 2px solid $brand-primary;
198 }
199 &.week-day-6,
200 &.week-day-7 {
201 }
202 &.os-day-next-month,
203 &.os-day-prev-month {
204 color: #B7BCCB;
205 background-color: #fff;
206 }
207 &.os-day-current {
208 .os-day-box {
209 //background-color: $calendar-day-box-bg;
210 // border: 1px solid #ececf1;
211 }
212 &.os-not-available {
213 cursor: not-allowed;
214 .os-day-box {
215 background-color: transparent;
216 .os-day-status {
217 background-color: #f7f7f7;
218 }
219 .os-day-number {
220 color: #adadae;
221 }
222 }
223 &.selected {
224 .os-day-box {
225 background-color: #ec7376;
226 .os-day-status {
227 }
228 .os-day-number {
229 color: #fff;
230 }
231 }
232 }
233 }
234 }
235 &.os-day-passed {
236 .os-day-box {
237 background-color: transparent;
238 .os-day-number {
239 color: #bdc5da;
240 }
241 }
242 }
243 &.os-not-in-allowed-period {
244 .os-day-box {
245 .os-day-number {
246 }
247 }
248 }
249 &.os-today.os-month-current {
250 .os-day-box {
251 .os-day-number {
252 background-color: #fff0c7;
253 }
254 }
255 }
256
257 // MONTH SETTINGS
258 &.os-month-next,
259 &.os-month-prev {
260 border-left-color: transparent;
261 .os-day-box {
262 pointer-events: none;
263 background-color: transparent;
264 .os-day-status {
265 display: none;
266 }
267 &:hover {
268 opacity: 1;
269 }
270 .os-day-number {
271 color: transparent!important;
272 }
273 }
274 }
275
276 &.os-one-slot-only {
277 .os-day-status {
278 }
279 }
280
281 .os-day-box {
282 padding: 15px 0px 15px 15px;
283 // border: 1px solid #ececf1;
284 position: relative;
285
286 }
287 .os-available-slots-tooltip {
288 @include slot-tooltip-info();
289 }
290
291 &:nth-child(7n),
292 &:nth-child(7n+6){
293 .os-available-slots-tooltip {
294 left: auto;
295 right: 0;
296 }
297 }
298 .os-day-number {
299 color: $headings-color;
300 transition: all 0.1s ease;
301 }
302 .os-day-status {
303 transition: all 0.1s ease;
304 }
305
306 &.os-month-prev, &.os-month-next {
307 cursor: default;
308 }
309 &.os-month-next {
310 display: none;
311 }
312 &:hover {
313 .os-day-box {
314 .os-day-number {
315 transform: scale(1.2);
316 transform-origin: bottom left;
317 white-space: nowrap;
318 }
319 &:hover {
320 .os-available-slots-tooltip {
321 display: block;
322 }
323 }
324 }
325 .os-day-status {
326 height: 10px;
327 }
328 }
329 &.selected:not(.os-month-prev):not(.os-month-next) {
330 .os-day-box {
331 background-color: $brand-primary;
332 border-color: transparent;
333 color: #fff;
334 opacity: 1;
335 padding-left: 0;
336 .os-day-number {
337 background-color: transparent;
338 color: #fff;
339 transform: scale(1.2);
340 transform-origin: center center;
341 text-align: center;
342 }
343 .os-day-status {
344 display: none;
345 }
346 &:hover {
347 .os-available-slots-tooltip {
348 display: none;
349 }
350 }
351 }
352 &.os-today {
353 .os-day-box {
354 .os-day-number {
355 background-color: transparent;
356 }
357 }
358 }
359 }
360 }
361 }
362
363
364 .os-day-status {
365 margin: 0px;
366 height: 6px;
367 position: absolute;
368 border-radius: 0px;
369 overflow: hidden;
370 bottom: 6px;
371 left: 15px;
372 right: 0px;
373 background-color: $calendar-timeline-off-bg;
374 .day-available {
375 background-color: $timeblock-available-bg;
376 top: 0px;
377 bottom: 0px;
378 position: absolute;
379 z-index: 1;
380 min-width: 3px;
381 }
382 }
383
384 // TIME SLOTS
385
386
387 .times-header {
388 color: #16171d;
389 font-size: $body-font-size-m;
390 font-weight: $body-font-weight-normal;
391 text-align: center;
392 padding-bottom: 10px;
393 span {
394 color: $brand-primary;
395 border-bottom: 1px dotted $brand-primary;
396 }
397 }
398
399 .os-calendar-searching-info {
400 padding-left: 35px;
401 font-size: $body-font-size-s;
402 position: relative;
403 font-weight: $body-font-weight-bold;
404 display: none;
405 &:before {
406 @include loading-circle($brand-primary, 20px);
407 left: 10px;
408 }
409 }
410
411 .os-dates-w {
412 margin: 0 0 0 -15px;
413 &.is-searching {
414 .os-calendar-searching-info {
415 display: block;
416 }
417 .os-calendar-while-searching-wrapper {
418 display: none;
419 }
420 }
421 }
422 .os-times-w {
423 position: relative;
424 }
425 .timeslots {
426 display: flex;
427 justify-content: space-between;
428
429 .not-working-message {
430 flex: 1;
431 padding: 3px 5px;
432 text-align: center;
433 background-color: #f7e8e8;
434 color: #752f2f;
435 font-weight: $body-font-weight-bold;
436 }
437 }
438
439 // styled as a set of boxes with time labels
440 .dp-timebox {
441 white-space: nowrap;
442 text-align: center;
443 padding: 6px 3px;
444 line-height: 1.2;
445 background-color: #d6ffd1;
446 font-size: floor($font-size-base * 1);
447 color: $headings-color;
448 cursor: pointer;
449 font-weight: $body-font-weight-bold;
450 position: relative;
451 width: auto!important;
452 max-width: none!important;
453 &:focus {
454 outline: none;
455 box-shadow: none;
456 }
457 &:focus-visible {
458 outline: 2px solid $brand-primary;
459 }
460 .dp-tick,
461 .dp-success-label {
462 display: none!important;
463 }
464 &:hover {
465 background-color: #c0fbb8;
466 }
467 &.is-off,
468 &.is-booked {
469 color: #b3b3b3;
470 background-color: #f7f7f7;
471 box-shadow: none;
472 cursor: not-allowed;
473 }
474 &.selected {
475 background-color: $brand-primary;
476 color: #fff;
477 box-shadow: none;
478 &:after {
479 $size: 14px;
480 @include latepointfont("\e903");
481 background-color: $brand-primary;
482 box-shadow: 0px 0px 0px 2px #fff;
483 border-radius: 50%;
484 width: 14px;
485 line-height: 14px;
486 height: 14px;
487 top: -5px;
488 right: -5px;
489 font-size: 10px;
490 text-align: center;
491 position: absolute;
492 color: #fff;
493 animation: 0.2s ease 0s selectedSlotCheckmark;
494 animation-fill-mode: both;
495 }
496 }
497 }
498
499 .time-selector-w {
500 display: none;
501 margin-top: 20px;
502 margin-left: -2px;
503 margin-right: -2px;
504 &.hide-not-available-slots {
505 .dp-timebox {
506 &.is-off, &.is-booked {
507 display: none;
508 }
509 }
510 }
511 .th-timezone {
512 text-transform: uppercase;
513 font-size: floor($font-size-base * 0.7);
514 letter-spacing: 0.5px;
515 margin-top: 4px;
516 strong {
517 color: $color-faded;
518 }
519 }
520 &.style-timebox{
521 margin-top: 20px;
522 .timeslots {
523 display: grid;
524 grid-template-columns: repeat(2, 1fr);
525 grid-gap: 10px;
526 &.slots-not-available {
527 grid-template-columns: repeat(1, 1fr)!important;
528 }
529 .not-working-message {
530 border-radius: 4px;
531 padding: 6px;
532 }
533 .dp-timebox {
534 .dp-label-capacity {
535 display: none;
536 }
537 &.is-off {
538 display: none;
539 }
540 }
541 }
542 .times-header {
543 display: flex;
544 align-items: center;
545 margin-bottom: 10px;
546 padding-top: 10px;
547 .times-header-label {
548 flex: 1;
549 margin: 0px 15px;
550 white-space: nowrap;
551 font-weight: $body-font-weight-black;
552 }
553 .th-line {
554 height: 1px;
555 flex: 1;
556 background-color: rgba(0,0,0,0.1);
557 content: "";
558 }
559 }
560 }
561 &.style-timeline{
562 padding-bottom: 30px;
563 flex-wrap: nowrap;
564 }
565 &.with-end-time {
566 &.time-system-12 {
567 .timeslots {
568 grid-template-columns: repeat(2, 1fr);
569 }
570 .dp-timebox {
571 span.dp-label-end-time {
572 opacity: 0.7;
573 }
574 }
575 }
576 &.time-system-24 {
577 .timeslots {
578 grid-template-columns: repeat(3, 1fr);
579 }
580 .dp-timebox {
581 span.dp-label-end-time {
582 opacity: 0.7;
583 }
584 }
585 }
586 }
587 &.without-end-time {
588 &.time-system-12 {
589 .timeslots {
590 grid-template-columns: repeat(4, 1fr);
591 }
592 .dp-timebox {
593 }
594 }
595 &.time-system-24 {
596 .timeslots {
597 grid-template-columns: repeat(5, 1fr);
598 }
599 .dp-timebox {
600 }
601 }
602 }
603 }
604
605
606 // styled as a band with timeslots
607 .dp-timeslot {
608 height: $timeblock-tick-height;
609 flex-grow: 1;
610 margin: 0px;
611 box-shadow: inset 1px 0px 0px 0px #fff, inset -1px 0px 0px 0px #fff;
612 border-radius: 0px;
613 position: relative;
614 cursor: pointer;
615 background-color: $timeblock-available-bg;
616
617 &:focus-visible {
618 outline: 2px solid $brand-primary;
619 }
620 &:first-child {
621 }
622 &:last-child {
623 }
624 &:first-child {
625 &:last-child {
626 }
627 }
628 .dp-tick {
629 position: absolute;
630 display: block;
631 top: $timeblock-tick-height + 10px;
632 left: 50%;
633 transform: translateX(-50%);
634 font-size: floor($font-size-base * 0.55);
635 text-align: center;
636 color: rgba(0,0,0,0.4);
637 text-transform: uppercase;
638 line-height: 1.4;
639 font-weight: $body-font-weight-bold;
640 letter-spacing: 1px;
641 strong {
642 display: block;
643 color: rgba(0,0,0,1);
644 font-size: floor($font-size-base * 0.75);
645 line-height: 1;
646 letter-spacing: 0px;
647 white-space: nowrap;
648 }
649 }
650 .dp-success-label {
651 color: rgba(255,255,255,0.8);
652 display: block;
653 text-align: center;
654 margin-bottom: 4px;
655 text-transform: uppercase;
656 letter-spacing: 1px;
657 font-size: floor($font-size-base * 0.7);
658 }
659 .dp-label {
660 display: none;
661 text-align: center;
662 padding: 7px 8px 7px 8px;
663 line-height: 1;
664 background-color: #04bb03;
665 color: #fff;
666 font-size: floor($font-size-base * 0.85);
667 font-weight: $body-font-weight-bold;
668 position: absolute;
669 left: 50%;
670 top: -8px;
671 transform: translate(-50%, -100%);
672 white-space: nowrap;
673 transition: all 0.2s ease;
674 z-index: 10;
675 }
676 .dp-label-capacity {
677 display: block;
678 color: rgba(255,255,255,0.8);
679 text-align: center;
680 margin-bottom: 4px;
681 text-transform: uppercase;
682 letter-spacing: 1px;
683 font-size: floor($font-size-base * 0.7);
684 }
685 &.selected:not(.is-booked),
686 &.selected:not(.is-off) {
687 background-color: $brand-primary;
688 z-index: 4;
689 .dp-label-capacity {
690 display: none;
691 }
692 &:hover {
693 background-color: $brand-primary;
694 }
695 &:after {
696 content: "";
697 position: absolute;
698 width: 1px;
699 left: 50%;
700 transform: translateX(-50%);
701 top: 0px;
702 bottom: 0px;
703 background-color: $brand-primary;
704 display: none;
705 }
706 .dp-label {
707 top: -3px;
708 background-color: $brand-primary;
709 color: #fff;
710 display: block;
711
712 }
713 &:before {
714 background-color: $brand-primary;
715 display: block;
716 width: 10px;
717 height: 10px;
718 transform: translateX(-50%) rotate(45deg);
719 top: -12px;
720 left: 50%;
721 }
722 }
723 &:not(.is-off),
724 &:not(.is-booked) {
725 &:hover {
726 }
727 }
728 &.is-booked {
729 background-color: $calendar-timeline-off-bg;
730 margin: 0px;
731 cursor: not-allowed;
732 + .dp-timeslot:not(.is-booked) {
733 }
734 &:before {
735 background-color: #E42806;
736 }
737 .dp-label {
738 background-color: #E42806;
739 }
740 &:hover {
741 background-color: #E42806;
742 }
743 }
744 &.is-off {
745 background-color: $calendar-timeline-off-bg;
746 margin: 0px;
747 border-color: #fff;
748 max-width: 25%;
749 cursor: not-allowed;
750 + .dp-timeslot:not(.is-booked) {
751 }
752 &:before {
753 background-color: #E42806;
754 }
755 .dp-label {
756 background-color: #E42806;
757 }
758 &:hover {
759 background-color: $calendar-timeline-off-bg;
760 .dp-label {
761 display: none;
762 }
763 }
764 }
765 &.with-tick {
766 &:after {
767 content: "";
768 position: absolute;
769 width: 1px;
770 left: 50%;
771 height: 3px;
772 bottom: -7px;
773 background-color: rgba(0,0,0,0.4);
774 }
775 }
776 &:hover {
777 background-color: #04bb03;
778 &:before {
779 top: 0px;
780 }
781 .dp-label {
782 display: block;
783 }
784 }
785 }
786