Merged in feat/SW-1452-city-page-filter-2 (pull request #1392)

feat(SW-1452): Added filtering and sorting to destination city pages

* feat(SW-1452): Added filtering and sorting to destination city pages

* feat(SW-1452): Added temporary component for country pages to avoid Context issues


Approved-by: Matilda Landström
This commit is contained in:
Erik Tiekstra
2025-02-25 13:02:38 +00:00
parent 8a564274c5
commit 3867baadd6
53 changed files with 1561 additions and 255 deletions

View File

@@ -1,3 +1,4 @@
import slugify from "slugify"
import { z } from "zod"
import { nullableArrayObjectValidator } from "@/utils/zod/arrayValidator"
@@ -5,7 +6,7 @@ import { nullableStringValidator } from "@/utils/zod/stringValidator"
import { FacilityEnum } from "@/types/enums/facilities"
export const detailedFacilitySchema = z.object({
const rawDetailedFacilitySchema = z.object({
filter: nullableStringValidator,
icon: nullableStringValidator,
id: z.nativeEnum(FacilityEnum),
@@ -14,8 +15,23 @@ export const detailedFacilitySchema = z.object({
sortOrder: z.number(),
})
export const detailedFacilitiesSchema = nullableArrayObjectValidator(
detailedFacilitySchema
).transform((facilities) =>
facilities.sort((a, b) => b.sortOrder - a.sortOrder)
function transformDetailedFacility(
data: z.output<typeof rawDetailedFacilitySchema>
) {
return {
...data,
slug: slugify(data.name, { lower: true, strict: true }),
}
}
export const detailedFacilitySchema = rawDetailedFacilitySchema.transform(
transformDetailedFacility
)
export const detailedFacilitiesSchema = nullableArrayObjectValidator(
rawDetailedFacilitySchema
).transform((facilities) =>
facilities
.sort((a, b) => b.sortOrder - a.sortOrder)
.map(transformDetailedFacility)
)