---
title: "Popover Buttons"
groupTitle: "Examples"
sort: 9
---
import { CodeSample } from "../../components/CodeSample.tsx";
You can use the `showButtons` option to choose which buttons to show in the popover. The default value is `['next', 'previous', 'close']`.
> **Note:** When using the `highlight` method to highlight a single element, the only button shown is the `close`
button. However, you can use the `showButtons` option to show other buttons as well. But the buttons won't do
anything. You will have to use the `onNextClick` and `onPreviousClick` callbacks to implement the functionality.
```js
import { driver } from "driver.js";
import "driver.js/dist/driver.css";
const driverObj = driver({
showButtons: [
'next',
'previous',
'close'
],
steps: [
{
element: '#first-element',
popover: {
title: 'Popover Title',
description: 'Popover Description'
}
},
{
element: '#second-element',
popover: {
title: 'Popover Title',
description: 'Popover Description'
}
}
]
});
driverObj.drive();
```
## Change Button Text
You can also change the text of buttons using `nextBtnText`, `prevBtnText` and `doneBtnText` options.
',
prevBtnText: '<--',
doneBtnText: 'X',
}}
tour={[
{
element: '#code-sample-3',
popover: {
title: 'Popover Title',
description: 'Popover Description'
}
},
{
element: '#code-sample-3 code',
popover: {
title: 'Popover Title',
description: 'Popover Description'
}
}
]}
id={"code-sample-3"}
client:load>
```js
import { driver } from "driver.js";
import "driver.js/dist/driver.css";
const driverObj = driver({
nextBtnText: '—›',
prevBtnText: '‹—',
doneBtnText: '✕',
showProgress: true,
steps: [
// ...
]
});
driverObj.drive();
```
## Event Handlers
You can use the `onNextClick`, `onPreviousClick` and `onCloseClick` callbacks to implement custom functionality when the user clicks on the next and previous buttons.
> Please note that when you configure these callbacks, the default functionality of the buttons will be disabled. You will have to implement the functionality yourself.
```js
import { driver } from "driver.js";
import "driver.js/dist/driver.css";
const driverObj = driver({
onNextClick:() => {
console.log('Next Button Clicked');
// Implement your own functionality here
driverObj.moveNext();
},
onPrevClick:() => {
console.log('Previous Button Clicked');
// Implement your own functionality here
driverObj.movePrevious();
},
onCloseClick:() => {
console.log('Close Button Clicked');
// Implement your own functionality here
driverObj.destroy();
},
steps: [
// ...
]
});
driverObj.drive();
```
## Custom Buttons
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.
```js
import { driver } from "driver.js";
import "driver.js/dist/driver.css";
const driverObj = driver({
// Get full control over the popover rendering.
// Here we are adding a custom button that takes
// user to the first step.
onPopoverRender: (popover, { config, state }) => {
const firstButton = document.createElement("button");
firstButton.innerText = "Go to First";
popover.footerButtons.appendChild(firstButton);
firstButton.addEventListener("click", () => {
driverObj.drive(0);
});
},
steps: [
// ..
]
});
driverObj.drive();
```