Huang Chenghao commited on
Commit
80a8e23
·
unverified ·
1 Parent(s): 71a1d77

Feature/support click mask to next step (#499)

Browse files

* feature: Support click mask to next step

* refactor: rename `clickMaskBehavior` to `overlayClickBehavior`

Files changed (3) hide show
  1. index.html +11 -0
  2. src/config.ts +2 -0
  3. src/driver.ts +14 -1
index.html CHANGED
@@ -169,6 +169,7 @@
169
  <button id="simple-highlight-btn">Simple Highlight</button>
170
  <button id="transition-highlight-btn">Transition Highlight</button>
171
  <button id="disallow-close">Disallow Close</button>
 
172
  <button id="dark-highlight-btn">Super Dark Highlight</button>
173
  <button id="dim-highlight-btn">Super Dim Highlight</button>
174
  <button id="scrollable-area-btn">Scrollable Area</button>
@@ -1099,6 +1100,16 @@ npm install driver.js</pre
1099
  });
1100
  });
1101
 
 
 
 
 
 
 
 
 
 
 
1102
  document.getElementById("destroy-btn").addEventListener("click", () => {
1103
  driver().destroy();
1104
  });
 
169
  <button id="simple-highlight-btn">Simple Highlight</button>
170
  <button id="transition-highlight-btn">Transition Highlight</button>
171
  <button id="disallow-close">Disallow Close</button>
172
+ <button id="click-overlay-to-next">Click Overlay to Next</button>
173
  <button id="dark-highlight-btn">Super Dark Highlight</button>
174
  <button id="dim-highlight-btn">Super Dim Highlight</button>
175
  <button id="scrollable-area-btn">Scrollable Area</button>
 
1100
  });
1101
  });
1102
 
1103
+ document.getElementById("click-overlay-to-next").addEventListener("click", () => {
1104
+ const driverObj = driver({
1105
+ animate: true,
1106
+ overlayClickBehavior: 'nextStep',
1107
+ steps: basicTourSteps,
1108
+ });
1109
+
1110
+ driverObj.drive();
1111
+ });
1112
+
1113
  document.getElementById("destroy-btn").addEventListener("click", () => {
1114
  driver().destroy();
1115
  });
src/config.ts CHANGED
@@ -12,6 +12,7 @@ export type Config = {
12
  overlayOpacity?: number;
13
  smoothScroll?: boolean;
14
  allowClose?: boolean;
 
15
  stagePadding?: number;
16
  stageRadius?: number;
17
 
@@ -54,6 +55,7 @@ export function configure(config: Config = {}) {
54
  currentConfig = {
55
  animate: true,
56
  allowClose: true,
 
57
  overlayOpacity: 0.7,
58
  smoothScroll: false,
59
  disableActiveInteraction: false,
 
12
  overlayOpacity?: number;
13
  smoothScroll?: boolean;
14
  allowClose?: boolean;
15
+ overlayClickBehavior?: 'close' | 'nextStep';
16
  stagePadding?: number;
17
  stageRadius?: number;
18
 
 
55
  currentConfig = {
56
  animate: true,
57
  allowClose: true,
58
+ overlayClickBehavior: 'close',
59
  overlayOpacity: 0.7,
60
  smoothScroll: false,
61
  disableActiveInteraction: false,
src/driver.ts CHANGED
@@ -26,6 +26,19 @@ export function driver(options: Config = {}) {
26
  destroy();
27
  }
28
 
 
 
 
 
 
 
 
 
 
 
 
 
 
29
  function moveNext() {
30
  const activeIndex = getState("activeIndex");
31
  const steps = getConfig("steps") || [];
@@ -129,7 +142,7 @@ export function driver(options: Config = {}) {
129
 
130
  initEvents();
131
 
132
- listen("overlayClick", handleClose);
133
  listen("escapePress", handleClose);
134
  listen("arrowLeftPress", handleArrowLeft);
135
  listen("arrowRightPress", handleArrowRight);
 
26
  destroy();
27
  }
28
 
29
+ function handleOverlayClick() {
30
+ const overlayClickBehavior = getConfig("overlayClickBehavior");
31
+
32
+ if (getConfig("allowClose") && overlayClickBehavior === "close") {
33
+ destroy();
34
+ return;
35
+ }
36
+
37
+ if (overlayClickBehavior === "nextStep") {
38
+ moveNext();
39
+ }
40
+ }
41
+
42
  function moveNext() {
43
  const activeIndex = getState("activeIndex");
44
  const steps = getConfig("steps") || [];
 
142
 
143
  initEvents();
144
 
145
+ listen("overlayClick", handleOverlayClick);
146
  listen("escapePress", handleClose);
147
  listen("arrowLeftPress", handleArrowLeft);
148
  listen("arrowRightPress", handleArrowRight);