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

Better highlighting/highlighted hooks

Browse files
Files changed (4) hide show
  1. index.html +9 -0
  2. src/config.ts +3 -3
  3. src/driver.ts +1 -1
  4. src/highlight.ts +6 -6
index.html CHANGED
@@ -419,6 +419,15 @@ npm install driver.js</pre
419
  document.getElementById("without-element-btn").addEventListener("click", () => {
420
  const driverObj = driver({
421
  animate: true,
 
 
 
 
 
 
 
 
 
422
  });
423
  driverObj.highlight({
424
  popover: {
 
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
+ },
425
+ onHighlightStarted: (element, step) => {
426
+ console.log("Started highlighting element", element, step);
427
+ },
428
+ onHighlighted: (element, step) => {
429
+ console.log("Highlighted element", element, step);
430
+ },
431
  });
432
  driverObj.highlight({
433
  popover: {
src/config.ts CHANGED
@@ -11,10 +11,10 @@ export type Config = {
11
  popoverOffset?: number;
12
  showButtons?: boolean;
13
 
14
- onHighlightStarted?: (element: Element, step: DriveStep) => void;
15
- onHighlighted?: (element: Element, step: DriveStep) => void;
16
 
17
- onDeselected?: (element: Element, step: DriveStep) => void;
18
  };
19
 
20
  let currentConfig: Config = {};
 
11
  popoverOffset?: number;
12
  showButtons?: boolean;
13
 
14
+ onHighlightStarted?: (element: Element | undefined, step: DriveStep) => void;
15
+ onHighlighted?: (element: Element | undefined, step: DriveStep) => void;
16
 
17
+ onDeselected?: (element: Element | undefined, step: DriveStep) => void;
18
  };
19
 
20
  let currentConfig: Config = {};
src/driver.ts CHANGED
@@ -25,7 +25,7 @@ export function driver(options: Config = {}) {
25
  const activeElement = getState("activeElement");
26
  const onDeselected = getConfig("onDeselected");
27
  if (activeStep && activeElement && onDeselected) {
28
- onDeselected(activeElement, activeStep);
29
  }
30
 
31
  destroy();
 
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();
src/highlight.ts CHANGED
@@ -74,12 +74,12 @@ function transferHighlight(toElement: Element, toStep: DriveStep) {
74
  const highlightedHook = getConfig("onHighlighted");
75
  const deselectedHook = getConfig("onDeselected");
76
 
77
- if (!isFirstHighlight && !isFromDummyElement && deselectedHook) {
78
- deselectedHook(fromElement, fromStep!);
79
  }
80
 
81
- if (!isToDummyElement && highlightStartedHook) {
82
- highlightStartedHook(toElement, toStep);
83
  }
84
 
85
  const hasDelayedPopover = !isFirstHighlight && (hasNoPreviousPopover || isFromDummyElement || isToDummyElement);
@@ -111,8 +111,8 @@ function transferHighlight(toElement: Element, toStep: DriveStep) {
111
  } else {
112
  trackActiveElement(toElement);
113
 
114
- if (!isToDummyElement && highlightedHook) {
115
- highlightedHook(toElement, toStep);
116
  }
117
 
118
  setState("transitionCallback", undefined);
 
74
  const highlightedHook = getConfig("onHighlighted");
75
  const deselectedHook = getConfig("onDeselected");
76
 
77
+ if (!isFirstHighlight && deselectedHook) {
78
+ deselectedHook(isFromDummyElement ? undefined : fromElement, fromStep!);
79
  }
80
 
81
+ if (highlightStartedHook) {
82
+ highlightStartedHook(isToDummyElement ? undefined : toElement, toStep);
83
  }
84
 
85
  const hasDelayedPopover = !isFirstHighlight && (hasNoPreviousPopover || isFromDummyElement || isToDummyElement);
 
111
  } else {
112
  trackActiveElement(toElement);
113
 
114
+ if (highlightedHook) {
115
+ highlightedHook(isToDummyElement ? undefined : toElement, toStep);
116
  }
117
 
118
  setState("transitionCallback", undefined);