workadventure/front/src/Components/Chat/ChatPlayerName.svelte

50 lines
1.3 KiB
Svelte
Raw Normal View History

<script lang="ts">
2021-12-06 16:12:37 +01:00
import type { PlayerInterface } from "../../Phaser/Game/PlayerInterface";
import { chatSubMenuVisibilityStore } from "../../Stores/ChatStore";
import { onDestroy, onMount } from "svelte";
import type { Unsubscriber } from "svelte/store";
2021-07-13 11:00:32 +02:00
import ChatSubMenu from "./ChatSubMenu.svelte";
2021-07-13 11:00:32 +02:00
export let player: PlayerInterface;
export let line: number;
2021-07-13 11:00:32 +02:00
let isSubMenuOpen: boolean;
let chatSubMenuVisivilytUnsubcribe: Unsubscriber;
2021-07-13 11:00:32 +02:00
function openSubMenu() {
chatSubMenuVisibilityStore.openSubMenu(player.name, line);
}
2021-07-13 11:00:32 +02:00
onMount(() => {
chatSubMenuVisivilytUnsubcribe = chatSubMenuVisibilityStore.subscribe((newValue) => {
2021-12-06 16:12:37 +01:00
isSubMenuOpen = newValue === player.name + line;
});
});
2021-07-13 11:00:32 +02:00
onDestroy(() => {
chatSubMenuVisivilytUnsubcribe();
2021-12-06 16:12:37 +01:00
});
</script>
2021-07-13 11:00:32 +02:00
<span class="subMenu">
<span class="chatPlayerName" style="color: {player.color || 'white'}" on:click={openSubMenu}>
2021-12-06 16:12:37 +01:00
{player.name}
2021-07-13 11:00:32 +02:00
</span>
{#if isSubMenuOpen}
2021-12-06 16:12:37 +01:00
<ChatSubMenu {player} />
2021-07-13 11:00:32 +02:00
{/if}
</span>
<style lang="scss">
2021-12-06 16:12:37 +01:00
span.subMenu {
display: inline-block;
}
span.chatPlayerName {
margin-left: 3px;
}
.chatPlayerName:hover {
text-decoration: underline;
cursor: pointer;
2021-07-13 11:00:32 +02:00
}
2021-12-06 16:12:37 +01:00
</style>