interface Props {
width?: number
height?: number
contained?: boolean;
config?: Partial<Config>
}
Partial not required, because all properties in Config inteface are already opitonal by default.
chessground/src/config.ts
export interface Config {
fen?: cg.FEN; // chess position in Forsyth notation
orientation?: cg.Color; // board orientation. white | black
turnColor?: cg.Color; // turn to play. white | black
check?: cg.Color | boolean; // true for current color, false to unset
lastMove?: cg.Key[]; // squares part of the last move ["c3", "c4"]
selected?: cg.Key; // square currently selected "a1"
coordinates?: boolean; // include coords attributes
autoCastle?: boolean; // immediately complete the castle by moving the rook after king move
viewOnly?: boolean; // don't bind events: the user will never be able to move pieces around
disableContextMenu?: boolean; // because who needs a context menu on a chessboard
addPieceZIndex?: boolean; // adds z-index values to pieces (for 3D)
addDimensionsCssVars?: boolean; // add --cg-width and --cg-height CSS vars containing the board's dimensions to the document root
blockTouchScroll?: boolean; // block scrolling via touch dragging on the board, e.g. for coordinate training
// pieceKey: boolean; // add a data-key attribute to piece elements
highlight?: {
lastMove?: boolean; // add last-move class to squares
check?: boolean; // add check class to squares
};
animation?: {
enabled?: boolean;
duration?: number;
};
movable?: {
free?: boolean; // all moves are valid - board editor
color?: cg.Color | 'both'; // color that can move. white | black | both | undefined
dests?: cg.Dests; // valid moves. {"a2" ["a3" "a4"] "b1" ["a3" "c3"]}
showDests?: boolean; // whether to add the move-dest class on squares
events?: {
after?: (orig: cg.Key, dest: cg.Key, metadata: cg.MoveMetadata) => void; // called after the move has been played
afterNewPiece?: (role: cg.Role, key: cg.Key, metadata: cg.MoveMetadata) => void; // called after a new piece is dropped on the board
};
rookCastle?: boolean; // castle by moving the king to the rook
};
premovable?: {
enabled?: boolean; // allow premoves for color that can not move
showDests?: boolean; // whether to add the premove-dest class on squares
castle?: boolean; // whether to allow king castle premoves
dests?: cg.Key[]; // premove destinations for the current selection
events?: {
set?: (orig: cg.Key, dest: cg.Key, metadata?: cg.SetPremoveMetadata) => void; // called after the premove has been set
unset?: () => void; // called after the premove has been unset
};
};
predroppable?: {
enabled?: boolean; // allow predrops for color that can not move
events?: {
set?: (role: cg.Role, key: cg.Key) => void; // called after the predrop has been set
unset?: () => void; // called after the predrop has been unset
};
};
draggable?: {
enabled?: boolean; // allow moves & premoves to use drag'n drop
distance?: number; // minimum distance to initiate a drag; in pixels
autoDistance?: boolean; // lets chessground set distance to zero when user drags pieces
showGhost?: boolean; // show ghost of piece being dragged
deleteOnDropOff?: boolean; // delete a piece when it is dropped off the board
};
selectable?: {
// disable to enforce dragging over click-click move
enabled?: boolean;
};
events?: {
change?: () => void; // called after the situation changes on the board
// called after a piece has been moved.
// capturedPiece is undefined or like {color: 'white'; 'role': 'queen'}
move?: (orig: cg.Key, dest: cg.Key, capturedPiece?: cg.Piece) => void;
dropNewPiece?: (piece: cg.Piece, key: cg.Key) => void;
select?: (key: cg.Key) => void; // called when a square is selected
insert?: (elements: cg.Elements) => void; // when the board DOM has been (re)inserted
};
drawable?: {
enabled?: boolean; // can draw
visible?: boolean; // can view
defaultSnapToValidMove?: boolean;
// false to keep the drawing if a movable piece is clicked.
// Clicking an empty square or immovable piece will clear the drawing regardless.
eraseOnClick?: boolean;
shapes?: DrawShape[];
autoShapes?: DrawShape[];
brushes?: DrawBrushes;
onChange?: (shapes: DrawShape[]) => void; // called after drawable shapes change
};
}
chessground/src/index.tsx
Partial not required, because all properties in Config inteface are already opitonal by default.
chessground/src/config.ts