cheetah-grid
Version:
Cheetah Grid is a high performance grid engine that works on canvas
62 lines (59 loc) • 1.66 kB
text/typescript
import * as messageUtils from "./messageUtils";
import type {
CellContext,
ColumnStyle,
GridCanvasHelperAPI,
ListGridAPI,
MessageObject,
} from "../../ts-types";
import { BaseMessage } from "./BaseMessage";
import type { DrawCellInfo } from "../../ts-types-internal";
import { ErrorMessageElement } from "./internal/ErrorMessageElement";
import { cellInRange } from "../../internal/utils";
const RED_A100 = "#ff8a80";
export class ErrorMessage<T> extends BaseMessage<T> {
createMessageElementInternal(): ErrorMessageElement {
return new ErrorMessageElement();
}
drawCellMessageInternal(
_message: MessageObject,
context: CellContext,
style: ColumnStyle,
helper: GridCanvasHelperAPI,
grid: ListGridAPI<T>,
_info: DrawCellInfo<T>
): void {
const { bgColor } = style;
const { select } = context.getSelection();
if (
!cellInRange(
grid.getCellRange(context.col, context.row),
select.col,
select.row
) ||
!grid.hasFocusGrid()
) {
helper.drawBorderWithClip(
context,
(ctx: CanvasRenderingContext2D): void => {
messageUtils.drawExclamationMarkBox(
context,
{
bgColor:
helper.getColor(
helper.theme.messages.errorBgColor,
context.col,
context.row,
ctx
) || RED_A100,
color: bgColor,
boxWidth: helper.theme.messages.boxWidth,
markHeight: helper.theme.messages.markHeight,
},
helper
);
}
);
}
}
}