From fdf324ce283bb4acee2ba4ef82504c6a357c747d Mon Sep 17 00:00:00 2001 From: Edward A Lopez Mojica Date: Sat, 28 Mar 2026 13:40:41 -0500 Subject: [PATCH] fix: expose renderTooltip option in createTour DSL The Tour type already defined renderTooltip?: TooltipRenderer but createTour() did not accept or propagate it, making the global custom tooltip renderer inaccessible via the DSL. - Add renderTooltip to createTour opts parameter - Import TooltipRenderer type in createTour.ts - Add test coverage for the new option Closes #25 --- .changeset/wacky-singers-glow.md | 5 +++++ src/__tests__/createTour.test.ts | 9 +++++++++ src/core/types.ts | 1 - src/dsl/createTour.ts | 13 ++++++++++--- 4 files changed, 24 insertions(+), 4 deletions(-) create mode 100644 .changeset/wacky-singers-glow.md diff --git a/.changeset/wacky-singers-glow.md b/.changeset/wacky-singers-glow.md new file mode 100644 index 0000000..1f5e3c6 --- /dev/null +++ b/.changeset/wacky-singers-glow.md @@ -0,0 +1,5 @@ +--- +'@edwardloopez/react-native-coachmark': patch +--- + +fix: expose `renderTooltip` option in `createTour` DSL diff --git a/src/__tests__/createTour.test.ts b/src/__tests__/createTour.test.ts index 4c441f6..d33d1fc 100644 --- a/src/__tests__/createTour.test.ts +++ b/src/__tests__/createTour.test.ts @@ -79,4 +79,13 @@ describe('createTour', () => { expect(tour.key).toBe('test-tour'); expect(tour.steps).toEqual(mockSteps); }); + + it('should create a tour with renderTooltip option', () => { + const mockRenderer = jest.fn(); + const tour = createTour('test-tour', mockSteps, { + renderTooltip: mockRenderer, + }); + + expect(tour.renderTooltip).toBe(mockRenderer); + }); }); diff --git a/src/core/types.ts b/src/core/types.ts index 365b130..cbb10da 100644 --- a/src/core/types.ts +++ b/src/core/types.ts @@ -45,7 +45,6 @@ export type TourStep = { onBeforeEnter?: () => Promise; onEnter?: () => void; onExit?: () => void; - // Custom tooltip renderer renderTooltip?: TooltipRenderer; }; diff --git a/src/dsl/createTour.ts b/src/dsl/createTour.ts index 5660430..969f716 100644 --- a/src/dsl/createTour.ts +++ b/src/dsl/createTour.ts @@ -1,4 +1,4 @@ -import type { Tour, TourStep } from '../core/types'; +import type { Tour, TourStep, TooltipRenderer } from '../core/types'; /** * Creates a tour configuration object with the specified steps and options. @@ -8,6 +8,7 @@ import type { Tour, TourStep } from '../core/types'; * @param opts - Optional configuration options for the tour * @param opts.showOnce - If true, the tour will only be shown once to the user * @param opts.delay - Delay in milliseconds before the tour starts + * @param opts.renderTooltip - Global custom tooltip renderer for all steps * @returns A Tour object containing the key, steps, and optional configuration * * @example @@ -22,7 +23,13 @@ import type { Tour, TourStep } from '../core/types'; export function createTour( key: string, steps: TourStep[], - opts?: { showOnce?: boolean; delay?: number } + opts?: { showOnce?: boolean; delay?: number; renderTooltip?: TooltipRenderer } ): Tour { - return { key, steps, showOnce: opts?.showOnce, delay: opts?.delay }; + return { + key, + steps, + showOnce: opts?.showOnce, + delay: opts?.delay, + renderTooltip: opts?.renderTooltip, + }; }