Merged in feat/SW-2113-allow-feature-combinations (pull request #1719)

Feat/SW-2113 allow feature combinations

* feat(SW-2113): Refactor features data to be fetched on filter room filter change

* feat(SW-2113): added loading state

* fix: now clear room selection when applying filter and room doesnt exists. And added room features to mobile summary

* fix

* fix: add package to price details

* feat(SW-2113): added buttons to room filter

* fix: active room

* fix: remove console log

* fix: added form and close handler to room package filter

* fix: add restriction so you cannot select pet room with allergy room and vice versa

* fix: fixes from review feedback

* fix

* fix: hide modify button if on nextcoming rooms if no selection is made, and adjust filter logic in togglePackage

* fix: forgot to use roomFeatureCodes from input..

* fix: naming


Approved-by: Simon.Emanuelsson
This commit is contained in:
Tobias Johansson
2025-04-07 11:36:34 +00:00
parent 8d34e1c8bb
commit e6ae6ff650
31 changed files with 725 additions and 359 deletions

View File

@@ -20,9 +20,10 @@ import { RateEnum } from "@/types/enums/rate"
export default function SelectedRoomPanel() {
const intl = useIntl()
const { isUserLoggedIn, roomCategories } = useRatesStore((state) => ({
const { isUserLoggedIn, roomCategories, rooms } = useRatesStore((state) => ({
isUserLoggedIn: state.isUserLoggedIn,
roomCategories: state.roomCategories,
rooms: state.rooms,
}))
const {
actions: { modifyRate },
@@ -89,6 +90,10 @@ export default function SelectedRoomPanel() {
return null
}
const showModifyButton =
isMainRoom ||
(!isMainRoom && rooms.slice(0, roomNr).every((room) => room.selectedRate))
return (
<div className={styles.selectedRoomPanel}>
<div className={styles.content}>
@@ -118,14 +123,16 @@ export default function SelectedRoomPanel() {
width={600}
/>
) : null}
<div className={styles.modifyButtonContainer}>
<Button clean onClick={modifyRate}>
<Chip size="small" variant="uiTextHighContrast">
<MaterialIcon icon="edit_square" />
{intl.formatMessage({ id: "Modify" })}
</Chip>
</Button>
</div>
{showModifyButton && (
<div className={styles.modifyButtonContainer}>
<Button clean onClick={modifyRate}>
<Chip size="small" variant="uiTextHighContrast">
<MaterialIcon icon="edit_square" />
{intl.formatMessage({ id: "Modify" })}
</Chip>
</Button>
</div>
)}
</div>
</div>
)