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

Commit 1350ed3

Browse files
committed
fix: tabs breaking mobile layout
1 parent 428132b commit 1350ed3

3 files changed

Lines changed: 64 additions & 58 deletions

File tree

apps/admin-ui/src/spa/recurring-reservations/application-rounds/[id]/allocation/index.tsx

Lines changed: 5 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,16 @@ import {
1919
type ApplicationRoundNode,
2020
type ReservationUnitNode,
2121
} from "common/types/gql-types";
22-
import { breakpoints } from "common";
2322
import { base64encode, filterNonNullable } from "common/src/helpers";
2423
import { SearchTags } from "@/component/SearchTags";
2524
import Loader from "@/component/Loader";
2625
import BreadcrumbWrapper from "@/component/BreadcrumbWrapper";
2726
import { useOptions } from "@/component/my-units/hooks";
28-
import { Container as BaseContainer, autoGridCss } from "@/styles/layout";
27+
import {
28+
Container as BaseContainer,
29+
TabWrapper,
30+
autoGridCss,
31+
} from "@/styles/layout";
2932
import { useNotification } from "@/context/NotificationContext";
3033
import {
3134
ALLOCATION_POLL_INTERVAL,
@@ -119,18 +122,6 @@ const MoreWrapper = styled(ShowAllContainer)`
119122
}
120123
`;
121124

122-
// Tab causes horizontal overflow without this
123-
// because it's inside a grid so an element with fixed width and no max-width breaks the grid
124-
const TabWrapper = styled.div`
125-
max-width: 95vw;
126-
@media (width > ${breakpoints.m}) {
127-
max-width: min(
128-
calc(95vw - var(--main-menu-width) - 2 * var(--spacing-layout-m)),
129-
var(--container-width-xl)
130-
);
131-
}
132-
`;
133-
134125
type PriorityFilterOptions = { label: string; value: 200 | 300 };
135126
type PkFilterOptions = { label: string; value: number };
136127

apps/admin-ui/src/spa/recurring-reservations/application-rounds/[id]/review/Review.tsx

Lines changed: 46 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import {
1414
type UnitNode,
1515
} from "common/types/gql-types";
1616
import { ButtonLikeLink } from "@/component/ButtonLikeLink";
17-
import { Container } from "@/styles/layout";
17+
import { Container, TabWrapper } from "@/styles/layout";
1818
import { ApplicationRoundStatusTag } from "../../ApplicationRoundStatusTag";
1919
import TimeframeStatus from "../../TimeframeStatus";
2020
import { ApplicationDataLoader } from "./ApplicationDataLoader";
@@ -132,49 +132,51 @@ export function Review({ applicationRound }: ReviewProps): JSX.Element | null {
132132
)}
133133
</AlignEndContainer>
134134
</Header>
135-
<Tabs initiallyActiveTab={activeTabIndex}>
136-
<Tabs.TabList>
137-
<Tabs.Tab onClick={() => handleTabChange("applications")}>
138-
{t("ApplicationRound.applications")}
139-
</Tabs.Tab>
140-
<Tabs.Tab onClick={() => handleTabChange("events")}>
141-
{t("ApplicationRound.appliedReservations")}
142-
</Tabs.Tab>
143-
<Tabs.Tab onClick={() => handleTabChange("allocated")}>
144-
{t("ApplicationRound.allocatedReservations")}
145-
</Tabs.Tab>
146-
</Tabs.TabList>
147-
<Tabs.TabPanel>
148-
<TabContent>
149-
<Filters units={unitPks} />
150-
<ApplicationDataLoader
151-
applicationRoundPk={applicationRound.pk ?? 0}
152-
/>
153-
</TabContent>
154-
</Tabs.TabPanel>
155-
<Tabs.TabPanel>
156-
<TabContent>
157-
<Filters units={unitPks} statusOption="event" />
158-
<ApplicationEventDataLoader
159-
applicationRoundPk={applicationRound.pk ?? 0}
160-
/>
161-
</TabContent>
162-
</Tabs.TabPanel>
163-
<Tabs.TabPanel>
164-
<TabContent>
165-
<Filters
166-
units={unitPks}
167-
reservationUnits={reseevationUnitOptions}
168-
enableWeekday
169-
enableReservationUnit
170-
statusOption="eventShort"
171-
/>
172-
<AllocatedEventDataLoader
173-
applicationRoundPk={applicationRound.pk ?? 0}
174-
/>
175-
</TabContent>
176-
</Tabs.TabPanel>
177-
</Tabs>
135+
<TabWrapper>
136+
<Tabs initiallyActiveTab={activeTabIndex}>
137+
<Tabs.TabList>
138+
<Tabs.Tab onClick={() => handleTabChange("applications")}>
139+
{t("ApplicationRound.applications")}
140+
</Tabs.Tab>
141+
<Tabs.Tab onClick={() => handleTabChange("events")}>
142+
{t("ApplicationRound.appliedReservations")}
143+
</Tabs.Tab>
144+
<Tabs.Tab onClick={() => handleTabChange("allocated")}>
145+
{t("ApplicationRound.allocatedReservations")}
146+
</Tabs.Tab>
147+
</Tabs.TabList>
148+
<Tabs.TabPanel>
149+
<TabContent>
150+
<Filters units={unitPks} />
151+
<ApplicationDataLoader
152+
applicationRoundPk={applicationRound.pk ?? 0}
153+
/>
154+
</TabContent>
155+
</Tabs.TabPanel>
156+
<Tabs.TabPanel>
157+
<TabContent>
158+
<Filters units={unitPks} statusOption="event" />
159+
<ApplicationEventDataLoader
160+
applicationRoundPk={applicationRound.pk ?? 0}
161+
/>
162+
</TabContent>
163+
</Tabs.TabPanel>
164+
<Tabs.TabPanel>
165+
<TabContent>
166+
<Filters
167+
units={unitPks}
168+
reservationUnits={reseevationUnitOptions}
169+
enableWeekday
170+
enableReservationUnit
171+
statusOption="eventShort"
172+
/>
173+
<AllocatedEventDataLoader
174+
applicationRoundPk={applicationRound.pk ?? 0}
175+
/>
176+
</TabContent>
177+
</Tabs.TabPanel>
178+
</Tabs>
179+
</TabWrapper>
178180
</Container>
179181
);
180182
}

apps/admin-ui/src/styles/layout.tsx

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -229,3 +229,16 @@ export const Span6 = styled.div`
229229
export const Span12 = styled.div`
230230
grid-column: span 12;
231231
`;
232+
233+
// Tab causes horizontal overflow without this
234+
// we use grids primarily and components inside grid without max-width overflow.
235+
// Because of side navigation we have to some silly calculations here.
236+
export const TabWrapper = styled.div`
237+
max-width: 95vw;
238+
@media (width > ${breakpoints.m}) {
239+
max-width: min(
240+
calc(95vw - var(--main-menu-width) - 2 * var(--spacing-layout-m)),
241+
var(--container-width-xl)
242+
);
243+
}
244+
`;

0 commit comments

Comments
 (0)