14 lines
583 B
TypeScript
14 lines
583 B
TypeScript
export interface OptionHelpPanelOffsetInput {
|
|
activeItemTop: number;
|
|
listCardHeight: number;
|
|
panelHeight: number;
|
|
}
|
|
|
|
/** Aligns a help card to its active row without allowing it past the list card. */
|
|
export function optionHelpPanelOffsetTop({ activeItemTop, listCardHeight, panelHeight }: OptionHelpPanelOffsetInput): number {
|
|
if (![activeItemTop, listCardHeight, panelHeight].every(Number.isFinite)) return 0;
|
|
const desiredTop = Math.max(0, activeItemTop);
|
|
const maxTop = Math.max(0, listCardHeight - Math.max(0, panelHeight));
|
|
return Math.min(desiredTop, maxTop);
|
|
}
|