Merged in fix(BOOK-659)-multiroom-name-check (pull request #3384)

fix(BOOK-659): trim names for multiroom booking

* fix(BOOK-659): trim names for multiroom booking


Approved-by: Matilda Haneling
This commit is contained in:
Matilda Landström
2025-12-30 10:02:36 +00:00
parent d2ffb32f84
commit 15626d49af
4 changed files with 27 additions and 28 deletions

View File

@@ -45,6 +45,7 @@ export function Blocks({ blocks }: BlocksProps) {
case BlocksEnums.block.FullWidthCampaign: case BlocksEnums.block.FullWidthCampaign:
return ( return (
<FullWidthCampaign <FullWidthCampaign
key={`${block.typename}-${idx}`}
content={block.full_width_campaign} content={block.full_width_campaign}
headingLevel={headingLevel} headingLevel={headingLevel}
/> />

View File

@@ -7,9 +7,9 @@ import { useIntl } from "react-intl"
import { usePhoneNumberParsing } from "@scandic-hotels/common/hooks/usePhoneNumberParsing" import { usePhoneNumberParsing } from "@scandic-hotels/common/hooks/usePhoneNumberParsing"
import { getDefaultCountryFromLang } from "@scandic-hotels/common/utils/phone" import { getDefaultCountryFromLang } from "@scandic-hotels/common/utils/phone"
import Footnote from "@scandic-hotels/design-system/Footnote"
import CountrySelect from "@scandic-hotels/design-system/Form/Country" import CountrySelect from "@scandic-hotels/design-system/Form/Country"
import Phone from "@scandic-hotels/design-system/Form/Phone" import Phone from "@scandic-hotels/design-system/Form/Phone"
import { Typography } from "@scandic-hotels/design-system/Typography"
import { useFormTracking } from "@scandic-hotels/tracking/useFormTracking" import { useFormTracking } from "@scandic-hotels/tracking/useFormTracking"
import { useBookingFlowConfig } from "../../../../bookingFlowConfig/bookingFlowConfigContext" import { useBookingFlowConfig } from "../../../../bookingFlowConfig/bookingFlowConfigContext"
@@ -198,17 +198,14 @@ export default function Details() {
<JoinScandicCard updateDetailsStore={updateDetailsStore} /> <JoinScandicCard updateDetailsStore={updateDetailsStore} />
)} )}
<div className={styles.container}> <div className={styles.container}>
<Footnote <Typography variant="Title/Overline/sm" className={styles.fullWidth}>
color="uiTextHighContrast" <p>
textTransform="uppercase" {intl.formatMessage({
type="label" id: "enterDetails.roomInfo.title",
className={styles.fullWidth} defaultMessage: "Guest information",
> })}
{intl.formatMessage({ </p>
id: "enterDetails.roomInfo.title", </Typography>
defaultMessage: "Guest information",
})}
</Footnote>
<div <div
ref={(el) => { ref={(el) => {
refs.current.firstName = el refs.current.firstName = el

View File

@@ -61,8 +61,10 @@ export function getMultiroomDetailsSchema(
(data) => (data) =>
!crossValidationData.some( !crossValidationData.some(
(room) => (room) =>
room.firstName?.toLowerCase() === data.firstName.toLowerCase() && room.firstName?.toLowerCase().trim() ===
room.lastName?.toLowerCase() === data.lastName.toLowerCase() data.firstName.toLowerCase().trim() &&
room.lastName?.toLowerCase().trim() ===
data.lastName.toLowerCase().trim()
), ),
{ {
message: multiroomErrors.FIRST_AND_LAST_NAME_UNIQUE, message: multiroomErrors.FIRST_AND_LAST_NAME_UNIQUE,
@@ -73,8 +75,10 @@ export function getMultiroomDetailsSchema(
(data) => (data) =>
!crossValidationData.some( !crossValidationData.some(
(room) => (room) =>
room.firstName?.toLowerCase() === data.firstName.toLowerCase() && room.firstName?.toLowerCase().trim() ===
room.lastName?.toLowerCase() === data.lastName.toLowerCase() data.firstName.toLowerCase().trim() &&
room.lastName?.toLowerCase().trim() ===
data.lastName.toLowerCase().trim()
), ),
{ {
message: multiroomErrors.FIRST_AND_LAST_NAME_UNIQUE, message: multiroomErrors.FIRST_AND_LAST_NAME_UNIQUE,

View File

@@ -7,9 +7,9 @@ import { useIntl } from "react-intl"
import { usePhoneNumberParsing } from "@scandic-hotels/common/hooks/usePhoneNumberParsing" import { usePhoneNumberParsing } from "@scandic-hotels/common/hooks/usePhoneNumberParsing"
import { getDefaultCountryFromLang } from "@scandic-hotels/common/utils/phone" import { getDefaultCountryFromLang } from "@scandic-hotels/common/utils/phone"
import Footnote from "@scandic-hotels/design-system/Footnote"
import CountrySelect from "@scandic-hotels/design-system/Form/Country" import CountrySelect from "@scandic-hotels/design-system/Form/Country"
import Phone from "@scandic-hotels/design-system/Form/Phone" import Phone from "@scandic-hotels/design-system/Form/Phone"
import { Typography } from "@scandic-hotels/design-system/Typography"
import { useFormTracking } from "@scandic-hotels/tracking/useFormTracking" import { useFormTracking } from "@scandic-hotels/tracking/useFormTracking"
import { useBookingFlowConfig } from "../../../../bookingFlowConfig/bookingFlowConfigContext" import { useBookingFlowConfig } from "../../../../bookingFlowConfig/bookingFlowConfigContext"
@@ -208,17 +208,14 @@ export default function Details({ user }: DetailsProps) {
<JoinScandicCard updateDetailsStore={updateDetailsStore} /> <JoinScandicCard updateDetailsStore={updateDetailsStore} />
) : null} ) : null}
<div className={styles.container}> <div className={styles.container}>
<Footnote <Typography variant="Title/Overline/sm" className={styles.fullWidth}>
color="uiTextHighContrast" <p>
textTransform="uppercase" {intl.formatMessage({
type="label" id: "enterDetails.roomInfo.title",
className={styles.fullWidth} defaultMessage: "Guest information",
> })}
{intl.formatMessage({ </p>
id: "enterDetails.roomInfo.title", </Typography>
defaultMessage: "Guest information",
})}
</Footnote>
<div <div
ref={(el) => { ref={(el) => {
refs.current.firstName = el refs.current.firstName = el