File size: 2,289 Bytes
333d0df 03f5109 e5cb552 333d0df 70d8f15 66a740c 6aa2828 66a740c 9d696c3 82a88c5 4c98241 333d0df edd7dca 9bcba14 4ccc492 c7a3398 1d5e713 9bde4cc fe7906f 6aa2828 9bcba14 70d8f15 93af367 03f5109 93af367 6aa2828 93af367 28ba7df bb08637 28ba7df 9a49612 e5cb552 9a49612 e5cb552 66a740c 333d0df 66a740c 4c98241 333d0df 9d696c3 c38b220 4ccc492 03f5109 edd7dca 9bde4cc 9a49612 6aa2828 9d696c3 66a740c 333d0df |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 |
import { Driver, DriveStep } from "./driver";
import { AllowedButtons, PopoverDOM } from "./popover";
import { State } from "./state";
export type DriverHook = (
element: Element | undefined,
step: DriveStep,
opts: { config: Config; state: State; driver: Driver }
) => void;
export type Config = {
steps?: DriveStep[];
animate?: boolean;
overlayColor?: string;
overlayOpacity?: number;
smoothScroll?: boolean;
allowClose?: boolean;
overlayClickBehavior?: "close" | "nextStep";
stagePadding?: number;
stageRadius?: number;
disableActiveInteraction?: boolean;
allowKeyboardControl?: boolean;
// Popover specific configuration
popoverClass?: string;
popoverOffset?: number;
showButtons?: AllowedButtons[];
disableButtons?: AllowedButtons[];
showProgress?: boolean;
// Button texts
progressText?: string;
nextBtnText?: string;
prevBtnText?: string;
doneBtnText?: string;
// Called after the popover is rendered
onPopoverRender?: (popover: PopoverDOM, opts: { config: Config; state: State, driver: Driver }) => void;
// State based callbacks, called upon state changes
onHighlightStarted?: DriverHook;
onHighlighted?: DriverHook;
onDeselected?: DriverHook;
onDestroyStarted?: DriverHook;
onDestroyed?: DriverHook;
// Event based callbacks, called upon events
onNextClick?: DriverHook;
onPrevClick?: DriverHook;
onCloseClick?: DriverHook;
};
let currentConfig: Config = {};
let currentDriver: Driver;
export function configure(config: Config = {}) {
currentConfig = {
animate: true,
allowClose: true,
overlayClickBehavior: "close",
overlayOpacity: 0.7,
smoothScroll: false,
disableActiveInteraction: false,
showProgress: false,
stagePadding: 10,
stageRadius: 5,
popoverOffset: 10,
showButtons: ["next", "previous", "close"],
disableButtons: [],
overlayColor: "#000",
...config,
};
}
export function getConfig(): Config;
export function getConfig<K extends keyof Config>(key: K): Config[K];
export function getConfig<K extends keyof Config>(key?: K) {
return key ? currentConfig[key] : currentConfig;
}
export function setCurrentDriver(driver: Driver) {
currentDriver = driver;
}
export function getCurrentDriver() {
return currentDriver;
}
|