added interaction between card council base and card council component

This commit is contained in:
zzzmlssqnzzz
2025-06-19 21:42:05 -04:00
parent 989b0af73f
commit 9b470e2ce8
3 changed files with 48 additions and 10 deletions

View File

@@ -21,11 +21,13 @@
align-items: center;
gap: 1rem;
background-color:transparent;
padding: 1.5rem;
border-radius: 20px;
padding:1.5rem;
color: #0A3D2A;
background-color: #E8FFD9;
max-width: 500px;
border-color:transparent;
background-image: linear-gradient(to bottom right, #E8FFD9, #97C583);
max-width: 450px;
height: 250px;
}
.profile-img{
@@ -35,13 +37,11 @@
.profile-img :global(img) {
object-fit: cover;
width: 100%;
height: 100%;
max-width: 100%;
}
</style>
<div class="card h-1/2 max-h-1/2 w-full max-w-1/6 rounded-lg border-4 p-4">
<div class="card">
<!-- <img class="size-4/5" src={placeholder} alt="Placeholder"> -->
<!-- <Avatar src={placeholder} {name} /> -->
<div class="avatar-container justify-left">
@@ -61,6 +61,6 @@
<p class="pb-2 text-xs">{positionDescription}</p>
<hr />
<p class="py-2 text-sm underline">{email}</p>
<a href="mailto:{email}" class="py-2 text-sm underline">{email}</a>
</div>
</div>

View File

@@ -1,7 +1,8 @@
<script>
let { name, position, image } = $props();
let { onViewProfile, name, position, image } = $props();
import placeholder from 'assets/placeholderAvatar.png';
import { Avatar } from '@skeletonlabs/skeleton-svelte';
</script>
<style>
@@ -68,7 +69,7 @@
<div class="info">
<div class="name">{name}</div>
<div class="role">{position}</div>
<a href="#" class="button">View Profile</a>
<button class="button" onclick={onViewProfile}>View Profile</button>
</div>
</div>

View File

@@ -27,6 +27,15 @@
president = member
}
})
let selectedMember = $state<CouncilMember | null>(null);
function handleViewProfile(member: CouncilMember) {
selectedMember = member;
}
// svelte-ignore state_referenced_locally
console.log(selectedMember)
</script>
<title> ECSESS council </title>
@@ -41,6 +50,7 @@
name={president.name}
position={president.position}
image={president.image}
onViewProfile={() => handleViewProfile(president!)}
></CouncilCardBase>
{/if}
</div>
@@ -51,6 +61,7 @@
name={councilMember.name}
position={councilMember.position}
image={councilMember.image}
onViewProfile={() => handleViewProfile(councilMember)}
></CardCouncilBase>
{/each}
{#each ureps as councilMember}
@@ -58,8 +69,34 @@
name={councilMember.name}
position={councilMember.position}
image={councilMember.image}
onViewProfile={() => handleViewProfile(councilMember)}
></CardCouncilBase>
{/each}
</div>
<!-- svelte-ignore a11y_no_static_element_interactions -->
{#if selectedMember}
<!-- svelte-ignore a11y_click_events_have_key_events -->
<div class="fixed inset-0 bg-black/60 flex justify-center items-center z-50"
onclick={() => (selectedMember = null)}
>
<CouncilCard
name={selectedMember.name}
position={selectedMember.position}
email={selectedMember.email}
positionDescription={selectedMember.positionDescription}
yearProgram={selectedMember.yearProgram}
image={selectedMember.image}
/>
</div>
{/if}
</div>
</Section>
<!-- <CouncilCard
name={vps[1].name}
position={vps[1].position}
email={vps[1].email}
positionDescription={vps[1].positionDescription}
yearProgram={vps[1].yearProgram}
image={vps[1].image}
></CouncilCard> -->