kamrify commited on
Commit
c7a3398
·
1 Parent(s): d0e0b03

Fix: onDeselected not being called for dummy element

Browse files
Files changed (3) hide show
  1. src/config.ts +2 -0
  2. src/driver.ts +10 -10
  3. src/events.ts +6 -0
src/config.ts CHANGED
@@ -9,6 +9,8 @@ export type Config = {
9
  opacity?: number;
10
  stagePadding?: number;
11
  stageRadius?: number;
 
 
12
  popoverOffset?: number;
13
  showButtons?: AllowedButtons[];
14
 
 
9
  opacity?: number;
10
  stagePadding?: number;
11
  stageRadius?: number;
12
+ allowKeyboardControl?: boolean;
13
+
14
  popoverOffset?: number;
15
  showButtons?: AllowedButtons[];
16
 
src/driver.ts CHANGED
@@ -21,13 +21,6 @@ export function driver(options: Config = {}) {
21
  return;
22
  }
23
 
24
- const activeStep = getState("activeStep");
25
- const activeElement = getState("activeElement");
26
- const onDeselected = getConfig("onDeselected");
27
- if (activeStep && activeElement && onDeselected) {
28
- onDeselected(activeElement.id === "driver-dummy-element" ? undefined : activeElement, activeStep);
29
- }
30
-
31
  destroy();
32
  }
33
 
@@ -49,6 +42,9 @@ export function driver(options: Config = {}) {
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();
@@ -59,11 +55,15 @@ export function driver(options: Config = {}) {
59
 
60
  resetState();
61
 
62
- const onDestroyed = getConfig("onDestroyed");
63
- if (onDestroyed && activeElement && activeStep) {
64
  const isActiveDummyElement = activeElement.id === "driver-dummy-element";
 
 
 
65
 
66
- onDestroyed(isActiveDummyElement ? undefined : activeElement, activeStep);
 
 
67
  }
68
  }
69
 
 
21
  return;
22
  }
23
 
 
 
 
 
 
 
 
24
  destroy();
25
  }
26
 
 
42
  const activeElement = getState("activeElement");
43
  const activeStep = getState("activeStep");
44
 
45
+ const onDeselected = getConfig("onDeselected");
46
+ const onDestroyed = getConfig("onDestroyed");
47
+
48
  document.body.classList.remove("driver-active", "driver-fade", "driver-simple");
49
 
50
  destroyEvents();
 
55
 
56
  resetState();
57
 
58
+ if (activeElement && activeStep) {
 
59
  const isActiveDummyElement = activeElement.id === "driver-dummy-element";
60
+ if (onDeselected) {
61
+ onDeselected(isActiveDummyElement ? undefined : activeElement, activeStep);
62
+ }
63
 
64
+ if (onDestroyed) {
65
+ onDestroyed(isActiveDummyElement ? undefined : activeElement, activeStep);
66
+ }
67
  }
68
  }
69
 
src/events.ts CHANGED
@@ -1,6 +1,7 @@
1
  import { refreshActiveHighlight } from "./highlight";
2
  import { emit } from "./emitter";
3
  import { getState, setState } from "./state";
 
4
 
5
  export function requireRefresh() {
6
  const resizeTimeout = getState("resizeTimeout");
@@ -12,6 +13,11 @@ export function requireRefresh() {
12
  }
13
 
14
  function onKeyup(e: KeyboardEvent) {
 
 
 
 
 
15
  if (e.key === "Escape") {
16
  emit("escapePress");
17
  }
 
1
  import { refreshActiveHighlight } from "./highlight";
2
  import { emit } from "./emitter";
3
  import { getState, setState } from "./state";
4
+ import { getConfig } from "./config";
5
 
6
  export function requireRefresh() {
7
  const resizeTimeout = getState("resizeTimeout");
 
13
  }
14
 
15
  function onKeyup(e: KeyboardEvent) {
16
+ const allowKeyboardControl = getConfig("allowKeyboardControl") || true;
17
+ if (!allowKeyboardControl) {
18
+ return;
19
+ }
20
+
21
  if (e.key === "Escape") {
22
  emit("escapePress");
23
  }