Better highlighting/highlighted hooks

This commit is contained in:
Kamran Ahmed
2023-06-13 04:06:35 +01:00
parent d656141ed8
commit eb375ea965
4 changed files with 19 additions and 10 deletions
+9
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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);