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