Skip to content

Commit 67c139d

Browse files
committed
feat: add members list to commission page
1 parent 5b947eb commit 67c139d

File tree

6 files changed

+80
-61
lines changed

6 files changed

+80
-61
lines changed

app/src/components/MembersList.tsx

+27
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
import Card from "./Card";
2+
import { locale, translate } from "@/locales";
3+
import styles from "@/styles/MembersList.module.scss";
4+
import { AssociationMembership, Member } from "@/types/aliases";
5+
import { useRouter } from "next/router";
6+
7+
export default function MembersList(props: {
8+
membership: AssociationMembership & { member: Member }[];
9+
}) {
10+
var router = useRouter();
11+
12+
return (
13+
<div className={styles.membersList}>
14+
<h1>{translate("committee", locale(router), { capitalize: true })}</h1>
15+
<div>
16+
{props.membership.map((m) => (
17+
<Card
18+
size="small"
19+
key={(m as any).id}
20+
member={m.member}
21+
membership={m}
22+
/>
23+
))}
24+
</div>
25+
</div>
26+
);
27+
}

app/src/pages/commissions/[slug].tsx

+25-1
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,14 @@
11
import DirectusImage from "@/components/DirectusImage";
2+
import MembersList from "@/components/MembersList";
23
import SocialsList from "@/components/SocialsList";
34
import { directus, populateLayoutProps } from "@/directus";
45
import { getTranslation, locale, queryTranslations } from "@/locales";
5-
import { Commission, SocialLink } from "@/types/aliases";
6+
import {
7+
AssociationMembership,
8+
Commission,
9+
Member,
10+
SocialLink,
11+
} from "@/types/aliases";
612
import { readItems } from "@directus/sdk";
713
import { GetServerSideProps, InferGetServerSidePropsType } from "next";
814
import { useRouter } from "next/router";
@@ -24,6 +30,7 @@ export default function Page(
2430
<Markdown className="text">{translation.description}</Markdown>
2531

2632
<SocialsList socials={props.socialLinks} />
33+
<MembersList membership={props.members} />
2734
</div>
2835
</div>
2936
);
@@ -32,6 +39,7 @@ export default function Page(
3239
export const getServerSideProps: GetServerSideProps<{
3340
commission: Commission;
3441
socialLinks: SocialLink[];
42+
members: (AssociationMembership & { member: Member })[];
3543
}> = populateLayoutProps(async (context) => {
3644
if (typeof context.params?.slug !== "string") {
3745
console.log(typeof context.params?.slug);
@@ -60,10 +68,26 @@ export const getServerSideProps: GetServerSideProps<{
6068
)
6169
.then((result) => result.map((s) => s.social_links_id))) as SocialLink[];
6270

71+
let members = (await directus().request(
72+
readItems("commission_memberships", {
73+
fields: [
74+
"*",
75+
{ member: ["*"] },
76+
//@ts-ignore
77+
{ translations: ["*"] },
78+
],
79+
filter: {
80+
level: { _eq: "committee" },
81+
commission: { _eq: commission.id },
82+
},
83+
})
84+
)) as (AssociationMembership & { member: Member })[];
85+
6386
return {
6487
props: {
6588
commission: commission,
6689
socialLinks: socialLinks,
90+
members: members,
6791
},
6892
};
6993
});

app/src/pages/index.tsx

+3-20
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,11 @@
11
import PreviewImage from "@/assets/galleryPreview.png";
22
import AssociationDescription from "@/components/AssociationDescription";
3-
import Card from "@/components/Card";
43
import DirectusImage from "@/components/DirectusImage";
4+
import MembersList from "@/components/MembersList";
55
import NewsCard from "@/components/NewsCard";
66
import PartnersList from "@/components/PartnersList";
77
import { directus, populateLayoutProps } from "@/directus";
8-
import {
9-
getTranslation,
10-
locale,
11-
queryTranslations,
12-
translate,
13-
} from "@/locales";
8+
import { getTranslation, queryTranslations } from "@/locales";
149
import styles from "@/styles/Homepage.module.scss";
1510
import {
1611
Association,
@@ -59,19 +54,7 @@ export default function Home(
5954
publicFiles={props.publicFiles}
6055
/>
6156

62-
<div className={styles.cardList}>
63-
<h1>{translate("committee", locale(router), { capitalize: true })}</h1>
64-
<div>
65-
{props.committee.map((m) => (
66-
<Card
67-
size="small"
68-
key={(m as any).id}
69-
member={m.member}
70-
membership={m}
71-
/>
72-
))}
73-
</div>
74-
</div>
57+
<MembersList membership={props.committee} />
7558
</>
7659
);
7760
}

app/src/styles/Homepage.module.scss

-24
Original file line numberDiff line numberDiff line change
@@ -66,27 +66,3 @@
6666
padding-right: 5rem;
6767
}
6868
}
69-
70-
.cardList {
71-
display: flex;
72-
flex-direction: column;
73-
row-gap: 1em;
74-
margin-top: 5rem;
75-
76-
border-radius: 3rem;
77-
background-color: variables.$white-background-color;
78-
width: 80%;
79-
80-
@media (max-width: 800px) {
81-
width: 100%;
82-
}
83-
84-
> div {
85-
display: grid;
86-
grid-gap: 1rem;
87-
grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
88-
align-items: center;
89-
justify-items: center;
90-
padding: 2rem;
91-
}
92-
}
+25
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
@use "./utilities/variables";
2+
3+
.membersList {
4+
display: flex;
5+
flex-direction: column;
6+
row-gap: 1em;
7+
margin-top: 5rem;
8+
9+
border-radius: 3rem;
10+
background-color: variables.$white-background-color;
11+
width: 80%;
12+
13+
@media (max-width: 800px) {
14+
width: 100%;
15+
}
16+
17+
> div {
18+
display: grid;
19+
grid-gap: 1rem;
20+
grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
21+
align-items: center;
22+
justify-items: center;
23+
padding: 2rem;
24+
}
25+
}

app/src/styles/globals.scss

-16
Original file line numberDiff line numberDiff line change
@@ -129,19 +129,3 @@ h4 {
129129
color: variables.$title-color;
130130
}
131131
}
132-
133-
.pageList {
134-
display: flex;
135-
flex-direction: row;
136-
flex-wrap: wrap;
137-
justify-content: center;
138-
gap: 3rem;
139-
140-
width: fit-content;
141-
142-
> :first-child {
143-
flex-basis: 100%;
144-
display: flex;
145-
justify-content: center;
146-
}
147-
}

0 commit comments

Comments
 (0)