mirror of
https://github.com/kamranahmedse/driver.js.git
synced 2026-10-31 03:52:13 +08:00
Better highlighting/highlighted hooks
This commit is contained in:
@@ -419,6 +419,15 @@ npm install driver.js</pre
|
||||
document.getElementById("without-element-btn").addEventListener("click", () => {
|
||||
const driverObj = driver({
|
||||
animate: true,
|
||||
onDeselected: (element, step) => {
|
||||
console.log("Deselected element", element, step);
|
||||
},
|
||||
onHighlightStarted: (element, step) => {
|
||||
console.log("Started highlighting element", element, step);
|
||||
},
|
||||
onHighlighted: (element, step) => {
|
||||
console.log("Highlighted element", element, step);
|
||||
},
|
||||
});
|
||||
driverObj.highlight({
|
||||
popover: {
|
||||
|
||||
+3
-3
@@ -11,10 +11,10 @@ export type Config = {
|
||||
popoverOffset?: number;
|
||||
showButtons?: boolean;
|
||||
|
||||
onHighlightStarted?: (element: Element, step: DriveStep) => void;
|
||||
onHighlighted?: (element: Element, step: DriveStep) => void;
|
||||
onHighlightStarted?: (element: Element | undefined, step: DriveStep) => void;
|
||||
onHighlighted?: (element: Element | undefined, step: DriveStep) => void;
|
||||
|
||||
onDeselected?: (element: Element, step: DriveStep) => void;
|
||||
onDeselected?: (element: Element | undefined, step: DriveStep) => void;
|
||||
};
|
||||
|
||||
let currentConfig: Config = {};
|
||||
|
||||
+1
-1
@@ -25,7 +25,7 @@ export function driver(options: Config = {}) {
|
||||
const activeElement = getState("activeElement");
|
||||
const onDeselected = getConfig("onDeselected");
|
||||
if (activeStep && activeElement && onDeselected) {
|
||||
onDeselected(activeElement, activeStep);
|
||||
onDeselected(activeElement.id === "driver-dummy-element" ? undefined : activeElement, activeStep);
|
||||
}
|
||||
|
||||
destroy();
|
||||
|
||||
+6
-6
@@ -74,12 +74,12 @@ function transferHighlight(toElement: Element, toStep: DriveStep) {
|
||||
const highlightedHook = getConfig("onHighlighted");
|
||||
const deselectedHook = getConfig("onDeselected");
|
||||
|
||||
if (!isFirstHighlight && !isFromDummyElement && deselectedHook) {
|
||||
deselectedHook(fromElement, fromStep!);
|
||||
if (!isFirstHighlight && deselectedHook) {
|
||||
deselectedHook(isFromDummyElement ? undefined : fromElement, fromStep!);
|
||||
}
|
||||
|
||||
if (!isToDummyElement && highlightStartedHook) {
|
||||
highlightStartedHook(toElement, toStep);
|
||||
if (highlightStartedHook) {
|
||||
highlightStartedHook(isToDummyElement ? undefined : toElement, toStep);
|
||||
}
|
||||
|
||||
const hasDelayedPopover = !isFirstHighlight && (hasNoPreviousPopover || isFromDummyElement || isToDummyElement);
|
||||
@@ -111,8 +111,8 @@ function transferHighlight(toElement: Element, toStep: DriveStep) {
|
||||
} else {
|
||||
trackActiveElement(toElement);
|
||||
|
||||
if (!isToDummyElement && highlightedHook) {
|
||||
highlightedHook(toElement, toStep);
|
||||
if (highlightedHook) {
|
||||
highlightedHook(isToDummyElement ? undefined : toElement, toStep);
|
||||
}
|
||||
|
||||
setState("transitionCallback", undefined);
|
||||
|
||||
Reference in New Issue
Block a user