From 73f8db0e222de75e51816dac8f6176d73650157f Mon Sep 17 00:00:00 2001 From: KenTandrian Date: Wed, 4 Feb 2026 23:47:29 +0700 Subject: [PATCH] feat(ui): create chart registry --- libs/ui/src/lib/chart/chart.registry.ts | 29 +++++++++++++++++++++++++ libs/ui/src/lib/chart/index.ts | 1 + 2 files changed, 30 insertions(+) create mode 100644 libs/ui/src/lib/chart/chart.registry.ts create mode 100644 libs/ui/src/lib/chart/index.ts diff --git a/libs/ui/src/lib/chart/chart.registry.ts b/libs/ui/src/lib/chart/chart.registry.ts new file mode 100644 index 000000000..465d6e716 --- /dev/null +++ b/libs/ui/src/lib/chart/chart.registry.ts @@ -0,0 +1,29 @@ +import { getTooltipPositionerMapTop } from '@ghostfolio/common/chart-helper'; + +import { Tooltip, TooltipPositionerFunction, ChartType } from 'chart.js'; + +interface VerticalHoverLinePluginOptions { + color?: string; + width?: number; +} + +declare module 'chart.js' { + interface PluginOptionsByType { + verticalHoverLine: TType extends 'line' | 'bar' + ? VerticalHoverLinePluginOptions + : never; + } + interface TooltipPositionerMap { + top: TooltipPositionerFunction; + } +} + +export function registerChartConfiguration() { + if (Tooltip.positioners['top']) { + return; + } + + Tooltip.positioners.top = function (_elements, eventPosition) { + return getTooltipPositionerMapTop(this.chart, eventPosition); + }; +} diff --git a/libs/ui/src/lib/chart/index.ts b/libs/ui/src/lib/chart/index.ts new file mode 100644 index 000000000..2a3d3b358 --- /dev/null +++ b/libs/ui/src/lib/chart/index.ts @@ -0,0 +1 @@ +export * from './chart.registry';