Rename onPopoverRendered to onPopoverRender
Browse files- docs/src/content/guides/buttons.mdx +3 -3
- docs/src/content/guides/configuration.mdx +2 -2
- docs/src/content/guides/styling-popover.mdx +3 -3
- docs/src/content/guides/theming.mdx +2 -2
- index.html +5 -6
- package.json +1 -1
- src/config.ts +1 -1
- src/popover.ts +7 -7
docs/src/content/guides/buttons.mdx
CHANGED
|
@@ -235,7 +235,7 @@ You can use the `onNextClick`, `onPreviousClick` and `onCloseClick` callbacks to
|
|
| 235 |
|
| 236 |
## Custom Buttons
|
| 237 |
|
| 238 |
-
You can add custom buttons using `
|
| 239 |
|
| 240 |
|
| 241 |
<CodeSample
|
|
@@ -253,7 +253,7 @@ You can add custom buttons using `onPopoverRendered` callback. This callback is
|
|
| 253 |
align: 'start',
|
| 254 |
side: 'left',
|
| 255 |
title: 'More Control with Hooks',
|
| 256 |
-
description: 'You can use
|
| 257 |
}
|
| 258 |
},
|
| 259 |
{
|
|
@@ -286,7 +286,7 @@ You can add custom buttons using `onPopoverRendered` callback. This callback is
|
|
| 286 |
// Get full control over the popover rendering.
|
| 287 |
// Here we are adding a custom button that takes
|
| 288 |
// user to the first step.
|
| 289 |
-
|
| 290 |
const firstButton = document.createElement("button");
|
| 291 |
firstButton.innerText = "Go to First";
|
| 292 |
popover.footerButtons.appendChild(firstButton);
|
|
|
|
| 235 |
|
| 236 |
## Custom Buttons
|
| 237 |
|
| 238 |
+
You can add custom buttons using `onPopoverRender` callback. This callback is called before the popover is rendered. In the following example, we are adding a custom button that takes the user to the first step.
|
| 239 |
|
| 240 |
|
| 241 |
<CodeSample
|
|
|
|
| 253 |
align: 'start',
|
| 254 |
side: 'left',
|
| 255 |
title: 'More Control with Hooks',
|
| 256 |
+
description: 'You can use onPopoverRender hook to modify the popover DOM. Here we are adding a custom button to the popover which takes the user to the first step.'
|
| 257 |
}
|
| 258 |
},
|
| 259 |
{
|
|
|
|
| 286 |
// Get full control over the popover rendering.
|
| 287 |
// Here we are adding a custom button that takes
|
| 288 |
// user to the first step.
|
| 289 |
+
onPopoverRender: (popover, { config, state }) => {
|
| 290 |
const firstButton = document.createElement("button");
|
| 291 |
firstButton.innerText = "Go to First";
|
| 292 |
popover.footerButtons.appendChild(firstButton);
|
docs/src/content/guides/configuration.mdx
CHANGED
|
@@ -69,7 +69,7 @@ type Config = {
|
|
| 69 |
// PopoverDOM is an object with references to
|
| 70 |
// the popover DOM elements such as buttons
|
| 71 |
// title, descriptions, body, container etc.
|
| 72 |
-
|
| 73 |
|
| 74 |
// Hooks to run before and after highlighting
|
| 75 |
// each step. Each hook receives the following
|
|
@@ -163,7 +163,7 @@ type Popover = {
|
|
| 163 |
// Parameter is an object with references to
|
| 164 |
// the popover DOM elements such as buttons
|
| 165 |
// title, descriptions, body, etc.
|
| 166 |
-
|
| 167 |
|
| 168 |
// Callbacks for button clicks. You can use
|
| 169 |
// these to add custom behavior to the buttons.
|
|
|
|
| 69 |
// PopoverDOM is an object with references to
|
| 70 |
// the popover DOM elements such as buttons
|
| 71 |
// title, descriptions, body, container etc.
|
| 72 |
+
onPopoverRender?: (popover: PopoverDOM, options: { config: Config; state: State }) => void;
|
| 73 |
|
| 74 |
// Hooks to run before and after highlighting
|
| 75 |
// each step. Each hook receives the following
|
|
|
|
| 163 |
// Parameter is an object with references to
|
| 164 |
// the popover DOM elements such as buttons
|
| 165 |
// title, descriptions, body, etc.
|
| 166 |
+
onPopoverRender?: (popover: PopoverDOM, options: { config: Config; state: State }) => void;
|
| 167 |
|
| 168 |
// Callbacks for button clicks. You can use
|
| 169 |
// these to add custom behavior to the buttons.
|
docs/src/content/guides/styling-popover.mdx
CHANGED
|
@@ -8,7 +8,7 @@ import { CodeSample } from "../../components/CodeSample.tsx";
|
|
| 8 |
|
| 9 |
You can either use the default class names and override the styles or you can pass a custom class name to the `popoverClass` option either globally or per step.
|
| 10 |
|
| 11 |
-
Alternatively, if want to modify the Popover DOM, you can use the `
|
| 12 |
|
| 13 |
We have added a few examples below but have a look at the [theming section](/docs/theming#styling-popover) for detailed guide including class names to target etc.
|
| 14 |
|
|
@@ -155,7 +155,7 @@ Here is the CSS used for the above example:
|
|
| 155 |
align: 'start',
|
| 156 |
side: 'left',
|
| 157 |
title: 'More Control with Hooks',
|
| 158 |
-
description: 'You can use
|
| 159 |
}
|
| 160 |
},
|
| 161 |
{
|
|
@@ -188,7 +188,7 @@ Here is the CSS used for the above example:
|
|
| 188 |
// Get full control over the popover rendering.
|
| 189 |
// Here we are adding a custom button that takes
|
| 190 |
// the user to the first step.
|
| 191 |
-
|
| 192 |
const firstButton = document.createElement("button");
|
| 193 |
firstButton.innerText = "Go to First";
|
| 194 |
popover.footerButtons.appendChild(firstButton);
|
|
|
|
| 8 |
|
| 9 |
You can either use the default class names and override the styles or you can pass a custom class name to the `popoverClass` option either globally or per step.
|
| 10 |
|
| 11 |
+
Alternatively, if want to modify the Popover DOM, you can use the `onPopoverRender` callback to get the popover DOM element and do whatever you want with it before popover is rendered.
|
| 12 |
|
| 13 |
We have added a few examples below but have a look at the [theming section](/docs/theming#styling-popover) for detailed guide including class names to target etc.
|
| 14 |
|
|
|
|
| 155 |
align: 'start',
|
| 156 |
side: 'left',
|
| 157 |
title: 'More Control with Hooks',
|
| 158 |
+
description: 'You can use onPopoverRender hook to modify the popover DOM. Here we are adding a custom button to the popover which takes the user to the first step.'
|
| 159 |
}
|
| 160 |
},
|
| 161 |
{
|
|
|
|
| 188 |
// Get full control over the popover rendering.
|
| 189 |
// Here we are adding a custom button that takes
|
| 190 |
// the user to the first step.
|
| 191 |
+
onPopoverRender: (popover, { config, state }) => {
|
| 192 |
const firstButton = document.createElement("button");
|
| 193 |
firstButton.innerText = "Go to First";
|
| 194 |
popover.footerButtons.appendChild(firstButton);
|
docs/src/content/guides/theming.mdx
CHANGED
|
@@ -57,7 +57,7 @@ Visit the [example page](/docs/styling-popover) for an example that modifies the
|
|
| 57 |
|
| 58 |
## Modifying Popover DOM
|
| 59 |
|
| 60 |
-
Alternatively, you can also use the `
|
| 61 |
|
| 62 |
```typescript
|
| 63 |
type PopoverDOM = {
|
|
@@ -73,7 +73,7 @@ type PopoverDOM = {
|
|
| 73 |
footerButtons: HTMLElement;
|
| 74 |
};
|
| 75 |
|
| 76 |
-
|
| 77 |
```
|
| 78 |
|
| 79 |
## Styling Page
|
|
|
|
| 57 |
|
| 58 |
## Modifying Popover DOM
|
| 59 |
|
| 60 |
+
Alternatively, you can also use the `onPopoverRender` hook to modify the popover DOM before it is displayed. The hook is called with the popover DOM as the first argument.
|
| 61 |
|
| 62 |
```typescript
|
| 63 |
type PopoverDOM = {
|
|
|
|
| 73 |
footerButtons: HTMLElement;
|
| 74 |
};
|
| 75 |
|
| 76 |
+
onPopoverRender?: (popover: PopoverDOM) => void;
|
| 77 |
```
|
| 78 |
|
| 79 |
## Styling Page
|
index.html
CHANGED
|
@@ -452,10 +452,9 @@ npm install driver.js</pre
|
|
| 452 |
steps: basicTourSteps,
|
| 453 |
showProgress: true,
|
| 454 |
progressText: "{{current}} of {{total}} done",
|
| 455 |
-
|
| 456 |
popover.title.innerHTML = `${driverObj.getActiveIndex()} ${driverObj.hasNextStep() ? 'Yes' : 'No'} ${driverObj.hasPreviousStep() ? 'Yes' : 'No'}`
|
| 457 |
popover.description.innerHTML = `${driverObj.isFirstStep() ? 'Yes' : 'No'} ${driverObj.isLastStep() ? 'Yes' : 'No'}`
|
| 458 |
-
driverObj.refresh();
|
| 459 |
}
|
| 460 |
});
|
| 461 |
|
|
@@ -662,7 +661,7 @@ npm install driver.js</pre
|
|
| 662 |
|
| 663 |
document.getElementById("popover-hook").addEventListener("click", () => {
|
| 664 |
const driverObj = driver({
|
| 665 |
-
|
| 666 |
popover.title.innerText = "Modified Parent";
|
| 667 |
},
|
| 668 |
});
|
|
@@ -673,7 +672,7 @@ npm install driver.js</pre
|
|
| 673 |
description: "Body of the popover",
|
| 674 |
side: "bottom",
|
| 675 |
align: "start",
|
| 676 |
-
|
| 677 |
popover.title.innerText = "Modified";
|
| 678 |
},
|
| 679 |
},
|
|
@@ -694,7 +693,7 @@ npm install driver.js</pre
|
|
| 694 |
description: "Body of the popover",
|
| 695 |
side: "bottom",
|
| 696 |
align: "start",
|
| 697 |
-
|
| 698 |
popover.title.innerText = "Modified";
|
| 699 |
},
|
| 700 |
},
|
|
@@ -777,7 +776,7 @@ npm install driver.js</pre
|
|
| 777 |
|
| 778 |
document.getElementById("popover-hook-config").addEventListener("click", () => {
|
| 779 |
const driverObj = driver({
|
| 780 |
-
|
| 781 |
const firstButton = document.createElement("button");
|
| 782 |
firstButton.innerText = "First";
|
| 783 |
popover.footerButtons.appendChild(firstButton);
|
|
|
|
| 452 |
steps: basicTourSteps,
|
| 453 |
showProgress: true,
|
| 454 |
progressText: "{{current}} of {{total}} done",
|
| 455 |
+
onPopoverRender: (popover) => {
|
| 456 |
popover.title.innerHTML = `${driverObj.getActiveIndex()} ${driverObj.hasNextStep() ? 'Yes' : 'No'} ${driverObj.hasPreviousStep() ? 'Yes' : 'No'}`
|
| 457 |
popover.description.innerHTML = `${driverObj.isFirstStep() ? 'Yes' : 'No'} ${driverObj.isLastStep() ? 'Yes' : 'No'}`
|
|
|
|
| 458 |
}
|
| 459 |
});
|
| 460 |
|
|
|
|
| 661 |
|
| 662 |
document.getElementById("popover-hook").addEventListener("click", () => {
|
| 663 |
const driverObj = driver({
|
| 664 |
+
onPopoverRender: popover => {
|
| 665 |
popover.title.innerText = "Modified Parent";
|
| 666 |
},
|
| 667 |
});
|
|
|
|
| 672 |
description: "Body of the popover",
|
| 673 |
side: "bottom",
|
| 674 |
align: "start",
|
| 675 |
+
onPopoverRender: popover => {
|
| 676 |
popover.title.innerText = "Modified";
|
| 677 |
},
|
| 678 |
},
|
|
|
|
| 693 |
description: "Body of the popover",
|
| 694 |
side: "bottom",
|
| 695 |
align: "start",
|
| 696 |
+
onPopoverRender: popover => {
|
| 697 |
popover.title.innerText = "Modified";
|
| 698 |
},
|
| 699 |
},
|
|
|
|
| 776 |
|
| 777 |
document.getElementById("popover-hook-config").addEventListener("click", () => {
|
| 778 |
const driverObj = driver({
|
| 779 |
+
onPopoverRender: popover => {
|
| 780 |
const firstButton = document.createElement("button");
|
| 781 |
firstButton.innerText = "First";
|
| 782 |
popover.footerButtons.appendChild(firstButton);
|
package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
| 1 |
{
|
| 2 |
"name": "driver.js",
|
| 3 |
"private": false,
|
| 4 |
-
"version": "1.0.
|
| 5 |
"main": "./dist/driver.js.cjs",
|
| 6 |
"module": "./dist/driver.js.mjs",
|
| 7 |
"types": "./dist/driver.js.d.ts",
|
|
|
|
| 1 |
{
|
| 2 |
"name": "driver.js",
|
| 3 |
"private": false,
|
| 4 |
+
"version": "1.0.3",
|
| 5 |
"main": "./dist/driver.js.cjs",
|
| 6 |
"module": "./dist/driver.js.mjs",
|
| 7 |
"types": "./dist/driver.js.d.ts",
|
src/config.ts
CHANGED
|
@@ -31,7 +31,7 @@ export type Config = {
|
|
| 31 |
doneBtnText?: string;
|
| 32 |
|
| 33 |
// Called after the popover is rendered
|
| 34 |
-
|
| 35 |
|
| 36 |
// State based callbacks, called upon state changes
|
| 37 |
onHighlightStarted?: DriverHook;
|
|
|
|
| 31 |
doneBtnText?: string;
|
| 32 |
|
| 33 |
// Called after the popover is rendered
|
| 34 |
+
onPopoverRender?: (popover: PopoverDOM) => void;
|
| 35 |
|
| 36 |
// State based callbacks, called upon state changes
|
| 37 |
onHighlightStarted?: DriverHook;
|
src/popover.ts
CHANGED
|
@@ -28,7 +28,7 @@ export type Popover = {
|
|
| 28 |
prevBtnText?: string;
|
| 29 |
|
| 30 |
// Called after the popover is rendered
|
| 31 |
-
|
| 32 |
|
| 33 |
// Button callbacks
|
| 34 |
onNextClick?: DriverHook;
|
|
@@ -203,16 +203,16 @@ export function renderPopover(element: Element, step: DriveStep) {
|
|
| 203 |
|
| 204 |
setState("popover", popover);
|
| 205 |
|
| 206 |
-
|
| 207 |
-
|
| 208 |
-
|
| 209 |
-
const onPopoverRendered = step.popover?.onPopoverRendered || getConfig("onPopoverRendered");
|
| 210 |
-
if (onPopoverRendered) {
|
| 211 |
-
onPopoverRendered(popover, {
|
| 212 |
config: getConfig(),
|
| 213 |
state: getState(),
|
| 214 |
});
|
| 215 |
}
|
|
|
|
|
|
|
|
|
|
| 216 |
}
|
| 217 |
|
| 218 |
type PopoverDimensions = {
|
|
|
|
| 28 |
prevBtnText?: string;
|
| 29 |
|
| 30 |
// Called after the popover is rendered
|
| 31 |
+
onPopoverRender?: (popover: PopoverDOM, opts: { config: Config; state: State }) => void;
|
| 32 |
|
| 33 |
// Button callbacks
|
| 34 |
onNextClick?: DriverHook;
|
|
|
|
| 203 |
|
| 204 |
setState("popover", popover);
|
| 205 |
|
| 206 |
+
const onPopoverRender = step.popover?.onPopoverRender || getConfig("onPopoverRender");
|
| 207 |
+
if (onPopoverRender) {
|
| 208 |
+
onPopoverRender(popover, {
|
|
|
|
|
|
|
|
|
|
| 209 |
config: getConfig(),
|
| 210 |
state: getState(),
|
| 211 |
});
|
| 212 |
}
|
| 213 |
+
|
| 214 |
+
repositionPopover(element, step);
|
| 215 |
+
bringInView(popoverWrapper);
|
| 216 |
}
|
| 217 |
|
| 218 |
type PopoverDimensions = {
|