fix(SW-957 SW-958): Make selected EnterDetailsCards clickable

This commit is contained in:
Arvid Norlin
2024-11-21 14:48:18 +01:00
parent 8a9cfc5da4
commit ac0d671811
4 changed files with 23 additions and 1 deletions

View File

@@ -76,6 +76,9 @@ export default function BedType({ bedTypes }: BedTypeProps) {
subtitle={width} subtitle={width}
title={roomType.description} title={roomType.description}
value={roomType.value} value={roomType.value}
handleSelectedOnClick={
bedType === roomType.value ? completeStep : undefined
}
/> />
) )
})} })}

View File

@@ -97,6 +97,9 @@ export default function Breakfast({ packages }: BreakfastProps) {
})} })}
title={intl.formatMessage({ id: "Breakfast buffet" })} title={intl.formatMessage({ id: "Breakfast buffet" })}
value={pkg.code} value={pkg.code}
handleSelectedOnClick={
breakfast === pkg.code ? completeStep : undefined
}
/> />
))} ))}
<RadioCard <RadioCard
@@ -113,6 +116,9 @@ export default function Breakfast({ packages }: BreakfastProps) {
})} })}
title={intl.formatMessage({ id: "No breakfast" })} title={intl.formatMessage({ id: "No breakfast" })}
value="false" value="false"
handleSelectedOnClick={
breakfast === "false" ? completeStep : undefined
}
/> />
</form> </form>
</FormProvider> </FormProvider>

View File

@@ -12,6 +12,7 @@ interface BaseCardProps
title: React.ReactNode title: React.ReactNode
type: "checkbox" | "radio" type: "checkbox" | "radio"
value?: string value?: string
handleSelectedOnClick?: () => void
} }
interface ListCardProps extends BaseCardProps { interface ListCardProps extends BaseCardProps {

View File

@@ -25,10 +25,22 @@ export default function Card({
title, title,
type, type,
value, value,
handleSelectedOnClick,
}: CardProps) { }: CardProps) {
const { register } = useFormContext() const { register } = useFormContext()
function onLabelClick(event: React.MouseEvent) {
// Preventing click event on label elements firing twice: https://github.com/facebook/react/issues/14295
event.preventDefault()
handleSelectedOnClick?.()
}
return ( return (
<label className={styles.label} data-declined={declined} tabIndex={0}> <label
className={styles.label}
data-declined={declined}
tabIndex={0}
onClick={handleSelectedOnClick ? onLabelClick : undefined}
>
<Caption className={styles.title} color="burgundy" type="label" uppercase> <Caption className={styles.title} color="burgundy" type="label" uppercase>
{title} {title}
</Caption> </Caption>