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