kamrify commited on
Commit
215369d
·
1 Parent(s): eb375ea

Add onClose hook

Browse files
Files changed (3) hide show
  1. index.html +3 -0
  2. src/config.ts +2 -0
  3. 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 {