Skip to content
This repository was archived by the owner on Feb 10, 2025. It is now read-only.

Commit 01ea55b

Browse files
authored
Merge pull request #918 from City-of-Helsinki/fix-ui-ios-15-crashing
Fix UI ios 15 crashing
2 parents ebe0a68 + fd2ea72 commit 01ea55b

2 files changed

Lines changed: 45 additions & 51 deletions

File tree

apps/ui/components/single-search/FilterTagList.tsx

Lines changed: 37 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -45,48 +45,50 @@ const FilterTagList = ({
4545
}
4646
return t("searchForm:filters.duration", { unit });
4747
};
48+
49+
const sortedValues = [...formValueKeys].sort(
50+
(a, b) => filterOrder.indexOf(a) - filterOrder.indexOf(b)
51+
);
4852
return (
4953
<FilterTags data-test-id="search-form__filter--tags">
50-
{formValueKeys
51-
.toSorted((a, b) => filterOrder.indexOf(a) - filterOrder.indexOf(b))
52-
.map((formValueKey) => {
53-
// we don't want to show "showOnlyReservable" as a FilterTag, as it has its own checkbox in the form
54-
if (formValueKey === "showOnlyReservable") return null;
55-
const label = t(`searchForm:filters.${formValueKey}`, {
56-
label: formValueKey,
57-
value: formValues[formValueKey],
58-
count: Number(formValues[formValueKey]),
59-
});
60-
return multiSelectFilters.includes(formValueKey) ? (
61-
(formValues[formValueKey] ?? "").split(",").map((subValue) => (
62-
<StyledTag
63-
id={`filter-tag__${formValueKey}-${subValue}`}
64-
onClick={() => removeValue?.([subValue], formValueKey)}
65-
onDelete={() => removeValue?.([subValue], formValueKey)}
66-
key={`${formValueKey}-${subValue}`}
67-
deleteButtonAriaLabel={t(`searchForm:removeFilter`, {
68-
value: getFormSubValueLabel(formValueKey, subValue),
69-
})}
70-
>
71-
{getFormSubValueLabel(formValueKey, subValue)}
72-
</StyledTag>
73-
))
74-
) : (
54+
{sortedValues.map((formValueKey) => {
55+
// we don't want to show "showOnlyReservable" as a FilterTag, as it has its own checkbox in the form
56+
if (formValueKey === "showOnlyReservable") return null;
57+
const label = t(`searchForm:filters.${formValueKey}`, {
58+
label: formValueKey,
59+
value: formValues[formValueKey],
60+
count: Number(formValues[formValueKey]),
61+
});
62+
return multiSelectFilters.includes(formValueKey) ? (
63+
(formValues[formValueKey] ?? "").split(",").map((subValue) => (
7564
<StyledTag
76-
id={`filter-tag__${formValueKey}`}
77-
onDelete={() => removeValue?.([formValueKey])}
78-
key={formValueKey}
65+
id={`filter-tag__${formValueKey}-${subValue}`}
66+
onClick={() => removeValue?.([subValue], formValueKey)}
67+
onDelete={() => removeValue?.([subValue], formValueKey)}
68+
key={`${formValueKey}-${subValue}`}
7969
deleteButtonAriaLabel={t(`searchForm:removeFilter`, {
80-
value: label,
70+
value: getFormSubValueLabel(formValueKey, subValue),
8171
})}
8272
>
83-
{formValueKey === "duration" &&
84-
!Number.isNaN(Number(formValues.duration))
85-
? durationTranslation(Number(formValues.duration))
86-
: label}
73+
{getFormSubValueLabel(formValueKey, subValue)}
8774
</StyledTag>
88-
);
89-
})}
75+
))
76+
) : (
77+
<StyledTag
78+
id={`filter-tag__${formValueKey}`}
79+
onDelete={() => removeValue?.([formValueKey])}
80+
key={formValueKey}
81+
deleteButtonAriaLabel={t(`searchForm:removeFilter`, {
82+
value: label,
83+
})}
84+
>
85+
{formValueKey === "duration" &&
86+
!Number.isNaN(Number(formValues.duration))
87+
? durationTranslation(Number(formValues.duration))
88+
: label}
89+
</StyledTag>
90+
);
91+
})}
9092
{formValueKeys.filter((key) => key !== "showOnlyReservable").length >
9193
0 && (
9294
<ResetButton

apps/ui/pages/search/single.tsx

Lines changed: 8 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -21,14 +21,15 @@ import {
2121
} from "common/types/gql-types";
2222
import { Container } from "common";
2323
import { filterNonNullable } from "common/src/helpers";
24-
import { capitalize, singleSearchUrl } from "@/modules/util";
24+
import { capitalize, fromUIDate, singleSearchUrl } from "@/modules/util";
2525
import { isBrowser } from "@/modules/const";
2626
import { RESERVATION_UNITS } from "@/modules/queries/reservationUnit";
2727
import SearchForm from "@/components/single-search/SearchForm";
2828
import Sorting from "@/components/form/Sorting";
2929
import ListWithPagination from "@/components/common/ListWithPagination";
3030
import ReservationUnitCard from "@/components/single-search/ReservationUnitCard";
3131
import BreadcrumbWrapper from "@/components/common/BreadcrumbWrapper";
32+
import { toApiDate } from "common/src/common/util";
3233

3334
const pagingLimit = 36;
3435

@@ -81,15 +82,10 @@ const processVariables = (values: Record<string, string>, language: string) => {
8182
const sortCriteria = ["name", "unitName"].includes(values.sort)
8283
? `${values.sort}${capitalize(language)}`
8384
: values.sort;
84-
const startArray = values.startDate?.split(".");
85-
const endArray = values.endDate?.split(".");
86-
// Add leading zero to day and month if needed
87-
for (let i = 0; i < 2; i += 1) {
88-
if (startArray && startArray.length >= i && startArray[i]?.length === 1)
89-
startArray[i] = `0${startArray[i]}`;
90-
if (endArray && endArray.length >= i && endArray[i]?.length === 1)
91-
endArray[i] = `0${endArray[i]}`;
92-
}
85+
86+
const startDate = fromUIDate(values.startDate);
87+
const endDate = fromUIDate(values.endDate);
88+
9389
const replaceIfExists = (condition: string | boolean, returnObject: object) =>
9490
condition && returnObject;
9591
return {
@@ -128,14 +124,10 @@ const processVariables = (values: Record<string, string>, language: string) => {
128124
equipments: values.equipments?.split(",").map(Number),
129125
}),
130126
...replaceIfExists(values.startDate, {
131-
reservableDateStart: values.startDate
132-
? startArray.toReversed().join("-")
133-
: null,
127+
reservableDateStart: startDate ? toApiDate(startDate) : null,
134128
}),
135129
...replaceIfExists(values.endDate, {
136-
reservableDateEnd: values.endDate
137-
? endArray.toReversed().join("-")
138-
: null,
130+
reservableDateEnd: endDate ? toApiDate(endDate) : null,
139131
}),
140132
...replaceIfExists(values.timeBegin, {
141133
reservableTimeStart: values.timeBegin,

0 commit comments

Comments
 (0)