Merged in fix/hide-payment-if-only-points (pull request #1741)
Feat(SW-1943): add new design for pay ancillaries with points * fix: hide card and payment info if only quantity with points is selected * feat(SW-1943): add new design for pay ancillaries with points * feat(SW-1943): add missing translation * feat(SW-1943): fix rebase * feat(SW-1943): remove console log Approved-by: Linus Flood Approved-by: Matilda Landström
This commit is contained in:
@@ -9,3 +9,17 @@
|
|||||||
gap: var(--Space-x2);
|
gap: var(--Space-x2);
|
||||||
color: var(--Text-Secondary);
|
color: var(--Text-Secondary);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.totalPointsContainer {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
background-color: var(--Surface-Brand-Primary-2-OnSurface-Accent);
|
||||||
|
padding: var(--Space-x1) var(--Space-x15);
|
||||||
|
border-radius: var(--Corner-radius-Medium);
|
||||||
|
}
|
||||||
|
|
||||||
|
.totalPoints {
|
||||||
|
display: flex;
|
||||||
|
gap: var(--Space-x15);
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
|
import { useWatch } from "react-hook-form"
|
||||||
import { useIntl } from "react-intl"
|
import { useIntl } from "react-intl"
|
||||||
|
|
||||||
|
import { MaterialIcon } from "@scandic-hotels/design-system/Icons/MaterialIcon"
|
||||||
import { Typography } from "@scandic-hotels/design-system/Typography"
|
import { Typography } from "@scandic-hotels/design-system/Typography"
|
||||||
|
|
||||||
import { PaymentMethodEnum } from "@/constants/booking"
|
import { PaymentMethodEnum } from "@/constants/booking"
|
||||||
@@ -24,18 +26,28 @@ import { AlertTypeEnum } from "@/types/enums/alert"
|
|||||||
|
|
||||||
export default function ConfirmationStep({
|
export default function ConfirmationStep({
|
||||||
savedCreditCards,
|
savedCreditCards,
|
||||||
|
user,
|
||||||
}: ConfirmationStepProps) {
|
}: ConfirmationStepProps) {
|
||||||
const intl = useIntl()
|
const intl = useIntl()
|
||||||
const lang = useLang()
|
const lang = useLang()
|
||||||
const { checkInDate, guaranteeInfo } = useAddAncillaryStore((state) => ({
|
const { checkInDate, guaranteeInfo, selectedAncillary } =
|
||||||
|
useAddAncillaryStore((state) => ({
|
||||||
checkInDate: state.booking.checkInDate,
|
checkInDate: state.booking.checkInDate,
|
||||||
guaranteeInfo: state.booking.guaranteeInfo,
|
guaranteeInfo: state.booking.guaranteeInfo,
|
||||||
|
selectedAncillary: state.selectedAncillary,
|
||||||
}))
|
}))
|
||||||
const refundableDate = dt(checkInDate)
|
const refundableDate = dt(checkInDate)
|
||||||
.subtract(1, "day")
|
.subtract(1, "day")
|
||||||
.locale(lang)
|
.locale(lang)
|
||||||
.format("23:59, dddd, D MMMM YYYY")
|
.format("23:59, dddd, D MMMM YYYY")
|
||||||
|
|
||||||
|
const quantityWithCard = useWatch({ name: "quantityWithCard" })
|
||||||
|
const quantityWithPoints = useWatch({ name: "quantityWithPoints" })
|
||||||
|
const currentPoints = user?.membership?.currentPoints ?? 0
|
||||||
|
const totalPoints =
|
||||||
|
quantityWithPoints && selectedAncillary?.points
|
||||||
|
? selectedAncillary.points * quantityWithPoints
|
||||||
|
: null
|
||||||
return (
|
return (
|
||||||
<div className={styles.modalContent}>
|
<div className={styles.modalContent}>
|
||||||
<Typography variant="Body/Paragraph/mdRegular">
|
<Typography variant="Body/Paragraph/mdRegular">
|
||||||
@@ -48,6 +60,40 @@ export default function ConfirmationStep({
|
|||||||
)}
|
)}
|
||||||
</p>
|
</p>
|
||||||
</Typography>
|
</Typography>
|
||||||
|
{!!quantityWithPoints && (
|
||||||
|
<>
|
||||||
|
<Typography variant="Title/Subtitle/md">
|
||||||
|
<h2>
|
||||||
|
{intl.formatMessage({
|
||||||
|
id: "Points to be deducted now",
|
||||||
|
})}
|
||||||
|
</h2>
|
||||||
|
</Typography>
|
||||||
|
<div className={styles.totalPointsContainer}>
|
||||||
|
<div className={styles.totalPoints}>
|
||||||
|
<MaterialIcon icon="diamond" />
|
||||||
|
<Typography variant="Title/Overline/sm">
|
||||||
|
<h2>
|
||||||
|
{intl.formatMessage(
|
||||||
|
{ id: "{amount} points" },
|
||||||
|
{ amount: totalPoints }
|
||||||
|
)}
|
||||||
|
</h2>
|
||||||
|
</Typography>
|
||||||
|
</div>
|
||||||
|
<Typography variant="Body/Paragraph/mdRegular">
|
||||||
|
<p>
|
||||||
|
{intl.formatMessage(
|
||||||
|
{ id: "{amount} points available" },
|
||||||
|
{ amount: currentPoints }
|
||||||
|
)}
|
||||||
|
</p>
|
||||||
|
</Typography>
|
||||||
|
</div>
|
||||||
|
</>
|
||||||
|
)}
|
||||||
|
{!!quantityWithCard && (
|
||||||
|
<>
|
||||||
<header>
|
<header>
|
||||||
<Typography variant="Title/Subtitle/md">
|
<Typography variant="Title/Subtitle/md">
|
||||||
<h2>
|
<h2>
|
||||||
@@ -96,6 +142,9 @@ export default function ConfirmationStep({
|
|||||||
</>
|
</>
|
||||||
</>
|
</>
|
||||||
)}
|
)}
|
||||||
|
</>
|
||||||
|
)}
|
||||||
|
|
||||||
<div className={styles.termsAndConditions}>
|
<div className={styles.termsAndConditions}>
|
||||||
<Typography variant="Body/Supporting text (caption)/smRegular">
|
<Typography variant="Body/Supporting text (caption)/smRegular">
|
||||||
<p>
|
<p>
|
||||||
|
|||||||
@@ -22,5 +22,5 @@ export default function Desktop({ user, savedCreditCards }: StepsProps) {
|
|||||||
return <DeliveryMethodStep />
|
return <DeliveryMethodStep />
|
||||||
}
|
}
|
||||||
|
|
||||||
return <ConfirmationStep savedCreditCards={savedCreditCards} />
|
return <ConfirmationStep savedCreditCards={savedCreditCards} user={user} />
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,5 +23,5 @@ export default function Mobile({ user, savedCreditCards }: StepsProps) {
|
|||||||
</>
|
</>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
return <ConfirmationStep savedCreditCards={savedCreditCards} />
|
return <ConfirmationStep savedCreditCards={savedCreditCards} user={user} />
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -264,8 +264,10 @@ export default function AddAncillaryFlowModal({
|
|||||||
toast.error(intl.formatMessage({ id: "Something went wrong!" }))
|
toast.error(intl.formatMessage({ id: "Something went wrong!" }))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
const shouldSkipGuarantee =
|
||||||
|
booking.guaranteeInfo || (data.quantityWithCard ?? 0) <= 0
|
||||||
|
|
||||||
if (booking.guaranteeInfo) {
|
if (shouldSkipGuarantee) {
|
||||||
handleAncillarySubmission(data, packagesToAdd)
|
handleAncillarySubmission(data, packagesToAdd)
|
||||||
} else {
|
} else {
|
||||||
handleGuaranteePayment(data, packagesToAdd)
|
handleGuaranteePayment(data, packagesToAdd)
|
||||||
|
|||||||
@@ -631,6 +631,7 @@
|
|||||||
"Points may take up to 10 days to be displayed.": "Det kan tage op til 10 dage at få vist point.",
|
"Points may take up to 10 days to be displayed.": "Det kan tage op til 10 dage at få vist point.",
|
||||||
"Points needed to level up": "Point nødvendige for at stige i niveau",
|
"Points needed to level up": "Point nødvendige for at stige i niveau",
|
||||||
"Points needed to stay on level": "Point nødvendige for at holde sig på niveau",
|
"Points needed to stay on level": "Point nødvendige for at holde sig på niveau",
|
||||||
|
"Points to be deducted now": "Point, der skal trækkes nu",
|
||||||
"Points used": "Points used",
|
"Points used": "Points used",
|
||||||
"Practical information": "Praktisk information",
|
"Practical information": "Praktisk information",
|
||||||
"Preliminary receipt": "Foreløbig kvittering",
|
"Preliminary receipt": "Foreløbig kvittering",
|
||||||
@@ -978,6 +979,8 @@
|
|||||||
"{amount, plural, one {Gift} other {Gifts}} added to your benefits": "{amount, plural, one {Gave} other {Gaver}} tilføjet til dine fordele",
|
"{amount, plural, one {Gift} other {Gifts}} added to your benefits": "{amount, plural, one {Gave} other {Gaver}} tilføjet til dine fordele",
|
||||||
"{amount} has been paid": "{amount} has been paid",
|
"{amount} has been paid": "{amount} has been paid",
|
||||||
"{amount} out of {total}": "{amount} ud af {total}",
|
"{amount} out of {total}": "{amount} ud af {total}",
|
||||||
|
"{amount} points": "{amount} point",
|
||||||
|
"{amount} points available": "{amount} point tilgængelige",
|
||||||
"{amount} {amount, plural, one {hotel} other {hotels}}": "{amount} {amount, plural, one {hotel} other {hoteller}}",
|
"{amount} {amount, plural, one {hotel} other {hotels}}": "{amount} {amount, plural, one {hotel} other {hoteller}}",
|
||||||
"{amount}/night per adult": "{amount}/nat per voksen",
|
"{amount}/night per adult": "{amount}/nat per voksen",
|
||||||
"{ancillary} added to your booking!": "{ancillary} tilføjet til din booking!",
|
"{ancillary} added to your booking!": "{ancillary} tilføjet til din booking!",
|
||||||
|
|||||||
@@ -630,6 +630,7 @@
|
|||||||
"Points may take up to 10 days to be displayed.": "Es kann bis zu 10 Tage dauern, bis Punkte angezeigt werden.",
|
"Points may take up to 10 days to be displayed.": "Es kann bis zu 10 Tage dauern, bis Punkte angezeigt werden.",
|
||||||
"Points needed to level up": "Punkte, die zum Levelaufstieg benötigt werden",
|
"Points needed to level up": "Punkte, die zum Levelaufstieg benötigt werden",
|
||||||
"Points needed to stay on level": "Erforderliche Punkte, um auf diesem Level zu bleiben",
|
"Points needed to stay on level": "Erforderliche Punkte, um auf diesem Level zu bleiben",
|
||||||
|
"Points to be deducted now": "Punkte, die jetzt abgezogen werden",
|
||||||
"Points used": "Points used",
|
"Points used": "Points used",
|
||||||
"Practical information": "Praktische Informationen",
|
"Practical information": "Praktische Informationen",
|
||||||
"Preliminary receipt": "Vorläufige Quittung",
|
"Preliminary receipt": "Vorläufige Quittung",
|
||||||
@@ -976,6 +977,8 @@
|
|||||||
"{amount, plural, one {Gift} other {Gifts}} added to your benefits": "{amount, plural, one {Geschenk zu Ihren Vorteilen hinzugefügt} other {Geschenke, die zu Ihren Vorteilen hinzugefügt werden}}",
|
"{amount, plural, one {Gift} other {Gifts}} added to your benefits": "{amount, plural, one {Geschenk zu Ihren Vorteilen hinzugefügt} other {Geschenke, die zu Ihren Vorteilen hinzugefügt werden}}",
|
||||||
"{amount} has been paid": "{amount} has been paid",
|
"{amount} has been paid": "{amount} has been paid",
|
||||||
"{amount} out of {total}": "{amount} von {total}",
|
"{amount} out of {total}": "{amount} von {total}",
|
||||||
|
"{amount} points": "{amount} Punkte",
|
||||||
|
"{amount} points available": "{amount} Punkte verfügbar",
|
||||||
"{amount} {amount, plural, one {hotel} other {hotels}}": "{amount} {amount, plural, one {hotel} other {hotels}}",
|
"{amount} {amount, plural, one {hotel} other {hotels}}": "{amount} {amount, plural, one {hotel} other {hotels}}",
|
||||||
"{amount}/night per adult": "{amount}/Nacht pro Erwachsenem",
|
"{amount}/night per adult": "{amount}/Nacht pro Erwachsenem",
|
||||||
"{ancillary} added to your booking!": "{ancillary} zu Ihrer Buchung hinzugefügt!",
|
"{ancillary} added to your booking!": "{ancillary} zu Ihrer Buchung hinzugefügt!",
|
||||||
|
|||||||
@@ -631,6 +631,7 @@
|
|||||||
"Points may take up to 10 days to be displayed.": "Points may take up to 10 days to be displayed.",
|
"Points may take up to 10 days to be displayed.": "Points may take up to 10 days to be displayed.",
|
||||||
"Points needed to level up": "Points needed to level up",
|
"Points needed to level up": "Points needed to level up",
|
||||||
"Points needed to stay on level": "Points needed to stay on level",
|
"Points needed to stay on level": "Points needed to stay on level",
|
||||||
|
"Points to be deducted now": "Points to be deducted now",
|
||||||
"Points used": "Points used",
|
"Points used": "Points used",
|
||||||
"Practical information": "Practical information",
|
"Practical information": "Practical information",
|
||||||
"Preliminary receipt": "Preliminary receipt",
|
"Preliminary receipt": "Preliminary receipt",
|
||||||
@@ -973,6 +974,8 @@
|
|||||||
"{amount, plural, one {Gift} other {Gifts}} added to your benefits": "{amount, plural, one {Gift} other {Gifts}} added to your benefits",
|
"{amount, plural, one {Gift} other {Gifts}} added to your benefits": "{amount, plural, one {Gift} other {Gifts}} added to your benefits",
|
||||||
"{amount} has been paid": "{amount} has been paid",
|
"{amount} has been paid": "{amount} has been paid",
|
||||||
"{amount} out of {total}": "{amount} out of {total}",
|
"{amount} out of {total}": "{amount} out of {total}",
|
||||||
|
"{amount} points": "{amount} points",
|
||||||
|
"{amount} points available": "{amount} points available",
|
||||||
"{amount} {amount, plural, one {hotel} other {hotels}}": "{amount} {amount, plural, one {hotel} other {hotels}}",
|
"{amount} {amount, plural, one {hotel} other {hotels}}": "{amount} {amount, plural, one {hotel} other {hotels}}",
|
||||||
"{amount}/night per adult": "{amount}/night per adult",
|
"{amount}/night per adult": "{amount}/night per adult",
|
||||||
"{ancillary} added to your booking!": "{ancillary} added to your booking!",
|
"{ancillary} added to your booking!": "{ancillary} added to your booking!",
|
||||||
|
|||||||
@@ -629,6 +629,7 @@
|
|||||||
"Points may take up to 10 days to be displayed.": "Pisteiden näyttäminen voi kestää jopa 10 päivää.",
|
"Points may take up to 10 days to be displayed.": "Pisteiden näyttäminen voi kestää jopa 10 päivää.",
|
||||||
"Points needed to level up": "Tarvitset vielä",
|
"Points needed to level up": "Tarvitset vielä",
|
||||||
"Points needed to stay on level": "Tällä tasolla pysymiseen tarvittavat pisteet",
|
"Points needed to stay on level": "Tällä tasolla pysymiseen tarvittavat pisteet",
|
||||||
|
"Points to be deducted now": "Nyt vähennettävät pisteet",
|
||||||
"Points used": "Points used",
|
"Points used": "Points used",
|
||||||
"Practical information": "Käytännön tietoa",
|
"Practical information": "Käytännön tietoa",
|
||||||
"Preliminary receipt": "Alustava kuitti",
|
"Preliminary receipt": "Alustava kuitti",
|
||||||
@@ -976,6 +977,8 @@
|
|||||||
"{amount, plural, one {Gift} other {Gifts}} added to your benefits": "{amount, plural, one {Lahja} other {Lahjat}} lisätty etuusi",
|
"{amount, plural, one {Gift} other {Gifts}} added to your benefits": "{amount, plural, one {Lahja} other {Lahjat}} lisätty etuusi",
|
||||||
"{amount} has been paid": "{amount} has been paid",
|
"{amount} has been paid": "{amount} has been paid",
|
||||||
"{amount} out of {total}": "{amount}/{total}",
|
"{amount} out of {total}": "{amount}/{total}",
|
||||||
|
"{amount} points": "{amount} pistettä",
|
||||||
|
"{amount} points available": "{amount} pistettä saatavilla",
|
||||||
"{amount} {amount, plural, one {hotel} other {hotels}}": "{amount} {amount, plural, one {hotelli} other {hotellit}}",
|
"{amount} {amount, plural, one {hotel} other {hotels}}": "{amount} {amount, plural, one {hotelli} other {hotellit}}",
|
||||||
"{amount}/night per adult": "{amount}/yötä aikuista kohti",
|
"{amount}/night per adult": "{amount}/yötä aikuista kohti",
|
||||||
"{ancillary} added to your booking!": "{ancillary} lisätty varaukseesi!",
|
"{ancillary} added to your booking!": "{ancillary} lisätty varaukseesi!",
|
||||||
|
|||||||
@@ -628,6 +628,7 @@
|
|||||||
"Points may take up to 10 days to be displayed.": "Det kan ta opptil 10 dager før poeng vises.",
|
"Points may take up to 10 days to be displayed.": "Det kan ta opptil 10 dager før poeng vises.",
|
||||||
"Points needed to level up": "Poeng som trengs for å komme opp i nivå",
|
"Points needed to level up": "Poeng som trengs for å komme opp i nivå",
|
||||||
"Points needed to stay on level": "Poeng som trengs for å holde seg på nivå",
|
"Points needed to stay on level": "Poeng som trengs for å holde seg på nivå",
|
||||||
|
"Points to be deducted now": "Poeng som trekkes nå",
|
||||||
"Points used": "Points used",
|
"Points used": "Points used",
|
||||||
"Practical information": "Praktisk informasjon",
|
"Practical information": "Praktisk informasjon",
|
||||||
"Preliminary receipt": "Foreløpig kvittering",
|
"Preliminary receipt": "Foreløpig kvittering",
|
||||||
@@ -972,6 +973,8 @@
|
|||||||
"{amount, plural, one {Gift} other {Gifts}} added to your benefits": "{amount, plural, one {Gave} other {Gaver}} lagt til fordelene dine",
|
"{amount, plural, one {Gift} other {Gifts}} added to your benefits": "{amount, plural, one {Gave} other {Gaver}} lagt til fordelene dine",
|
||||||
"{amount} has been paid": "{amount} has been paid",
|
"{amount} has been paid": "{amount} has been paid",
|
||||||
"{amount} out of {total}": "{amount} av {total}",
|
"{amount} out of {total}": "{amount} av {total}",
|
||||||
|
"{amount} points": "{amount} poeng",
|
||||||
|
"{amount} points available": "{amount} poeng tilgjengelig",
|
||||||
"{amount} {amount, plural, one {hotel} other {hotels}}": "{amount} {amount, plural, one {hotell} other {hoteller}}",
|
"{amount} {amount, plural, one {hotel} other {hotels}}": "{amount} {amount, plural, one {hotell} other {hoteller}}",
|
||||||
"{amount}/night per adult": "{amount}/natt per voksen",
|
"{amount}/night per adult": "{amount}/natt per voksen",
|
||||||
"{ancillary} added to your booking!": "{ancillary} lagt til bestillingen din!",
|
"{ancillary} added to your booking!": "{ancillary} lagt til bestillingen din!",
|
||||||
|
|||||||
@@ -628,6 +628,7 @@
|
|||||||
"Points may take up to 10 days to be displayed.": "Det kan ta upp till 10 dagar innan poäng visas.",
|
"Points may take up to 10 days to be displayed.": "Det kan ta upp till 10 dagar innan poäng visas.",
|
||||||
"Points needed to level up": "Poäng som behövs för att gå upp i nivå",
|
"Points needed to level up": "Poäng som behövs för att gå upp i nivå",
|
||||||
"Points needed to stay on level": "Poäng som behövs för att hålla sig på nivå",
|
"Points needed to stay on level": "Poäng som behövs för att hålla sig på nivå",
|
||||||
|
"Points to be deducted now": "Poäng som dras av nu",
|
||||||
"Points used": "Points used",
|
"Points used": "Points used",
|
||||||
"Practical information": "Praktisk information",
|
"Practical information": "Praktisk information",
|
||||||
"Preliminary receipt": "Preliminärt kvitto",
|
"Preliminary receipt": "Preliminärt kvitto",
|
||||||
@@ -976,6 +977,8 @@
|
|||||||
"{amount, plural, one {Gift} other {Gifts}} added to your benefits": "{amount, plural, one {Gåva} other {Gåvor}} läggs till dina förmåner",
|
"{amount, plural, one {Gift} other {Gifts}} added to your benefits": "{amount, plural, one {Gåva} other {Gåvor}} läggs till dina förmåner",
|
||||||
"{amount} has been paid": "{amount} has been paid",
|
"{amount} has been paid": "{amount} has been paid",
|
||||||
"{amount} out of {total}": "{amount} av {total}",
|
"{amount} out of {total}": "{amount} av {total}",
|
||||||
|
"{amount} points": "{amount} poäng",
|
||||||
|
"{amount} points available": "{amount} poäng tillgängliga",
|
||||||
"{amount} {amount, plural, one {hotel} other {hotels}}": "{amount} {amount, plural, one {hotell} other {hotell}}",
|
"{amount} {amount, plural, one {hotel} other {hotels}}": "{amount} {amount, plural, one {hotell} other {hotell}}",
|
||||||
"{amount}/night per adult": "{amount}/natt per vuxen",
|
"{amount}/night per adult": "{amount}/natt per vuxen",
|
||||||
"{ancillary} added to your booking!": "{ancillary} har lagts till i din bokning!",
|
"{ancillary} added to your booking!": "{ancillary} har lagts till i din bokning!",
|
||||||
|
|||||||
@@ -60,6 +60,7 @@ export interface SelectQuantityStepProps {
|
|||||||
|
|
||||||
export interface ConfirmationStepProps {
|
export interface ConfirmationStepProps {
|
||||||
savedCreditCards: CreditCard[] | null
|
savedCreditCards: CreditCard[] | null
|
||||||
|
user: User | null
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface StepsProps {
|
export interface StepsProps {
|
||||||
|
|||||||
@@ -185,7 +185,6 @@ export function trackAddAncillary(
|
|||||||
productName: ancillary?.title,
|
productName: ancillary?.title,
|
||||||
productUnits: quantityWithCard,
|
productUnits: quantityWithCard,
|
||||||
productPrice: ancillary?.price,
|
productPrice: ancillary?.price,
|
||||||
productPoints: ancillary?.points,
|
|
||||||
productCategory: ancillary?.categoryName,
|
productCategory: ancillary?.categoryName,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@@ -196,7 +195,6 @@ export function trackAddAncillary(
|
|||||||
productId: ancillary?.loyaltyCode,
|
productId: ancillary?.loyaltyCode,
|
||||||
productName: ancillary?.title,
|
productName: ancillary?.title,
|
||||||
productUnits: quantityWithPoints,
|
productUnits: quantityWithPoints,
|
||||||
productPrice: ancillary?.price,
|
|
||||||
productPoints: ancillary?.points,
|
productPoints: ancillary?.points,
|
||||||
productCategory: ancillary?.categoryName,
|
productCategory: ancillary?.categoryName,
|
||||||
})
|
})
|
||||||
|
|||||||
Reference in New Issue
Block a user