Available Events
Events
boardCreated
- emitted when the board is created and the boardAPI is availablecheckmate
- emitted when one player is matedstalemate
- emitted when the game ends in stalematedraw
- emitted when the game ends in a drawcheck
- emitted when one player is in checkpromotion
- emitted when a pawn is promotedmove
- emitted when a move is made
Here you can see the vue.js defineEmits:
ts
const emit = defineEmits<{
(e: 'boardCreated', boardApi: BoardApi): void; // emits boardAPI
(e: 'checkmate', isMated: PieceColor): void; // emits the color of the mated player
(e: 'stalemate'): void; // just emits stalemate, the value is not interesting
(e: 'draw'): void; // same for draw
(e: 'check', isInCheck: PieceColor): void; // emits color who is in check
(e: 'promotion', promotion: PromotionEvent): void; // emits information about the promotion
(e: 'move', move: MoveEvent): void; // emits information about the move
}>();
Listening for Events
In the following examples you will see an alert when an event was emitted.
Hit the play button, to see the events in action.
Check
vue
<script setup>
import { TheChessboard } from 'vue3-chessboard';
import 'vue3-chessboard/style.css';
function handleCheck(isInCheck) {
alert(`${isInCheck} is in Check`);
}
</script>
<template>
<TheChessboard @check="handleCheck" />
</template>
vue
<script setup lang="ts">
import { TheChessboard, type PieceColor } from 'vue3-chessboard';
import 'vue3-chessboard/style.css';
function handleCheck(isInCheck: PieceColor) {
alert(`${isInCheck} is in Check`);
}
</script>
<template>
<TheChessboard @check="handleCheck" />
</template>
Move
You can listen of moves on the board and get information about the move
vue
<script setup>
import { TheChessboard } from 'vue3-chessboard';
import 'vue3-chessboard/style.css';
function handleMove(move) {
console.log(move);
}
</script>
<template>
<TheChessboard @move="handleMove" />
</template>
vue
<script setup lang="ts">
import { TheChessboard, type MoveEvent } from 'vue3-chessboard';
import 'vue3-chessboard/style.css';
function handleMove(move: MoveEvent) {
console.log(move);
}
</script>
<template>
<TheChessboard @move="handleMove" />
</template>
Emitted values:
Checkmate
vue
<script setup>
import { TheChessboard } from 'vue3-chessboard';
import 'vue3-chessboard/style.css';
function handleCheckmate(isMated) {
alert(`${isMated} is mated`);
}
</script>
<template>
<TheChessboard @checkmate="handleCheckmate" />
</template>
vue
<script setup lang="ts">
import { TheChessboard, type PieceColor } from 'vue3-chessboard';
import 'vue3-chessboard/style.css';
function handleCheckmate(isMated: PieceColor) {
alert(`${isMated} is mated`);
}
</script>
<template>
<TheChessboard @checkmate="handleCheckmate" />
</template>
Promotion
vue
<script setup>
import { TheChessboard } from 'vue3-chessboard';
import 'vue3-chessboard/style.css';
function handlePromotion(promotion) {
console.log(promotion);
}
</script>
<template>
<TheChessboard @promotion="handlePromotion" />
</template>
vue
<script setup lang="ts">
import { TheChessboard, type PromotionEvent } from 'vue3-chessboard';
import 'vue3-chessboard/style.css';
function handlePromotion(promotion: PromotionEvent) {
console.log(promotion);
}
</script>
<template>
<TheChessboard @promotion="handlePromotion" />
</template>
Promotion:
Stalemate
vue
<script setup>
import { TheChessboard } from 'vue3-chessboard';
import 'vue3-chessboard/style.css';
function handleStalemate() {
alert('Stalemate');
}
</script>
<template>
<TheChessboard @stalemate="handleStalemate" />
</template>
vue
<script setup lang="ts">
import { TheChessboard } from 'vue3-chessboard';
import 'vue3-chessboard/style.css';
function handleStalemate() {
alert('Stalemate');
}
</script>
<template>
<TheChessboard @stalemate="handleStalemate" />
</template>
Alfonso Romero Holmes vs Boris Kantsler (2002)
Draw
vue
<script setup>
import { TheChessboard } from 'vue3-chessboard';
import 'vue3-chessboard/style.css';
function handleDraw() {
alert('Draw');
}
</script>
<template>
<TheChessboard @draw="handleDraw" />
</template>
vue
<script setup lang="ts">
import { TheChessboard } from 'vue3-chessboard';
import 'vue3-chessboard/style.css';
function handleDraw() {
alert('Draw');
}
</script>
<template>
<TheChessboard @draw="handleDraw" />
</template>
Magnus Carlsen vs Viswanathan Anand (World Championship Match 2014)