UNPKG

cheetah-grid

Version:

Cheetah Grid is a high performance grid engine that works on canvas

70 lines (65 loc) 1.78 kB
import type { CellContext, GridCanvasHelperAPI } from "../../ts-types"; import type { DrawCellInfo, GridInternal } from "../../ts-types-internal"; import { BaseColumn } from "./BaseColumn"; import { RadioStyle } from "../style/RadioStyle"; import { getRadioColumnStateId } from "../../internal/symbolManager"; import { toBoolean } from "../utils"; const RADIO_COLUMN_STATE_ID = getRadioColumnStateId(); export class RadioColumn<T> extends BaseColumn<T> { get StyleClass(): typeof RadioStyle { return RadioStyle; } clone(): RadioColumn<T> { return new RadioColumn(this); } convertInternal(value: unknown): boolean { return toBoolean(value); } drawInternal( value: boolean, context: CellContext, style: RadioStyle, helper: GridCanvasHelperAPI, grid: GridInternal<T>, { drawCellBase }: DrawCellInfo<T> ): void { const { textAlign, textBaseline, padding, checkColor, uncheckBorderColor, checkBorderColor, uncheckBgColor, checkBgColor, bgColor, visibility, } = style; if (bgColor) { drawCellBase({ bgColor, }); } if (visibility === "hidden") { return; } const { col, row } = context; const range = grid.getCellRange(col, row); const cellKey = `${range.start.col}:${range.start.row}`; const elapsed = grid[RADIO_COLUMN_STATE_ID]?.elapsed[cellKey]; const opt: Parameters<GridCanvasHelperAPI["radioButton"]>[2] = { textAlign, textBaseline, checkColor, uncheckBorderColor, checkBorderColor, uncheckBgColor, checkBgColor, padding, }; if (elapsed != null) { opt.animElapsedTime = elapsed; } helper.radioButton(value, context, opt); } }