Add onClose hook
Browse files- index.html +3 -0
- src/config.ts +2 -0
- src/driver.ts +10 -0
index.html
CHANGED
@@ -419,6 +419,9 @@ npm install driver.js</pre
|
|
419 |
document.getElementById("without-element-btn").addEventListener("click", () => {
|
420 |
const driverObj = driver({
|
421 |
animate: true,
|
|
|
|
|
|
|
422 |
onDeselected: (element, step) => {
|
423 |
console.log("Deselected element", element, step);
|
424 |
},
|
|
|
419 |
document.getElementById("without-element-btn").addEventListener("click", () => {
|
420 |
const driverObj = driver({
|
421 |
animate: true,
|
422 |
+
onClose: (element, step) => {
|
423 |
+
console.log("Close modal", element, step);
|
424 |
+
},
|
425 |
onDeselected: (element, step) => {
|
426 |
console.log("Deselected element", element, step);
|
427 |
},
|
src/config.ts
CHANGED
@@ -15,6 +15,8 @@ export type Config = {
|
|
15 |
onHighlighted?: (element: Element | undefined, step: DriveStep) => void;
|
16 |
|
17 |
onDeselected?: (element: Element | undefined, step: DriveStep) => void;
|
|
|
|
|
18 |
};
|
19 |
|
20 |
let currentConfig: Config = {};
|
|
|
15 |
onHighlighted?: (element: Element | undefined, step: DriveStep) => void;
|
16 |
|
17 |
onDeselected?: (element: Element | undefined, step: DriveStep) => void;
|
18 |
+
|
19 |
+
onClose?: (element: Element | undefined, step: DriveStep) => void;
|
20 |
};
|
21 |
|
22 |
let currentConfig: Config = {};
|
src/driver.ts
CHANGED
@@ -46,6 +46,9 @@ export function driver(options: Config = {}) {
|
|
46 |
}
|
47 |
|
48 |
function destroy() {
|
|
|
|
|
|
|
49 |
document.body.classList.remove("driver-active", "driver-fade", "driver-simple");
|
50 |
|
51 |
destroyEvents();
|
@@ -55,6 +58,13 @@ export function driver(options: Config = {}) {
|
|
55 |
destroyEmitter();
|
56 |
|
57 |
resetState();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
58 |
}
|
59 |
|
60 |
return {
|
|
|
46 |
}
|
47 |
|
48 |
function destroy() {
|
49 |
+
const activeElement = getState("activeElement");
|
50 |
+
const activeStep = getState("activeStep");
|
51 |
+
|
52 |
document.body.classList.remove("driver-active", "driver-fade", "driver-simple");
|
53 |
|
54 |
destroyEvents();
|
|
|
58 |
destroyEmitter();
|
59 |
|
60 |
resetState();
|
61 |
+
|
62 |
+
const onClose = getConfig("onClose");
|
63 |
+
if (onClose && activeElement && activeStep) {
|
64 |
+
const isActiveDummyElement = activeElement.id === "driver-dummy-element";
|
65 |
+
|
66 |
+
onClose(isActiveDummyElement ? undefined : activeElement, activeStep);
|
67 |
+
}
|
68 |
}
|
69 |
|
70 |
return {
|