import React from "react"; import { MouseEventHandler } from "react"; type CellProperties = { active: boolean; hover: boolean; disabled: boolean; cellSize: number; onClick: MouseEventHandler; onMouseEnter: MouseEventHandler; styles: Record; id: string; }; const getBaseStyles = (cellSize) => ({ cell: { width: cellSize, height: cellSize, background: "#fff", cursor: "pointer", borderRadius: 3, border: "1px solid #bababa", }, active: { border: "1px solid #4d6cdd", background: "#4d6cdd", }, hover: { border: "1px solid #fff", background: "#4d6cdd", }, disabled: { filter: "brightness(0.7)", }, }); const getMergedStyle = (baseStyles, styles, styleClass) => ({ ...baseStyles[styleClass], ...(styles && styles[styleClass] ? styles[styleClass] : {}), }); export const GridCell = ({ active, hover, disabled, onClick, onMouseEnter, cellSize, styles, id, }: CellProperties) => { const baseStyles = getBaseStyles(cellSize); const cellStyles = { cell: getMergedStyle(baseStyles, styles, "cell"), active: getMergedStyle(baseStyles, styles, "active"), hover: getMergedStyle(baseStyles, styles, "hover"), disabled: getMergedStyle(baseStyles, styles, "disabled"), }; return (
); };