added interaction between card council base and card council component
This commit is contained in:
@@ -21,11 +21,13 @@
|
|||||||
align-items: center;
|
align-items: center;
|
||||||
gap: 1rem;
|
gap: 1rem;
|
||||||
background-color:transparent;
|
background-color:transparent;
|
||||||
padding: 1.5rem;
|
|
||||||
border-radius: 20px;
|
border-radius: 20px;
|
||||||
|
padding:1.5rem;
|
||||||
color: #0A3D2A;
|
color: #0A3D2A;
|
||||||
background-color: #E8FFD9;
|
border-color:transparent;
|
||||||
max-width: 500px;
|
background-image: linear-gradient(to bottom right, #E8FFD9, #97C583);
|
||||||
|
max-width: 450px;
|
||||||
|
height: 250px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.profile-img{
|
.profile-img{
|
||||||
@@ -35,13 +37,11 @@
|
|||||||
|
|
||||||
.profile-img :global(img) {
|
.profile-img :global(img) {
|
||||||
object-fit: cover;
|
object-fit: cover;
|
||||||
width: 100%;
|
max-width: 100%;
|
||||||
height: 100%;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
</style>
|
</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"> -->
|
<!-- <img class="size-4/5" src={placeholder} alt="Placeholder"> -->
|
||||||
<!-- <Avatar src={placeholder} {name} /> -->
|
<!-- <Avatar src={placeholder} {name} /> -->
|
||||||
<div class="avatar-container justify-left">
|
<div class="avatar-container justify-left">
|
||||||
@@ -61,6 +61,6 @@
|
|||||||
<p class="pb-2 text-xs">{positionDescription}</p>
|
<p class="pb-2 text-xs">{positionDescription}</p>
|
||||||
<hr />
|
<hr />
|
||||||
|
|
||||||
<p class="py-2 text-sm underline">{email}</p>
|
<a href="mailto:{email}" class="py-2 text-sm underline">{email}</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
<script>
|
<script>
|
||||||
let { name, position, image } = $props();
|
let { onViewProfile, name, position, image } = $props();
|
||||||
import placeholder from 'assets/placeholderAvatar.png';
|
import placeholder from 'assets/placeholderAvatar.png';
|
||||||
import { Avatar } from '@skeletonlabs/skeleton-svelte';
|
import { Avatar } from '@skeletonlabs/skeleton-svelte';
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
@@ -68,7 +69,7 @@
|
|||||||
<div class="info">
|
<div class="info">
|
||||||
<div class="name">{name}</div>
|
<div class="name">{name}</div>
|
||||||
<div class="role">{position}</div>
|
<div class="role">{position}</div>
|
||||||
<a href="#" class="button">View Profile</a>
|
<button class="button" onclick={onViewProfile}>View Profile</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -27,6 +27,15 @@
|
|||||||
president = member
|
president = member
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
let selectedMember = $state<CouncilMember | null>(null);
|
||||||
|
|
||||||
|
function handleViewProfile(member: CouncilMember) {
|
||||||
|
selectedMember = member;
|
||||||
|
}
|
||||||
|
|
||||||
|
// svelte-ignore state_referenced_locally
|
||||||
|
console.log(selectedMember)
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<title> ECSESS council </title>
|
<title> ECSESS council </title>
|
||||||
@@ -41,6 +50,7 @@
|
|||||||
name={president.name}
|
name={president.name}
|
||||||
position={president.position}
|
position={president.position}
|
||||||
image={president.image}
|
image={president.image}
|
||||||
|
onViewProfile={() => handleViewProfile(president!)}
|
||||||
></CouncilCardBase>
|
></CouncilCardBase>
|
||||||
{/if}
|
{/if}
|
||||||
</div>
|
</div>
|
||||||
@@ -51,6 +61,7 @@
|
|||||||
name={councilMember.name}
|
name={councilMember.name}
|
||||||
position={councilMember.position}
|
position={councilMember.position}
|
||||||
image={councilMember.image}
|
image={councilMember.image}
|
||||||
|
onViewProfile={() => handleViewProfile(councilMember)}
|
||||||
></CardCouncilBase>
|
></CardCouncilBase>
|
||||||
{/each}
|
{/each}
|
||||||
{#each ureps as councilMember}
|
{#each ureps as councilMember}
|
||||||
@@ -58,8 +69,34 @@
|
|||||||
name={councilMember.name}
|
name={councilMember.name}
|
||||||
position={councilMember.position}
|
position={councilMember.position}
|
||||||
image={councilMember.image}
|
image={councilMember.image}
|
||||||
|
onViewProfile={() => handleViewProfile(councilMember)}
|
||||||
></CardCouncilBase>
|
></CardCouncilBase>
|
||||||
{/each}
|
{/each}
|
||||||
</div>
|
</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>
|
</div>
|
||||||
</Section>
|
</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> -->
|
||||||
|
|||||||
Reference in New Issue
Block a user