@asdp/ferryui 0.1.5 → 0.1.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/index.d.mts +211 -1
- package/dist/index.d.ts +211 -1
- package/dist/index.js +514 -0
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +513 -2
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -3370,6 +3370,517 @@ var ModalSelectDate = ({
|
|
|
3370
3370
|
}
|
|
3371
3371
|
);
|
|
3372
3372
|
};
|
|
3373
|
+
var useStyles10 = reactComponents.makeStyles({
|
|
3374
|
+
dialogSurface: {
|
|
3375
|
+
maxWidth: "600px",
|
|
3376
|
+
width: "100%"
|
|
3377
|
+
},
|
|
3378
|
+
content: {
|
|
3379
|
+
display: "flex",
|
|
3380
|
+
flexDirection: "column",
|
|
3381
|
+
gap: "0px",
|
|
3382
|
+
paddingTop: "10px",
|
|
3383
|
+
paddingLeft: "10px",
|
|
3384
|
+
paddingRight: "10px"
|
|
3385
|
+
},
|
|
3386
|
+
closeButton: {
|
|
3387
|
+
minWidth: "32px",
|
|
3388
|
+
minHeight: "32px"
|
|
3389
|
+
},
|
|
3390
|
+
headerRow: {
|
|
3391
|
+
display: "flex",
|
|
3392
|
+
justifyContent: "end",
|
|
3393
|
+
alignItems: "center",
|
|
3394
|
+
borderBottom: `1px solid ${reactComponents.tokens.colorNeutralStroke2}`
|
|
3395
|
+
},
|
|
3396
|
+
serviceList: {
|
|
3397
|
+
display: "flex",
|
|
3398
|
+
flexDirection: "column",
|
|
3399
|
+
gap: "0px",
|
|
3400
|
+
maxHeight: "400px",
|
|
3401
|
+
overflowY: "auto",
|
|
3402
|
+
paddingLeft: "20px"
|
|
3403
|
+
},
|
|
3404
|
+
serviceItem: {
|
|
3405
|
+
padding: "16px 0px",
|
|
3406
|
+
borderBottom: `1px solid ${reactComponents.tokens.colorNeutralStroke2}`,
|
|
3407
|
+
display: "flex",
|
|
3408
|
+
alignItems: "flex-start",
|
|
3409
|
+
gap: "12px",
|
|
3410
|
+
cursor: "pointer",
|
|
3411
|
+
transition: "background-color 0.2s ease",
|
|
3412
|
+
":hover": {
|
|
3413
|
+
backgroundColor: reactComponents.tokens.colorNeutralBackground1Hover
|
|
3414
|
+
}
|
|
3415
|
+
},
|
|
3416
|
+
serviceContent: {
|
|
3417
|
+
flex: 1,
|
|
3418
|
+
display: "flex",
|
|
3419
|
+
flexDirection: "column",
|
|
3420
|
+
gap: "4px"
|
|
3421
|
+
},
|
|
3422
|
+
serviceName: {
|
|
3423
|
+
fontSize: reactComponents.tokens.fontSizeBase300,
|
|
3424
|
+
fontWeight: reactComponents.tokens.fontWeightSemibold,
|
|
3425
|
+
color: reactComponents.tokens.colorNeutralForeground1
|
|
3426
|
+
},
|
|
3427
|
+
serviceType: {
|
|
3428
|
+
fontSize: reactComponents.tokens.fontSizeBase200,
|
|
3429
|
+
fontWeight: reactComponents.tokens.fontWeightRegular,
|
|
3430
|
+
color: reactComponents.tokens.colorNeutralForeground2
|
|
3431
|
+
},
|
|
3432
|
+
serviceDescription: {
|
|
3433
|
+
fontSize: reactComponents.tokens.fontSizeBase200,
|
|
3434
|
+
color: reactComponents.tokens.colorNeutralForeground3,
|
|
3435
|
+
lineHeight: "1.4"
|
|
3436
|
+
},
|
|
3437
|
+
footer: {
|
|
3438
|
+
padding: "16px 20px",
|
|
3439
|
+
borderTop: `1px solid ${reactComponents.tokens.colorNeutralStroke2}`
|
|
3440
|
+
},
|
|
3441
|
+
saveButton: {
|
|
3442
|
+
width: "100%",
|
|
3443
|
+
borderRadius: reactComponents.tokens.borderRadiusCircular
|
|
3444
|
+
}
|
|
3445
|
+
});
|
|
3446
|
+
var ModalService = ({
|
|
3447
|
+
open,
|
|
3448
|
+
onClose,
|
|
3449
|
+
title = "Pilih Kelas Layanan",
|
|
3450
|
+
services,
|
|
3451
|
+
selectedServiceIds,
|
|
3452
|
+
onSave,
|
|
3453
|
+
isLoading = false,
|
|
3454
|
+
isError = false
|
|
3455
|
+
}) => {
|
|
3456
|
+
const styles = useStyles10();
|
|
3457
|
+
const [selectedServices, setSelectedServices] = React2.useState(selectedServiceIds);
|
|
3458
|
+
React2.useEffect(() => {
|
|
3459
|
+
if (open) {
|
|
3460
|
+
if (selectedServiceIds && selectedServiceIds.length > 0) {
|
|
3461
|
+
const validIds = services.filter((s) => selectedServiceIds.includes(s.id)).map((s) => s.id);
|
|
3462
|
+
setSelectedServices(validIds);
|
|
3463
|
+
} else {
|
|
3464
|
+
setSelectedServices(services.map((s) => s.id));
|
|
3465
|
+
}
|
|
3466
|
+
}
|
|
3467
|
+
}, [open, services, selectedServiceIds]);
|
|
3468
|
+
const handleClose = () => {
|
|
3469
|
+
onClose();
|
|
3470
|
+
};
|
|
3471
|
+
const handleToggleService = (serviceId) => {
|
|
3472
|
+
setSelectedServices((prev) => {
|
|
3473
|
+
if (prev.includes(serviceId)) {
|
|
3474
|
+
return prev.filter((id) => id !== serviceId);
|
|
3475
|
+
} else {
|
|
3476
|
+
return [...prev, serviceId];
|
|
3477
|
+
}
|
|
3478
|
+
});
|
|
3479
|
+
};
|
|
3480
|
+
const handleToggleAll = () => {
|
|
3481
|
+
if (selectedServices.length === services.length) {
|
|
3482
|
+
setSelectedServices([]);
|
|
3483
|
+
} else {
|
|
3484
|
+
setSelectedServices(services.map((s) => s.id));
|
|
3485
|
+
}
|
|
3486
|
+
};
|
|
3487
|
+
const handleSave = () => {
|
|
3488
|
+
const selectedServiceItems = services.filter((s) => selectedServices.includes(s.id));
|
|
3489
|
+
onSave(selectedServiceItems);
|
|
3490
|
+
};
|
|
3491
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3492
|
+
reactComponents.Dialog,
|
|
3493
|
+
{
|
|
3494
|
+
open,
|
|
3495
|
+
onOpenChange: (_, data) => !data.open && onClose(),
|
|
3496
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(reactComponents.DialogSurface, { className: styles.dialogSurface, children: /* @__PURE__ */ jsxRuntime.jsxs(reactComponents.DialogBody, { children: [
|
|
3497
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3498
|
+
reactComponents.DialogTitle,
|
|
3499
|
+
{
|
|
3500
|
+
action: /* @__PURE__ */ jsxRuntime.jsx(
|
|
3501
|
+
reactComponents.Button,
|
|
3502
|
+
{
|
|
3503
|
+
appearance: "subtle",
|
|
3504
|
+
"aria-label": "close",
|
|
3505
|
+
icon: /* @__PURE__ */ jsxRuntime.jsx(react.Icon, { icon: "fluent:dismiss-24-regular" }),
|
|
3506
|
+
onClick: handleClose,
|
|
3507
|
+
className: styles.closeButton
|
|
3508
|
+
}
|
|
3509
|
+
),
|
|
3510
|
+
children: title
|
|
3511
|
+
}
|
|
3512
|
+
),
|
|
3513
|
+
/* @__PURE__ */ jsxRuntime.jsx(reactComponents.DialogContent, { className: styles.content, children: isLoading ? /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Body1, { children: "Loading..." }) : isError ? /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Body1, { children: "Error loading services" }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
3514
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.serviceList, children: [
|
|
3515
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.headerRow, children: [
|
|
3516
|
+
/* @__PURE__ */ jsxRuntime.jsx(reactComponents.Body1, { children: "Pilih Semua" }),
|
|
3517
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3518
|
+
reactComponents.Checkbox,
|
|
3519
|
+
{
|
|
3520
|
+
checked: selectedServices.length === services.length,
|
|
3521
|
+
onChange: handleToggleAll
|
|
3522
|
+
}
|
|
3523
|
+
)
|
|
3524
|
+
] }),
|
|
3525
|
+
services.map((service) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
3526
|
+
"div",
|
|
3527
|
+
{
|
|
3528
|
+
className: styles.serviceItem,
|
|
3529
|
+
onClick: () => handleToggleService(service.id),
|
|
3530
|
+
children: [
|
|
3531
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.serviceContent, children: [
|
|
3532
|
+
/* @__PURE__ */ jsxRuntime.jsx(reactComponents.Body1, { className: styles.serviceName, children: service.serviceTypeName }),
|
|
3533
|
+
/* @__PURE__ */ jsxRuntime.jsx(reactComponents.Caption1, { className: styles.serviceType, children: service.serviceTypeCode }),
|
|
3534
|
+
/* @__PURE__ */ jsxRuntime.jsx(reactComponents.Caption1, { className: styles.serviceDescription, children: service.serviceDescription })
|
|
3535
|
+
] }),
|
|
3536
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3537
|
+
reactComponents.Checkbox,
|
|
3538
|
+
{
|
|
3539
|
+
checked: selectedServices.includes(service.id),
|
|
3540
|
+
onChange: () => handleToggleService(service.id)
|
|
3541
|
+
}
|
|
3542
|
+
)
|
|
3543
|
+
]
|
|
3544
|
+
},
|
|
3545
|
+
service.id
|
|
3546
|
+
))
|
|
3547
|
+
] }),
|
|
3548
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: styles.footer, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
3549
|
+
reactComponents.Button,
|
|
3550
|
+
{
|
|
3551
|
+
appearance: "primary",
|
|
3552
|
+
size: "medium",
|
|
3553
|
+
className: styles.saveButton,
|
|
3554
|
+
onClick: handleSave,
|
|
3555
|
+
disabled: selectedServices.length === 0,
|
|
3556
|
+
children: "Simpan"
|
|
3557
|
+
}
|
|
3558
|
+
) })
|
|
3559
|
+
] }) })
|
|
3560
|
+
] }) })
|
|
3561
|
+
}
|
|
3562
|
+
);
|
|
3563
|
+
};
|
|
3564
|
+
|
|
3565
|
+
// src/components/ModalTotalPassengers/constants.ts
|
|
3566
|
+
var DEFAULT_SERVICE_CLASSES = [
|
|
3567
|
+
{ id: 1, name: "Ekonomi", key: "ekonomi", serviceName: "ECONOMY" },
|
|
3568
|
+
{ id: 2, name: "Bisnis", key: "bisnis", serviceName: "BUSINESS" },
|
|
3569
|
+
{ id: 3, name: "Eksekutif", key: "eksekutif", serviceName: "EXECUTIVE" }
|
|
3570
|
+
];
|
|
3571
|
+
var useStyles11 = reactComponents.makeStyles({
|
|
3572
|
+
dialogSurface: {
|
|
3573
|
+
maxWidth: "600px",
|
|
3574
|
+
width: "100%"
|
|
3575
|
+
},
|
|
3576
|
+
passengerSection: {
|
|
3577
|
+
marginTop: reactComponents.tokens.spacingHorizontalM,
|
|
3578
|
+
display: "flex",
|
|
3579
|
+
flexDirection: "column"
|
|
3580
|
+
},
|
|
3581
|
+
accordionHeader: {
|
|
3582
|
+
fontSize: reactComponents.tokens.fontSizeBase300,
|
|
3583
|
+
fontWeight: reactComponents.tokens.fontWeightBold
|
|
3584
|
+
},
|
|
3585
|
+
accordionItem: {
|
|
3586
|
+
borderRadius: reactComponents.tokens.borderRadiusXLarge,
|
|
3587
|
+
marginBottom: "1rem",
|
|
3588
|
+
border: `1px solid ${reactComponents.tokens.colorNeutralStroke2}`
|
|
3589
|
+
},
|
|
3590
|
+
passengerCount: {
|
|
3591
|
+
display: "flex",
|
|
3592
|
+
alignItems: "center",
|
|
3593
|
+
gap: "12px"
|
|
3594
|
+
},
|
|
3595
|
+
counterButton: {
|
|
3596
|
+
minWidth: "24px",
|
|
3597
|
+
height: "24px",
|
|
3598
|
+
padding: "0",
|
|
3599
|
+
borderRadius: reactComponents.tokens.borderRadiusCircular,
|
|
3600
|
+
color: reactComponents.tokens.colorBrandBackground,
|
|
3601
|
+
border: `1px solid ${reactComponents.tokens.colorBrandBackground}`,
|
|
3602
|
+
"&:hover": {
|
|
3603
|
+
border: `1px solid ${reactComponents.tokens.colorBrandBackgroundHover}`,
|
|
3604
|
+
color: reactComponents.tokens.colorBrandBackgroundHover
|
|
3605
|
+
},
|
|
3606
|
+
"&:disabled": {
|
|
3607
|
+
border: `1px solid ${reactComponents.tokens.colorNeutralStrokeDisabled}`,
|
|
3608
|
+
color: reactComponents.tokens.colorNeutralForegroundDisabled
|
|
3609
|
+
}
|
|
3610
|
+
},
|
|
3611
|
+
countText: {
|
|
3612
|
+
minWidth: "24px",
|
|
3613
|
+
textAlign: "center"
|
|
3614
|
+
},
|
|
3615
|
+
nestedSection: {
|
|
3616
|
+
borderTop: `2px solid ${reactComponents.tokens.colorBrandBackground}`,
|
|
3617
|
+
display: "flex",
|
|
3618
|
+
flexDirection: "column",
|
|
3619
|
+
padding: "0.6rem"
|
|
3620
|
+
},
|
|
3621
|
+
nestedRow: {
|
|
3622
|
+
display: "flex",
|
|
3623
|
+
justifyContent: "space-between",
|
|
3624
|
+
alignItems: "center",
|
|
3625
|
+
padding: "4px",
|
|
3626
|
+
borderRadius: reactComponents.tokens.borderRadiusSmall,
|
|
3627
|
+
backgroundColor: reactComponents.tokens.colorNeutralBackground1
|
|
3628
|
+
},
|
|
3629
|
+
submitButton: {
|
|
3630
|
+
marginTop: "16px",
|
|
3631
|
+
width: "100%",
|
|
3632
|
+
borderRadius: reactComponents.tokens.borderRadiusCircular
|
|
3633
|
+
},
|
|
3634
|
+
accordionPanel: {
|
|
3635
|
+
margin: 0
|
|
3636
|
+
}
|
|
3637
|
+
});
|
|
3638
|
+
var ModalTotalPassengers = ({
|
|
3639
|
+
open,
|
|
3640
|
+
onClose,
|
|
3641
|
+
title = "Pilih Jumlah Penumpang",
|
|
3642
|
+
passengerTypes,
|
|
3643
|
+
serviceClasses = DEFAULT_SERVICE_CLASSES,
|
|
3644
|
+
selectedPassengers,
|
|
3645
|
+
onSave,
|
|
3646
|
+
isLoading = false,
|
|
3647
|
+
maxPassengers = 10,
|
|
3648
|
+
infoMessage
|
|
3649
|
+
}) => {
|
|
3650
|
+
const styles = useStyles11();
|
|
3651
|
+
const [passengers, setPassengers] = React2.useState([]);
|
|
3652
|
+
const [openItems, setOpenItems] = React2.useState([]);
|
|
3653
|
+
const defaultInfoMessage = `Anda dapat menambahkan hingga ${maxPassengers} penumpang pada golongan kendaraan ini.`;
|
|
3654
|
+
React2.useEffect(() => {
|
|
3655
|
+
if (passengerTypes.length === 0) return;
|
|
3656
|
+
const defaultPassengers = passengerTypes.map((passengerType) => ({
|
|
3657
|
+
passengerTypeId: passengerType.id,
|
|
3658
|
+
passengerTypeCode: passengerType.passengerTypeCode,
|
|
3659
|
+
passengerTypeName: passengerType.passengerTypeName,
|
|
3660
|
+
services: serviceClasses.map((sc) => ({
|
|
3661
|
+
serviceId: sc.id,
|
|
3662
|
+
serviceName: sc.serviceName,
|
|
3663
|
+
count: 0,
|
|
3664
|
+
passengers: []
|
|
3665
|
+
}))
|
|
3666
|
+
}));
|
|
3667
|
+
if (selectedPassengers && selectedPassengers.length > 0) {
|
|
3668
|
+
const mergedPassengers = defaultPassengers.map((defaultP) => {
|
|
3669
|
+
const selectedP = selectedPassengers.find(
|
|
3670
|
+
(p) => p.passengerTypeCode === defaultP.passengerTypeCode
|
|
3671
|
+
);
|
|
3672
|
+
if (selectedP) {
|
|
3673
|
+
const mergedServices = defaultP.services.map((defaultS) => {
|
|
3674
|
+
const selectedS = selectedP.services.find((s) => s.serviceName === defaultS.serviceName);
|
|
3675
|
+
return selectedS ? { ...defaultS, count: selectedS.count, passengers: selectedS.passengers || [] } : defaultS;
|
|
3676
|
+
});
|
|
3677
|
+
return { ...defaultP, services: mergedServices };
|
|
3678
|
+
}
|
|
3679
|
+
return defaultP;
|
|
3680
|
+
});
|
|
3681
|
+
setPassengers(mergedPassengers);
|
|
3682
|
+
const itemsWithData = selectedPassengers.filter((p) => p.services.some((s) => s.count > 0)).map((p) => {
|
|
3683
|
+
const passengerType = passengerTypes.find(
|
|
3684
|
+
(pt) => pt.passengerTypeCode === p.passengerTypeCode
|
|
3685
|
+
);
|
|
3686
|
+
return passengerType ? String(passengerType.id) : "";
|
|
3687
|
+
}).filter((id) => id !== "");
|
|
3688
|
+
setOpenItems(itemsWithData);
|
|
3689
|
+
} else {
|
|
3690
|
+
setPassengers(defaultPassengers);
|
|
3691
|
+
setOpenItems([]);
|
|
3692
|
+
}
|
|
3693
|
+
}, [open, passengerTypes, serviceClasses, selectedPassengers]);
|
|
3694
|
+
const getServiceCount = (passengerTypeCode, serviceName) => {
|
|
3695
|
+
const passenger = passengers.find((p) => p.passengerTypeCode === passengerTypeCode);
|
|
3696
|
+
if (!passenger) return 0;
|
|
3697
|
+
const service = passenger.services.find((s) => s.serviceName === serviceName);
|
|
3698
|
+
return service?.count || 0;
|
|
3699
|
+
};
|
|
3700
|
+
const getTotalForType = (passengerTypeCode) => {
|
|
3701
|
+
const passenger = passengers.find((p) => p.passengerTypeCode === passengerTypeCode);
|
|
3702
|
+
if (!passenger) return "0";
|
|
3703
|
+
const parts = [];
|
|
3704
|
+
passenger.services.forEach((service) => {
|
|
3705
|
+
if (service.count > 0) {
|
|
3706
|
+
const serviceClass = serviceClasses.find((sc) => sc.serviceName === service.serviceName);
|
|
3707
|
+
const serviceName = serviceClass?.name || service.serviceName;
|
|
3708
|
+
parts.push(`${service.count} ${serviceName}`);
|
|
3709
|
+
}
|
|
3710
|
+
});
|
|
3711
|
+
return parts.length > 0 ? parts.join(", ") : "0";
|
|
3712
|
+
};
|
|
3713
|
+
const handleIncrement = (passengerTypeCode, serviceName) => {
|
|
3714
|
+
setPassengers(
|
|
3715
|
+
(prev) => prev.map((passenger) => {
|
|
3716
|
+
if (passenger.passengerTypeCode === passengerTypeCode) {
|
|
3717
|
+
return {
|
|
3718
|
+
...passenger,
|
|
3719
|
+
services: passenger.services.map((service) => {
|
|
3720
|
+
if (service.serviceName === serviceName) {
|
|
3721
|
+
const newCount = service.count + 1;
|
|
3722
|
+
const newPassengers = [...service.passengers || []];
|
|
3723
|
+
while (newPassengers.length < newCount) {
|
|
3724
|
+
newPassengers.push({});
|
|
3725
|
+
}
|
|
3726
|
+
return {
|
|
3727
|
+
...service,
|
|
3728
|
+
count: newCount,
|
|
3729
|
+
passengers: newPassengers
|
|
3730
|
+
};
|
|
3731
|
+
}
|
|
3732
|
+
return service;
|
|
3733
|
+
})
|
|
3734
|
+
};
|
|
3735
|
+
}
|
|
3736
|
+
return passenger;
|
|
3737
|
+
})
|
|
3738
|
+
);
|
|
3739
|
+
};
|
|
3740
|
+
const handleDecrement = (passengerTypeCode, serviceName) => {
|
|
3741
|
+
setPassengers(
|
|
3742
|
+
(prev) => prev.map((passenger) => {
|
|
3743
|
+
if (passenger.passengerTypeCode === passengerTypeCode) {
|
|
3744
|
+
return {
|
|
3745
|
+
...passenger,
|
|
3746
|
+
services: passenger.services.map((service) => {
|
|
3747
|
+
if (service.serviceName === serviceName && service.count > 0) {
|
|
3748
|
+
const newCount = service.count - 1;
|
|
3749
|
+
const newPassengers = (service.passengers || []).slice(0, newCount);
|
|
3750
|
+
return {
|
|
3751
|
+
...service,
|
|
3752
|
+
count: newCount,
|
|
3753
|
+
passengers: newPassengers
|
|
3754
|
+
};
|
|
3755
|
+
}
|
|
3756
|
+
return service;
|
|
3757
|
+
})
|
|
3758
|
+
};
|
|
3759
|
+
}
|
|
3760
|
+
return passenger;
|
|
3761
|
+
})
|
|
3762
|
+
);
|
|
3763
|
+
};
|
|
3764
|
+
const handleSave = () => {
|
|
3765
|
+
const filteredPassengers = passengers.map((passenger) => ({
|
|
3766
|
+
...passenger,
|
|
3767
|
+
services: passenger.services.filter((service) => service.count > 0)
|
|
3768
|
+
})).filter((passenger) => passenger.services.length > 0);
|
|
3769
|
+
onSave(filteredPassengers);
|
|
3770
|
+
};
|
|
3771
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3772
|
+
reactComponents.Dialog,
|
|
3773
|
+
{
|
|
3774
|
+
open,
|
|
3775
|
+
onOpenChange: (_, data) => !data.open && onClose(),
|
|
3776
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(reactComponents.DialogSurface, { children: /* @__PURE__ */ jsxRuntime.jsxs(reactComponents.DialogBody, { children: [
|
|
3777
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3778
|
+
reactComponents.DialogTitle,
|
|
3779
|
+
{
|
|
3780
|
+
action: /* @__PURE__ */ jsxRuntime.jsx(
|
|
3781
|
+
reactComponents.Button,
|
|
3782
|
+
{
|
|
3783
|
+
appearance: "subtle",
|
|
3784
|
+
"aria-label": "close",
|
|
3785
|
+
icon: /* @__PURE__ */ jsxRuntime.jsx(react.Icon, { icon: "fluent:dismiss-12-regular" }),
|
|
3786
|
+
onClick: onClose
|
|
3787
|
+
}
|
|
3788
|
+
),
|
|
3789
|
+
children: title
|
|
3790
|
+
}
|
|
3791
|
+
),
|
|
3792
|
+
/* @__PURE__ */ jsxRuntime.jsxs(reactComponents.DialogContent, { children: [
|
|
3793
|
+
/* @__PURE__ */ jsxRuntime.jsx(reactComponents.MessageBar, { shape: "rounded", children: /* @__PURE__ */ jsxRuntime.jsx(reactComponents.MessageBarBody, { children: infoMessage || defaultInfoMessage }) }),
|
|
3794
|
+
isLoading ? /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Body1, { children: "Loading..." }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
3795
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3796
|
+
reactComponents.Accordion,
|
|
3797
|
+
{
|
|
3798
|
+
collapsible: true,
|
|
3799
|
+
multiple: true,
|
|
3800
|
+
openItems,
|
|
3801
|
+
onToggle: (_, data) => setOpenItems(data.openItems),
|
|
3802
|
+
className: styles.passengerSection,
|
|
3803
|
+
children: passengerTypes.map((passengerType) => {
|
|
3804
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
3805
|
+
reactComponents.AccordionItem,
|
|
3806
|
+
{
|
|
3807
|
+
value: String(passengerType.id),
|
|
3808
|
+
className: styles.accordionItem,
|
|
3809
|
+
children: [
|
|
3810
|
+
/* @__PURE__ */ jsxRuntime.jsxs(reactComponents.AccordionHeader, { className: styles.accordionHeader, expandIconPosition: "end", children: [
|
|
3811
|
+
passengerType.passengerTypeName,
|
|
3812
|
+
" (",
|
|
3813
|
+
getTotalForType(passengerType.passengerTypeCode),
|
|
3814
|
+
")"
|
|
3815
|
+
] }),
|
|
3816
|
+
/* @__PURE__ */ jsxRuntime.jsx(reactComponents.AccordionPanel, { className: styles.accordionPanel, children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles.nestedSection, children: serviceClasses.map((service) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.nestedRow, children: [
|
|
3817
|
+
/* @__PURE__ */ jsxRuntime.jsx(reactComponents.Body1, { children: service.name }),
|
|
3818
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.passengerCount, children: [
|
|
3819
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3820
|
+
reactComponents.Button,
|
|
3821
|
+
{
|
|
3822
|
+
appearance: "outline",
|
|
3823
|
+
className: styles.counterButton,
|
|
3824
|
+
size: "small",
|
|
3825
|
+
icon: /* @__PURE__ */ jsxRuntime.jsx(react.Icon, { icon: "fluent:subtract-12-regular" }),
|
|
3826
|
+
onClick: (e) => {
|
|
3827
|
+
e.stopPropagation();
|
|
3828
|
+
handleDecrement(
|
|
3829
|
+
passengerType.passengerTypeCode,
|
|
3830
|
+
service.serviceName
|
|
3831
|
+
);
|
|
3832
|
+
},
|
|
3833
|
+
disabled: getServiceCount(
|
|
3834
|
+
passengerType.passengerTypeCode,
|
|
3835
|
+
service.serviceName
|
|
3836
|
+
) === 0
|
|
3837
|
+
}
|
|
3838
|
+
),
|
|
3839
|
+
/* @__PURE__ */ jsxRuntime.jsx(reactComponents.Body1, { className: styles.countText, children: getServiceCount(
|
|
3840
|
+
passengerType.passengerTypeCode,
|
|
3841
|
+
service.serviceName
|
|
3842
|
+
) }),
|
|
3843
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3844
|
+
reactComponents.Button,
|
|
3845
|
+
{
|
|
3846
|
+
appearance: "outline",
|
|
3847
|
+
className: styles.counterButton,
|
|
3848
|
+
size: "small",
|
|
3849
|
+
icon: /* @__PURE__ */ jsxRuntime.jsx(react.Icon, { icon: "fluent:add-12-regular" }),
|
|
3850
|
+
onClick: (e) => {
|
|
3851
|
+
e.stopPropagation();
|
|
3852
|
+
handleIncrement(
|
|
3853
|
+
passengerType.passengerTypeCode,
|
|
3854
|
+
service.serviceName
|
|
3855
|
+
);
|
|
3856
|
+
}
|
|
3857
|
+
}
|
|
3858
|
+
)
|
|
3859
|
+
] })
|
|
3860
|
+
] }, service.key)) }) })
|
|
3861
|
+
]
|
|
3862
|
+
},
|
|
3863
|
+
passengerType.id
|
|
3864
|
+
);
|
|
3865
|
+
})
|
|
3866
|
+
}
|
|
3867
|
+
),
|
|
3868
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3869
|
+
reactComponents.Button,
|
|
3870
|
+
{
|
|
3871
|
+
appearance: "primary",
|
|
3872
|
+
size: "medium",
|
|
3873
|
+
className: styles.submitButton,
|
|
3874
|
+
onClick: handleSave,
|
|
3875
|
+
children: "Simpan"
|
|
3876
|
+
}
|
|
3877
|
+
)
|
|
3878
|
+
] })
|
|
3879
|
+
] })
|
|
3880
|
+
] }) })
|
|
3881
|
+
}
|
|
3882
|
+
);
|
|
3883
|
+
};
|
|
3373
3884
|
|
|
3374
3885
|
exports.BackgroundTicketCard = BackgroundTicketCard_default;
|
|
3375
3886
|
exports.BackgroundTicketCardVertical = BackgroundTicketCardVertical_default;
|
|
@@ -3379,11 +3890,14 @@ exports.CardServiceMenu = CardServiceMenu;
|
|
|
3379
3890
|
exports.CardTicket = CardTicket;
|
|
3380
3891
|
exports.CarouselWithCustomNav = CarouselWithCustomNav;
|
|
3381
3892
|
exports.DEFAULT_COUNTRY_CODES = DEFAULT_COUNTRY_CODES2;
|
|
3893
|
+
exports.DEFAULT_SERVICE_CLASSES = DEFAULT_SERVICE_CLASSES;
|
|
3382
3894
|
exports.InputDynamic = InputDynamic_default;
|
|
3383
3895
|
exports.MODAL_PRESETS = MODAL_PRESETS;
|
|
3384
3896
|
exports.ModalIllustration = ModalIllustration;
|
|
3385
3897
|
exports.ModalSearchHarbor = ModalSearchHarbor;
|
|
3386
3898
|
exports.ModalSelectDate = ModalSelectDate;
|
|
3899
|
+
exports.ModalService = ModalService;
|
|
3900
|
+
exports.ModalTotalPassengers = ModalTotalPassengers;
|
|
3387
3901
|
exports.getModalPreset = getModalPreset;
|
|
3388
3902
|
//# sourceMappingURL=index.js.map
|
|
3389
3903
|
//# sourceMappingURL=index.js.map
|