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 {
|