kupos-ui-components-lib 9.9.6 → 9.9.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/KuposUIComponent.d.ts +0 -3
- package/dist/components/ServiceItem/PeruServiceItemDesktop.d.ts +1 -1
- package/dist/components/ServiceItem/PeruServiceItemDesktop.js +176 -156
- package/dist/components/ServiceItem/ServiceItemDesktop.d.ts +1 -1
- package/dist/components/ServiceItem/ServiceItemDesktop.js +31 -29
- package/dist/components/ServiceItem/ServiceItemMobile.d.ts +1 -1
- package/dist/components/ServiceItem/ServiceItemMobile.js +17 -43
- package/dist/components/ServiceItem/mobileTypes.d.ts +2 -48
- package/dist/components/ServiceItem/types.d.ts +8 -27
- package/dist/styles.css +16 -219
- package/dist/ui/ExpendedDropDown/ExpandedDropdown.d.ts +2 -1
- package/dist/ui/ExpendedDropDown/ExpandedDropdown.js +4 -2
- package/dist/ui/FeaturServiceUiMobile/FeatureServiceUiMobile.js +10 -3
- package/dist/ui/OfferBanner.d.ts +0 -2
- package/dist/ui/OfferBanner.js +15 -22
- package/dist/ui/SeatSection/SeatSection.d.ts +7 -1
- package/dist/ui/SeatSection/SeatSection.js +41 -12
- package/dist/ui/mobileweb/DateTimeSectionMobile.d.ts +2 -1
- package/dist/ui/mobileweb/DateTimeSectionMobile.js +12 -6
- package/dist/ui/mobileweb/SeatSectionMobile.d.ts +2 -1
- package/dist/ui/mobileweb/SeatSectionMobile.js +21 -14
- package/dist/utils/CommonService.d.ts +1 -4
- package/dist/utils/CommonService.js +6 -19
- package/package.json +1 -1
- package/src/KuposUIComponent.tsx +0 -3
- package/src/components/ServiceItem/PeruServiceItemDesktop.tsx +277 -404
- package/src/components/ServiceItem/ServiceItemDesktop.tsx +51 -71
- package/src/components/ServiceItem/ServiceItemMobile.tsx +290 -387
- package/src/components/ServiceItem/mobileTypes.ts +8 -50
- package/src/components/ServiceItem/types.ts +13 -32
- package/src/styles.css +0 -15
- package/src/ui/ExpendedDropDown/ExpandedDropdown.tsx +4 -2
- package/src/ui/OfferBanner.tsx +43 -71
- package/src/ui/SeatSection/SeatSection.tsx +86 -21
- package/src/ui/mobileweb/DateTimeSectionMobile.tsx +44 -35
- package/src/ui/mobileweb/SeatSectionMobile.tsx +23 -11
- package/src/utils/CommonService.ts +8 -27
- package/src/assets/images/anims/service_list/flame_anim.json +0 -1
- package/src/assets/images/anims/service_list/thunder_icon.json +0 -1
- package/src/assets/images/anims/service_list/users_anim.json +0 -1
- package/src/ui/FeaturServiceUiMobile/FeatureServiceUiMobile.tsx +0 -575
- package/src/ui/FeatureServiceUI/FeatureServiceUi.tsx +0 -634
|
@@ -15,9 +15,6 @@ interface KuposUIComponentProps {
|
|
|
15
15
|
orignLabel?: string;
|
|
16
16
|
destinationLabel?: string;
|
|
17
17
|
t?: (key: string) => string;
|
|
18
|
-
ticketQuantity?: number;
|
|
19
|
-
onIncreaseTicketQuantity?: (serviceItem: any) => void;
|
|
20
|
-
onDecreaseTicketQuantity?: (serviceItem: any) => void;
|
|
21
18
|
id?: string;
|
|
22
19
|
name?: string;
|
|
23
20
|
description?: string;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import { ServiceItemProps } from "./types";
|
|
3
|
-
declare function PeruServiceItemDesktop({ serviceItem, onBookButtonPress, colors, metaData, children, busStage, serviceDetailsLoading, cityOrigin, cityDestination, translation, orignLabel, destinationLabel, currencySign, isCiva, showRating, showLastSeats, removeArrivalTime, removeDuplicateSeats, isSeatIcon, showAvailableSeats, isPeru, siteType, isAllinBus,
|
|
3
|
+
declare function PeruServiceItemDesktop({ serviceItem, onBookButtonPress, colors, metaData, children, busStage, serviceDetailsLoading, cityOrigin, cityDestination, translation, orignLabel, destinationLabel, currencySign, isCiva, showRating, showLastSeats, removeArrivalTime, removeDuplicateSeats, isSeatIcon, showAvailableSeats, isPeru, siteType, isAllinBus, isFlores, t, }: ServiceItemProps & {
|
|
4
4
|
currencySign?: string;
|
|
5
5
|
}): React.ReactElement;
|
|
6
6
|
export default PeruServiceItemDesktop;
|
|
@@ -3,6 +3,7 @@ import DateService from "../../utils/DateService";
|
|
|
3
3
|
import CommonService from "../../utils/CommonService";
|
|
4
4
|
import ModalEventManager from "../../utils/ModalEventManager";
|
|
5
5
|
import InternationalServicePopupBody from "../InternationalServicePopupBody";
|
|
6
|
+
import LottiePlayer from "../../assets/LottiePlayer";
|
|
6
7
|
import promoAnimation from "../../assets/images/anims/service_list/promocion.json";
|
|
7
8
|
import flexibleAnimation from "../../assets/images/anims/service_list/flexible.json";
|
|
8
9
|
import locationAnimation from "../../assets/images/anims/service_list/location.json";
|
|
@@ -13,67 +14,73 @@ import pullmanFlexibleAnimation from "../../assets/images/anims/service_list/pul
|
|
|
13
14
|
import pullmanPetFriendlyAnimation from "../../assets/images/anims/service_list/pullmanPetFriendly.json";
|
|
14
15
|
import pullmanLocationAnimation from "../../assets/images/anims/service_list/pullmanLocation.json";
|
|
15
16
|
import pullmanPriorityStageAnimation from "../../assets/images/anims/service_list/pullmanPriorityStage.json";
|
|
17
|
+
import pullmanPromoAnimation from "../../assets/images/anims/service_list/promocion.json";
|
|
18
|
+
import pullmanDirectoAnimation from "../../assets/images/anims/service_list/directo.json";
|
|
16
19
|
import opsitesFlexibleAnimation from "../../assets/images/anims/service_list/opsitesFlexible.json";
|
|
17
20
|
import opsitesPetFriendlyAnimation from "../../assets/images/anims/service_list/opsitesPetFriendly.json";
|
|
18
21
|
import opsitesLocationAnimation from "../../assets/images/anims/service_list/opsitesLocation.json";
|
|
19
22
|
import opsitesPriorityStageAnimation from "../../assets/images/anims/service_list/opsitesPriorityStage.json";
|
|
20
|
-
import
|
|
21
|
-
import
|
|
23
|
+
import opsitesPromoAnimation from "../../assets/images/anims/service_list/promocion.json";
|
|
24
|
+
import opsitesDirectoAnimation from "../../assets/images/anims/service_list/directo.json";
|
|
25
|
+
import linatalFlexibleAnimation from "../../assets/images/anims/service_list/flexible.json";
|
|
26
|
+
import linatalPromoAnimation from "../../assets/images/anims/service_list/promocion.json";
|
|
27
|
+
import linatalDirectoAnimation from "../../assets/images/anims/service_list/directo.json";
|
|
28
|
+
import linatalPriorityStageAnimation from "../../assets/images/anims/service_list/priority_stage.json";
|
|
29
|
+
import linatalPetFriendlyAnimation from "../../assets/images/anims/service_list/pet_friendly.json";
|
|
30
|
+
import linatalLocationAnimation from "../../assets/images/anims/service_list/location.json";
|
|
22
31
|
import StageTooltip from "../../ui/StagesTooltip";
|
|
23
32
|
import RatingBlock from "../../ui/RatingBlock";
|
|
24
33
|
import DurationBlock from "../../ui/DurationBlock";
|
|
25
34
|
import PetBlock from "../../ui/PetBlock";
|
|
26
35
|
import FlexibleBlock from "../../ui/FlexibleBlock";
|
|
27
36
|
import AmenitiesBlock from "../../ui/AmenitiesBlock";
|
|
28
|
-
import SeatSection from "../../ui/SeatSection/SeatSection";
|
|
29
|
-
import KuposButton from "../../ui/KuposButton/KuposButton";
|
|
30
|
-
import BottomAmenities from "../../ui/BottomAmenities/BottomAmenities";
|
|
31
|
-
import OfferBanner from "../../ui/OfferBanner";
|
|
32
|
-
import ServiceBadges from "../../ui/ServiceBadges/ServiceBadges";
|
|
33
37
|
const SEAT_EXCEPTIONS = ["Asiento mascota"];
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
38
|
+
function PeruServiceItemDesktop({ serviceItem, onBookButtonPress, colors, metaData, children, busStage, serviceDetailsLoading, cityOrigin, cityDestination, translation, orignLabel, destinationLabel, currencySign, isCiva, showRating, showLastSeats, removeArrivalTime, removeDuplicateSeats, isSeatIcon, showAvailableSeats, isPeru, siteType, isAllinBus, isFlores, t = (key) => key, }) {
|
|
39
|
+
var _a, _b, _c, _d;
|
|
40
|
+
const animationMap = {
|
|
41
|
+
promoAnim: {
|
|
42
|
+
kupos: promoAnimation,
|
|
43
|
+
pullman: pullmanPromoAnimation,
|
|
44
|
+
opsites: opsitesPromoAnimation,
|
|
45
|
+
linatal: linatalPromoAnimation,
|
|
46
|
+
},
|
|
47
|
+
locationAnim: {
|
|
48
|
+
kupos: locationAnimation,
|
|
49
|
+
pullman: pullmanLocationAnimation,
|
|
50
|
+
opsites: opsitesLocationAnimation,
|
|
51
|
+
linatal: linatalLocationAnimation,
|
|
52
|
+
},
|
|
53
|
+
directoAnim: {
|
|
54
|
+
kupos: directoAnimation,
|
|
55
|
+
pullman: pullmanDirectoAnimation,
|
|
56
|
+
opsites: opsitesDirectoAnimation,
|
|
57
|
+
linatal: linatalDirectoAnimation,
|
|
58
|
+
},
|
|
59
|
+
petFriendlyAnim: {
|
|
60
|
+
kupos: petFriendlyAnimation,
|
|
61
|
+
pullman: pullmanPetFriendlyAnimation,
|
|
62
|
+
opsites: opsitesPetFriendlyAnimation,
|
|
63
|
+
linatal: linatalPetFriendlyAnimation,
|
|
64
|
+
},
|
|
65
|
+
priorityStageAnim: {
|
|
66
|
+
kupos: priorityStageAnimation,
|
|
67
|
+
pullman: pullmanPriorityStageAnimation,
|
|
68
|
+
opsites: opsitesPriorityStageAnimation,
|
|
69
|
+
linatal: linatalPriorityStageAnimation,
|
|
70
|
+
},
|
|
71
|
+
flexibleIcon: {
|
|
72
|
+
kupos: flexibleAnimation,
|
|
73
|
+
pullman: pullmanFlexibleAnimation,
|
|
74
|
+
opsites: opsitesFlexibleAnimation,
|
|
75
|
+
linatal: linatalFlexibleAnimation,
|
|
76
|
+
},
|
|
77
|
+
};
|
|
71
78
|
const getAnimationIcon = (icon) => {
|
|
72
|
-
|
|
73
|
-
const animation = ANIMATION_MAP[icon];
|
|
79
|
+
const animation = animationMap[icon];
|
|
74
80
|
if (!animation)
|
|
75
81
|
return null;
|
|
76
|
-
|
|
82
|
+
const currentSiteType = siteType || "kupos";
|
|
83
|
+
return animation[currentSiteType];
|
|
77
84
|
};
|
|
78
85
|
const SvgAmenities = ({ moreAnemities, name, color, }) => {
|
|
79
86
|
var _a;
|
|
@@ -99,7 +106,6 @@ function PeruServiceItemDesktop({ serviceItem, onBookButtonPress, colors, metaDa
|
|
|
99
106
|
busStage[labelId].split("|")[1] === "true" &&
|
|
100
107
|
busStage[labelId].split("|")[0];
|
|
101
108
|
let isSoldOut = serviceItem.available_seats <= 0;
|
|
102
|
-
const hasDpEnabled = (serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.is_dp_enabled) === true;
|
|
103
109
|
const renderIcon = (iconKey, size = "14px") => {
|
|
104
110
|
var _a;
|
|
105
111
|
const iconValue = (_a = serviceItem.icons) === null || _a === void 0 ? void 0 : _a[iconKey];
|
|
@@ -218,7 +224,6 @@ function PeruServiceItemDesktop({ serviceItem, onBookButtonPress, colors, metaDa
|
|
|
218
224
|
};
|
|
219
225
|
const checkMidnight = () => {
|
|
220
226
|
var _a, _b;
|
|
221
|
-
setIsExpand === null || setIsExpand === void 0 ? void 0 : setIsExpand(null);
|
|
222
227
|
if ((cityOrigin === null || cityOrigin === void 0 ? void 0 : cityOrigin.label) &&
|
|
223
228
|
(cityDestination === null || cityDestination === void 0 ? void 0 : cityDestination.label) &&
|
|
224
229
|
((cityOrigin.label.toLowerCase().includes("argentina") &&
|
|
@@ -307,55 +312,18 @@ function PeruServiceItemDesktop({ serviceItem, onBookButtonPress, colors, metaDa
|
|
|
307
312
|
const dropoffName = ((_b = serviceItem.stage_details_arr) === null || _b === void 0 ? void 0 : _b.length)
|
|
308
313
|
? extractStage(serviceItem.stage_details_arr, 1)
|
|
309
314
|
: null;
|
|
310
|
-
const countdownSeconds = 599;
|
|
311
|
-
const startCountdown = (node) => {
|
|
312
|
-
if (!node)
|
|
313
|
-
return;
|
|
314
|
-
const prevId = node.dataset.countdownId;
|
|
315
|
-
if (prevId)
|
|
316
|
-
clearInterval(Number(prevId));
|
|
317
|
-
let remaining = countdownSeconds;
|
|
318
|
-
const formatTime = (totalSecs) => {
|
|
319
|
-
const m = Math.floor(totalSecs / 60);
|
|
320
|
-
const s = totalSecs % 60;
|
|
321
|
-
return `${String(m).padStart(2, "0")}:${String(s).padStart(2, "0")}`;
|
|
322
|
-
};
|
|
323
|
-
node.textContent = formatTime(remaining);
|
|
324
|
-
const id = setInterval(() => {
|
|
325
|
-
remaining -= 1;
|
|
326
|
-
if (remaining <= 0) {
|
|
327
|
-
remaining = countdownSeconds;
|
|
328
|
-
}
|
|
329
|
-
node.textContent = formatTime(remaining);
|
|
330
|
-
}, 1000);
|
|
331
|
-
node.dataset.countdownId = String(id);
|
|
332
|
-
};
|
|
333
315
|
const items = [
|
|
334
316
|
{
|
|
335
|
-
key: "
|
|
336
|
-
width: "
|
|
337
|
-
|
|
338
|
-
render: (React.createElement(AmenitiesBlock, { serviceItem: serviceItem, metaData: metaData, isSoldOut: isSoldOut, colors: colors, getAnimationIcon: getAnimationIcon, getAmenityName: CommonService.getAmenityName, SvgAmenities: SvgAmenities, isPeru: isPeru })),
|
|
317
|
+
key: "rating",
|
|
318
|
+
width: "30%",
|
|
319
|
+
render: (React.createElement(RatingBlock, { showRating: showRating, serviceItem: serviceItem, isSoldOut: isSoldOut, colors: colors, t: t, translation: translation, isPeru: isPeru })),
|
|
339
320
|
},
|
|
340
321
|
{
|
|
341
322
|
key: "duration",
|
|
342
|
-
width: "
|
|
323
|
+
width: "20%",
|
|
343
324
|
condition: serviceItem.duration,
|
|
344
325
|
render: (React.createElement(DurationBlock, { serviceItem: serviceItem, translation: translation, renderIcon: renderIcon, isSoldOut: isSoldOut, colors: colors })),
|
|
345
326
|
},
|
|
346
|
-
// {
|
|
347
|
-
// key: "directo",
|
|
348
|
-
// width: "12%",
|
|
349
|
-
// condition: serviceItem?.is_direct_trip === true,
|
|
350
|
-
// render: (
|
|
351
|
-
// <DirectoBlock
|
|
352
|
-
// translation={translation}
|
|
353
|
-
// getAnimationIcon={getAnimationIcon}
|
|
354
|
-
// colors={colors}
|
|
355
|
-
// isSoldOut={isSoldOut}
|
|
356
|
-
// />
|
|
357
|
-
// ),
|
|
358
|
-
// },
|
|
359
327
|
{
|
|
360
328
|
key: "pet",
|
|
361
329
|
width: "20%",
|
|
@@ -366,83 +334,48 @@ function PeruServiceItemDesktop({ serviceItem, onBookButtonPress, colors, metaDa
|
|
|
366
334
|
{
|
|
367
335
|
key: "flexible",
|
|
368
336
|
width: "20%",
|
|
369
|
-
condition:
|
|
337
|
+
condition: false,
|
|
370
338
|
render: (React.createElement(FlexibleBlock, { translation: translation, getAnimationIcon: getAnimationIcon, colors: colors, serviceItem: serviceItem, isSoldOut: isSoldOut })),
|
|
371
339
|
},
|
|
340
|
+
{
|
|
341
|
+
key: "amenities",
|
|
342
|
+
width: "20%",
|
|
343
|
+
render: (React.createElement(AmenitiesBlock, { serviceItem: serviceItem, metaData: metaData, isSoldOut: isSoldOut, colors: colors, isPeru: isPeru, getAnimationIcon: getAnimationIcon, getAmenityName: CommonService.getAmenityName, SvgAmenities: SvgAmenities })),
|
|
344
|
+
},
|
|
372
345
|
];
|
|
373
|
-
const
|
|
374
|
-
const
|
|
375
|
-
|
|
376
|
-
const hasOfferText = Boolean(serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.offer_text);
|
|
377
|
-
const offerGradient = `linear-gradient(90deg, ${colors.rightGradiantColor || "#ff5964"} 0%, ${colors.leftGradiantColor || "#ff8842"} 100%)`;
|
|
378
|
-
const offerGradientWithOpacity = `linear-gradient(90deg, ${colors.rightGradiantColor || "#ff5964"}80 0%, ${colors.leftGradiantColor || "#ff8842"}80 100%)`;
|
|
379
|
-
const serviceCardStyle = (hasOfferText && isNewUiEnabled) || hasDpEnabled
|
|
380
|
-
? {
|
|
381
|
-
borderColor: "transparent",
|
|
382
|
-
borderStyle: "solid",
|
|
383
|
-
borderWidth: "3px 3px 0 3px",
|
|
384
|
-
borderRadius: isItemExpanded || coachKey ? "18px 18px 0 0" : "18px",
|
|
385
|
-
background: `linear-gradient(#fff, #fff) padding-box, ${isSoldOut ? offerGradientWithOpacity : offerGradient} border-box`,
|
|
386
|
-
// zIndex: 1,
|
|
387
|
-
}
|
|
388
|
-
: {};
|
|
389
|
-
const seats = removeDuplicateSeats
|
|
390
|
-
? ((_c = serviceItem.seat_types) === null || _c === void 0 ? void 0 : _c.filter((seat, index, self) => index === self.findIndex((s) => s.label === seat.label))) || []
|
|
391
|
-
: serviceItem.seat_types || [];
|
|
392
|
-
const discountedSeats = seats.map((seat) => (Object.assign(Object.assign({}, seat), CommonService.calculateDiscountedPrice(seat.fare, serviceItem))));
|
|
393
|
-
const hasDiscount = discountedSeats.some((seat) => seat.originalPrice !== seat.discountedPrice);
|
|
394
|
-
return (React.createElement("div", { className: `relative hover:z-[150] ${hasOfferText ? "mb-[55px]" : "mb-[10px]"} ${(serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.is_direct_trip) ||
|
|
346
|
+
const amenitiesItem = items.find((i) => i.key === "amenities");
|
|
347
|
+
const otherItems = items.filter((i) => i.key !== "amenities" && i.condition !== false);
|
|
348
|
+
return (React.createElement("div", { className: `relative ${serviceItem.offer_text ? "mb-[55px]" : "mb-[10px]"} ${(serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.is_direct_trip) ||
|
|
395
349
|
(serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.train_type_label) === "Tren Express (Nuevo)" ||
|
|
396
350
|
showTopLabel
|
|
397
351
|
? "mt-[24px]"
|
|
398
352
|
: "mt-[20px]"} ` },
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
? "
|
|
406
|
-
: coachKey
|
|
407
|
-
? "20px 15px 20px 15px"
|
|
408
|
-
: "20px 15px 10px 15px",
|
|
409
|
-
marginTop: hasDiscount || hasOfferText ? "14px" : "",
|
|
410
|
-
} },
|
|
411
|
-
React.createElement("div", { className: "grid text-[#464647] w-full [grid-template-columns:14%_40%_0.5%_24%_13.5%] gap-x-[2%] items-center",
|
|
412
|
-
// style={{ marginTop: showTopLabel ? "8px" : "" }}
|
|
413
|
-
style: {
|
|
414
|
-
marginTop: showTopLabel || (serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.is_direct_trip) ? "8px" : "",
|
|
415
|
-
} },
|
|
416
|
-
React.createElement("div", { style: {
|
|
417
|
-
display: "flex",
|
|
418
|
-
flexDirection: "column",
|
|
419
|
-
// gap: "5px",
|
|
420
|
-
} },
|
|
421
|
-
React.createElement("div", {
|
|
422
|
-
// className="flex items-center justify-center m-[auto]"
|
|
423
|
-
className: "" },
|
|
424
|
-
React.createElement("img", { src: serviceItem.operator_details[0], alt: "service logo", className: `h-auto object-contain ${isFlores ? "w-[80%]" : "w-full"} ${isSoldOut ? "grayscale" : ""}` }),
|
|
425
|
-
isCiva ? (React.createElement("div", { className: "text-[13.33px] black-text ml-2" }, serviceItem.operator_details[2])) : null),
|
|
426
|
-
React.createElement(RatingBlock, { showRating: showRating, serviceItem: serviceItem, isSoldOut: isSoldOut, colors: colors, t: t, translation: translation, isPeru: isPeru })),
|
|
353
|
+
React.createElement("div", { className: "bg-white rounded-[20px] shadow-service mx-auto relative" },
|
|
354
|
+
React.createElement("div", { className: "p-[15px] pt-[20px]" },
|
|
355
|
+
React.createElement("div", { className: "grid text-[#464647] w-full [grid-template-columns:14%_40%_0.5%_24%_13.5%] gap-x-[2%] items-center", style: { marginTop: showTopLabel ? "8px" : "" } },
|
|
356
|
+
React.createElement("div", { className: "flex items-center justify-center m-[auto]" },
|
|
357
|
+
React.createElement("div", { className: " " },
|
|
358
|
+
React.createElement("img", { src: serviceItem.operator_details[0], alt: "service logo", className: `h-auto object-contain ${isFlores ? "w-[80%]" : "w-full"} ${isSoldOut ? "grayscale" : ""}` })),
|
|
359
|
+
isCiva ? (React.createElement("div", { className: "text-[13.33px] black-text ml-2" }, serviceItem.operator_details[2])) : null),
|
|
427
360
|
React.createElement("div", { className: `min-h-[2.5rem] grid grid-cols-[0.8fr_auto_26%_1fr] gap-x-4 items-center text-[13.33px] ${isSoldOut ? "text-[#c0c0c0]" : ""}`, style: {
|
|
428
361
|
gridTemplateRows: "1fr",
|
|
429
362
|
} },
|
|
430
|
-
React.createElement("div", { className: "flex flex-col gap-[
|
|
363
|
+
React.createElement("div", { className: "flex flex-col gap-[10px]" },
|
|
431
364
|
orignLabel ? (React.createElement("div", { className: "w-[60px] h-[20px] flex items-center bold-text" }, orignLabel)) : (React.createElement("div", { className: "h-[20px] flex items-center" },
|
|
432
|
-
React.createElement("img", { src: (
|
|
365
|
+
React.createElement("img", { src: (_c = serviceItem.icons) === null || _c === void 0 ? void 0 : _c.origin, alt: "origin", className: `w-[18px] h-auto mr-[8px] ${isSoldOut ? "grayscale" : ""}` }))),
|
|
433
366
|
!isCiva &&
|
|
434
367
|
(destinationLabel ? (React.createElement("div", { className: "w-[60px] h-[20px] flex items-center bold-text" }, destinationLabel)) : (React.createElement("div", { className: "h-[20px] flex items-center" },
|
|
435
|
-
React.createElement("img", { src: (
|
|
436
|
-
React.createElement("div", { className: "flex flex-col gap-[
|
|
368
|
+
React.createElement("img", { src: (_d = serviceItem.icons) === null || _d === void 0 ? void 0 : _d.destination, className: `w-[18px] h-auto mr-[8px] ${isSoldOut ? "grayscale" : ""}`, style: { opacity: isSoldOut ? 0.5 : 1 } }))))),
|
|
369
|
+
React.createElement("div", { className: "flex flex-col gap-[10px]" },
|
|
437
370
|
React.createElement(StageTooltip, { stageData: serviceItem.boarding_stages, direction: 1, terminals: busStage, serviceItem: serviceItem, metaData: metaData, colors: colors },
|
|
438
371
|
React.createElement("span", { className: "cursor-pointer bold-text capitalize" }, DateService.getServiceItemDate(serviceItem.travel_date))),
|
|
439
372
|
!isCiva && (React.createElement(StageTooltip, { stageData: serviceItem.dropoff_stages, direction: 2, terminals: busStage, serviceItem: serviceItem, metaData: metaData, colors: colors },
|
|
440
373
|
React.createElement("span", { className: "cursor-pointer bold-text capitalize" }, DateService.getServiceItemDate(serviceItem.arrival_date))))),
|
|
441
|
-
React.createElement("div", { className: "flex flex-col gap-[
|
|
374
|
+
React.createElement("div", { className: "flex flex-col gap-[10px] items-center" },
|
|
442
375
|
React.createElement("div", { className: "h-[20px] flex items-center justify-center" },
|
|
443
376
|
React.createElement("div", null, "\u2022")),
|
|
444
377
|
!isCiva && (React.createElement("div", { className: "h-[20px] flex items-center justify-center" }, removeArrivalTime ? null : serviceItem.arr_time ? (React.createElement("div", null, "\u2022")) : null))),
|
|
445
|
-
React.createElement("div", { className: "flex flex-col gap-[
|
|
378
|
+
React.createElement("div", { className: "flex flex-col gap-[10px]" },
|
|
446
379
|
React.createElement(StageTooltip, { stageData: serviceItem.boarding_stages, direction: 1, terminals: busStage, serviceItem: serviceItem, metaData: metaData, colors: colors },
|
|
447
380
|
React.createElement("div", { className: "font-[900] bold-text" }, DateService.formatTime(serviceItem.dep_time))),
|
|
448
381
|
!isCiva && (React.createElement(StageTooltip, { stageData: serviceItem.dropoff_stages, direction: 2, terminals: busStage, serviceItem: serviceItem, metaData: metaData, colors: colors },
|
|
@@ -458,15 +391,102 @@ function PeruServiceItemDesktop({ serviceItem, onBookButtonPress, colors, metaDa
|
|
|
458
391
|
margin: "auto",
|
|
459
392
|
} }),
|
|
460
393
|
React.createElement("div", { className: "content-center" },
|
|
461
|
-
React.createElement(
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
394
|
+
React.createElement("div", { className: `relative flex gap-[10px] text-[13.33px] justify-between min-h-[2.5rem] ${getNumberOfSeats() < 3 ? "" : ""}`, style: getNumberOfSeats() < 2
|
|
395
|
+
? { alignItems: "center" }
|
|
396
|
+
: { alignItems: "center" } },
|
|
397
|
+
React.createElement("div", { className: "flex flex-col justify-between" }, getSeatNames()),
|
|
398
|
+
React.createElement("div", { className: "flex flex-col justify-between absolute inset-y-0 right-0 left-1/2 h-full", style: {
|
|
399
|
+
color: isSoldOut ? "#c0c0c0" : colors.priceColor,
|
|
400
|
+
top: 0,
|
|
401
|
+
bottom: 0,
|
|
402
|
+
left: "68%",
|
|
403
|
+
right: 0,
|
|
404
|
+
justifyContent: getNumberOfSeats() < 2 ? "center" : "center",
|
|
405
|
+
gap: "5px",
|
|
406
|
+
} },
|
|
407
|
+
React.createElement("span", { style: {
|
|
408
|
+
position: "absolute",
|
|
409
|
+
top: getNumberOfSeats() > 1 ? -10 : -5,
|
|
410
|
+
fontWeight: "initial",
|
|
411
|
+
fontSize: "12px",
|
|
412
|
+
left: 0,
|
|
413
|
+
color: "#6a6a6a",
|
|
414
|
+
} }, "Desde"),
|
|
415
|
+
getSeatPrice()))),
|
|
416
|
+
React.createElement("div", null,
|
|
417
|
+
React.createElement("button", { onClick: () => (!isSoldOut ? checkMidnight() : null), disabled: serviceDetailsLoading, className: `w-full ${serviceDetailsLoading || isSoldOut ? "py-[12px]" : "py-[12px]"} text-[13.33px] font-bold text-white rounded-[10px] border-none px-[20px] flex items-center justify-center`, style: {
|
|
418
|
+
backgroundColor: serviceDetailsLoading || isSoldOut
|
|
419
|
+
? "lightgray"
|
|
420
|
+
: colors.kuposButtonColor,
|
|
421
|
+
cursor: serviceDetailsLoading || isSoldOut
|
|
422
|
+
? "not-allowed"
|
|
423
|
+
: "pointer",
|
|
424
|
+
} },
|
|
425
|
+
React.createElement("span", { className: "min-w-[75px] flex justify-center items-center bold-text uppercase" },
|
|
426
|
+
isSoldOut ? renderIcon("soldOutIcon", "14px") : null,
|
|
427
|
+
serviceDetailsLoading ? (React.createElement("span", { className: "loader-circle" })) : !isSoldOut ? (translation === null || translation === void 0 ? void 0 : translation.buyButton) : (translation === null || translation === void 0 ? void 0 : translation.soldOutButton))))),
|
|
428
|
+
showLastSeats ? (React.createElement("div", { className: "flex justify-end mr-[11px]" }, (serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.available_seats) < 10 &&
|
|
429
|
+
(serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.available_seats) > 0 && (React.createElement("div", { className: "text-[12px] text-[red] mt-1 text-center" }, "\u00A1 \u00DAltimos Asientos!")))) : null,
|
|
430
|
+
React.createElement("div", { className: "flex items-center mt-[15px] border-t border-[#eee] pt-[10px]" },
|
|
431
|
+
React.createElement("div", { className: "grid items-center gap-[2%] flex-1", style: {
|
|
432
|
+
gridTemplateColumns: "30% 18% 23% 23%",
|
|
433
|
+
// otherItems
|
|
434
|
+
// .map((i) => i.width)
|
|
435
|
+
// .join(" "),
|
|
436
|
+
} }, otherItems.map((item) => (React.createElement("div", { key: item.key, className: "flex items-center " }, item.render)))),
|
|
437
|
+
React.createElement("div", { className: "flex items-center ml-[12px] shrink-0 w-[130px] justify-end" }, amenitiesItem === null || amenitiesItem === void 0 ? void 0 : amenitiesItem.render)))),
|
|
469
438
|
children,
|
|
470
|
-
React.createElement(
|
|
439
|
+
(serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.offer_text) && (React.createElement("div", { className: ` text-white p-[10px_15px] text-left w-full flex items-center absolute -bottom-[36px] pt-[50px] -z-10 rounded-b-[14px] text-[14px]`, style: {
|
|
440
|
+
backgroundColor: isSoldOut
|
|
441
|
+
? colors === null || colors === void 0 ? void 0 : colors.bottomStripColor
|
|
442
|
+
: colors === null || colors === void 0 ? void 0 : colors.bottomStripColor,
|
|
443
|
+
opacity: isSoldOut ? 0.5 : 1,
|
|
444
|
+
} },
|
|
445
|
+
React.createElement(LottiePlayer
|
|
446
|
+
// animationData={serviceItem.icons.promoAnim}
|
|
447
|
+
, {
|
|
448
|
+
// animationData={serviceItem.icons.promoAnim}
|
|
449
|
+
animationData: getAnimationIcon("promoAnim"), width: "18px", height: "18px" }),
|
|
450
|
+
React.createElement("span", { className: "ml-[10px]" }, serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.offer_text))),
|
|
451
|
+
React.createElement("div", { className: "absolute -top-[11px] left-0 w-full flex items-center justify-end gap-[12px] pr-[15px] z-10 " },
|
|
452
|
+
showTopLabel && (React.createElement("div", { className: `flex items-center gap-[10px] py-[4px] px-[14px] rounded-[38px] text-[12.5px] z-20`, style: {
|
|
453
|
+
backgroundColor: isSoldOut ? "#ddd" : colors.ratingBottomColor,
|
|
454
|
+
} },
|
|
455
|
+
React.createElement("div", { className: isSoldOut ? "grayscale" : "" },
|
|
456
|
+
React.createElement(LottiePlayer
|
|
457
|
+
// animationData={serviceItem.icons.priorityStageAnim}
|
|
458
|
+
, {
|
|
459
|
+
// animationData={serviceItem.icons.priorityStageAnim}
|
|
460
|
+
animationData: getAnimationIcon("priorityStageAnim"), width: "14px", height: "14px" })),
|
|
461
|
+
React.createElement("div", { className: isSoldOut ? "text-white" : `text-[${colors.topLabelColor}]` }, showTopLabel))),
|
|
462
|
+
boardingName && isAllinBus && (React.createElement("div", { className: `flex items-center gap-[10px] py-[4px] px-[14px] rounded-[38px] text-[12.5px] z-20`, style: {
|
|
463
|
+
backgroundColor: isSoldOut ? "#ddd" : colors.ratingBottomColor,
|
|
464
|
+
} },
|
|
465
|
+
React.createElement("div", { className: isSoldOut ? "grayscale" : "" },
|
|
466
|
+
React.createElement(LottiePlayer
|
|
467
|
+
// animationData={serviceItem.icons.priorityStageAnim}
|
|
468
|
+
, {
|
|
469
|
+
// animationData={serviceItem.icons.priorityStageAnim}
|
|
470
|
+
animationData: getAnimationIcon("priorityStageAnim"), width: "14px", height: "14px" })),
|
|
471
|
+
React.createElement("div", { className: isSoldOut ? "text-white" : `text-[${colors.topLabelColor}]` }, boardingName))),
|
|
472
|
+
(serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.is_transpordo) && (React.createElement("div", { className: `flex items-center gap-[10px] py-[4px] text-white px-[14px] rounded-[38px] text-[12.5px] z-20`, style: {
|
|
473
|
+
backgroundColor: isSoldOut ? "#ddd" : colors.tooltipColor,
|
|
474
|
+
} },
|
|
475
|
+
React.createElement(LottiePlayer, { animationData: serviceItem.icons.connectingServiceIcon, width: "14px", height: "14px" }),
|
|
476
|
+
React.createElement("div", null, "Conexión"))),
|
|
477
|
+
(serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.is_direct_trip) && (React.createElement("div", { className: `flex items-center gap-[10px] py-[4px] text-white px-[14px] rounded-[38px] text-[12.5px] z-20 `, style: {
|
|
478
|
+
backgroundColor: isSoldOut ? "#ddd" : colors.tooltipColor,
|
|
479
|
+
} },
|
|
480
|
+
React.createElement(LottiePlayer, { animationData: serviceItem.icons.directoAnim, width: "14px", height: "14px" }),
|
|
481
|
+
React.createElement("div", null, translation === null || translation === void 0 ? void 0 : translation.directService))),
|
|
482
|
+
(serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.train_type_label) === "Tren Express (Nuevo)" && (React.createElement("div", { className: `flex items-center gap-[10px] py-[4px] text-white px-[14px] rounded-[38px] text-[12.5px] z-20 `, style: {
|
|
483
|
+
backgroundColor: isSoldOut ? "#ddd" : colors.tooltipColor,
|
|
484
|
+
} },
|
|
485
|
+
React.createElement(LottiePlayer
|
|
486
|
+
// animationData={serviceItem.icons.directoAnim}
|
|
487
|
+
, {
|
|
488
|
+
// animationData={serviceItem.icons.directoAnim}
|
|
489
|
+
animationData: getAnimationIcon("directoAnim"), width: "14px", height: "14px" }),
|
|
490
|
+
React.createElement("div", null, "Tren Express"))))));
|
|
471
491
|
}
|
|
472
492
|
export default PeruServiceItemDesktop;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import { ServiceItemProps } from "./types";
|
|
3
|
-
declare function ServiceItemPB({ serviceItem, onBookButtonPress, colors, metaData, children, busStage, serviceDetailsLoading, cityOrigin, cityDestination, translation, orignLabel, destinationLabel, currencySign, isCiva, showRating, showLastSeats, removeArrivalTime, removeDuplicateSeats, isPeruSites, showAvailableSeats, isSeatIcon, isLinatal, isPeru, t, siteType, isAllinBus, isExpand, setIsExpand, coachKey, viewersConfig,
|
|
3
|
+
declare function ServiceItemPB({ serviceItem, onBookButtonPress, colors, metaData, children, busStage, serviceDetailsLoading, cityOrigin, cityDestination, translation, orignLabel, destinationLabel, currencySign, isCiva, showRating, showLastSeats, removeArrivalTime, removeDuplicateSeats, isPeruSites, showAvailableSeats, isSeatIcon, isLinatal, isPeru, t, siteType, isAllinBus, isExpand, setIsExpand, coachKey, viewersConfig, showLoginModal, isLoggedIn, showLoginOption, isTrain, selectedSeatKey, onSeatSelect, onTrainButtonClick, showSeatSelectionError, onShowSeatSelectionError, onClearSeatSelectionError, isFlores, operatorLabel, }: ServiceItemProps & {
|
|
4
4
|
currencySign?: string;
|
|
5
5
|
}): React.ReactElement;
|
|
6
6
|
export default ServiceItemPB;
|