feat(SW-718) refactor: optimize rate selection and room scrolling

This commit is contained in:
Pontus Dreij
2025-01-28 18:33:10 +01:00
parent ab7b826cd2
commit eef7c222aa
4 changed files with 11 additions and 8 deletions

View File

@@ -27,16 +27,14 @@ export default function RateSummary({
const intl = useIntl()
const [isVisible, setIsVisible] = useState(false)
const { rateSummary } = useRateSelectionStore()
const { getSelectedRateSummary } = useRateSelectionStore()
useEffect(() => {
const timer = setTimeout(() => setIsVisible(true), 0)
return () => clearTimeout(timer)
}, [])
const selectedRateSummary = rateSummary.filter(
(summary): summary is Rate => summary !== null
)
const selectedRateSummary = getSelectedRateSummary()
if (selectedRateSummary.length === 0) return null

View File

@@ -193,7 +193,7 @@ export default function Rooms({
}
useEffect(() => {
setTimeout(() => {
requestAnimationFrame(() => {
const SCROLL_OFFSET = 100
const roomElements = document.querySelectorAll(`.${styles.roomContainer}`)
const index = selectedRates.findIndex((rate) => rate === undefined)
@@ -208,7 +208,7 @@ export default function Rooms({
behavior: "smooth",
})
}
}, 0)
})
}, [selectedRates])
return (

View File

@@ -30,6 +30,7 @@ interface RateSelectionState {
availablePackages,
roomCategories,
}: RateSummaryParams) => void
getSelectedRateSummary: () => Rate[]
}
export const useRateSelectionStore = create<RateSelectionState>((set, get) => ({
@@ -64,4 +65,8 @@ export const useRateSelectionStore = create<RateSelectionState>((set, get) => ({
set({ rateSummary: summaries })
},
getSelectedRateSummary: () => {
const { rateSummary } = get()
return rateSummary.filter((summary): summary is Rate => summary !== null)
},
}))

View File

@@ -14,8 +14,8 @@ export interface DefaultFilterOptions {
itemCode: string | undefined
}
export interface FilterValues {
[key: string]: boolean | undefined
export type FilterValues = {
[K in RoomPackageCodeEnum]?: boolean
}
export interface RoomFilterProps {
numberOfRooms: number