File size: 1,855 Bytes
70d8f15 03f5109 e5cb552 70d8f15 66a740c 6aa2828 66a740c a688e23 82a88c5 4c98241 e3d3deb edd7dca 9bcba14 c7a3398 1d5e713 9bde4cc fe7906f 6aa2828 9bcba14 70d8f15 93af367 03f5109 93af367 6aa2828 93af367 28ba7df 9a49612 e5cb552 9a49612 e5cb552 66a740c 4c98241 e3d3deb c38b220 03f5109 edd7dca 9bde4cc 9a49612 6aa2828 a688e23 66a740c |
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 |
import { DriveStep } from "./driver";
import { AllowedButtons, PopoverDOM } from "./popover";
import { State } from "./state";
type DriverHook = (element: Element | undefined, step: DriveStep, opts: { config: Config; state: State }) => void;
export type Config = {
steps?: DriveStep[];
animate?: boolean;
backdropColor?: string;
smoothScroll?: boolean;
allowClose?: boolean;
opacity?: number;
stagePadding?: number;
stageRadius?: number;
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
onPopoverRendered?: (popover: PopoverDOM) => 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 = {};
export function configure(config: Config = {}) {
currentConfig = {
animate: true,
allowClose: true,
opacity: 0.7,
smoothScroll: false,
showProgress: false,
stagePadding: 10,
stageRadius: 5,
popoverOffset: 10,
showButtons: ["next", "previous", "close"],
disableButtons: [],
backdropColor: "#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;
}
|