/* eslint-disable */
document.addEventListener("DOMContentLoaded", function () {
const tourDriver = new Driver({
animate: true,
opacity: 0.8,
padding: 5,
showButtons: true,
});
tourDriver.defineSteps([
{
element: '#driver-demo-head',
popover: {
title: 'Before we start',
description: 'This is just one use-case, make sure to check out the rest of the docs below.',
nextBtnText: 'Okay, Start!',
},
},
{
element: '#logo_emoji',
popover: {
title: 'Focus Anything',
description: 'You can use it to highlight literally anything, images, text, div, span, li etc.',
position: 'bottom',
},
},
{
element: '#name_driver',
popover: {
title: 'Why Driver?',
description: 'Because it let\'s you drive the user across the page',
position: 'bottom',
},
},
{
element: '#driver-demo-head',
popover: {
title: 'Lets talk features',
description: 'You may leave your mouse and use the arrow keys to move next and back or escape key anytime to close this',
position: 'bottom',
},
},
{
element: '#highlight_feature',
popover: {
title: 'Highlight Feature',
description: 'You may use it to highlight single elements (with or without popover) e.g. like facebook does while creating posts'
}
},
{
element: '#feature_introductions_feature',
popover: {
title: 'Feature Introductions',
description: 'With it\'s powerful API you can use it to make programmatic or user driven feature introductions',
position: 'bottom',
}
},
{
element: '#focus_shifters_feature',
popover: {
title: 'Focus Shifters',
description: 'If some element or part of the page needs user\'s interaction, you can just call the highlight method. Driver will take care of driving the user there',
position: 'bottom',
}
},
{
element: '#customizable_feature',
popover: {
title: 'Highly Customizable',
description: 'Driver has a powerful API allowing you to customize the experience as much as you can.',
position: 'bottom',
}
},
{
element: '#keyboard_feature',
popover: {
title: 'User Friendly',
description: 'Your users can control it with the arrow keys on keyboard, or escape to close it',
position: 'bottom',
}
},
{
element: '#free_use_feature',
popover: {
title: 'MIT License',
description: 'I believe in open=source and thus Driver is completely free for both personal or commercial use'
}
},
{
element: '#lightweight_feature',
popover: {
title: 'Only ~4KB',
description: 'Driver is free of bloat and written in Vanilla JS. There is no external dependency at all, thus keeping it smaller in size.'
}
},
{
element: '#examples_section',
popover: {
title: 'Usage Examples',
description: 'Have a look at the usage examples and see how you can use it.'
}
},
{
element: '#driver-demo-head',
popover: {
title: 'Quick Tour Ends',
description: 'This was just a sneak peak, have a look at the API section and examples to learn more!',
},
},
]);
document.querySelector('.btn__example')
.addEventListener('click', () => {
tourDriver.start();
});
document.querySelectorAll('pre code').forEach((element) => {
hljs.highlightBlock(element);
});
/////////////////////////////////////////////
// First example – highlighting without popover
/////////////////////////////////////////////
const singleDriverNoPopover = new Driver();
document.querySelector('#run-single-element-no-popover')
.addEventListener('click', (e) => {
e.preventDefault();
singleDriverNoPopover.highlight('#single-element-no-popover');
});
/////////////////////////////////////////////
// Form focus examples
/////////////////////////////////////////////
const focusDriver = new Driver({ padding: 0 });
const inputIds = ['creation-input', 'creation-input-2', 'creation-input-3', 'creation-input-4'];
inputIds.forEach(inputId => {
// Highlight the section on focus
document.getElementById(inputId).addEventListener('focus', () => {
focusDriver.highlight(`#${inputId}`);
});
});
/////////////////////////////////////////////
// Highlighting single element with popover
/////////////////////////////////////////////
const singleDriverWithPopover = new Driver();
document.querySelector('#run-single-element-with-popover')
.addEventListener('click', (e) => {
e.preventDefault();
singleDriverWithPopover.highlight({
element: '#single-element-with-popover',
popover: {
title: 'Did you know?',
description: 'You can add HTML in title or description also!',
position: 'top'
}
});
});
/////////////////////////////////////////////////////
// Highlighting single element with popover position
/////////////////////////////////////////////////////
const singleDriverWithPopoverPosition = new Driver();
document.querySelector('#run-single-element-with-popover-position')
.addEventListener('click', (e) => {
e.preventDefault();
singleDriverWithPopoverPosition.highlight({
element: '#single-element-with-popover-position',
popover: {
title: 'Did you know?',
description: 'You can add HTML in title or description also!',
position: 'left'
}
});
});
/////////////////////////////////////////////////////
// Highlighting single element with popover position
/////////////////////////////////////////////////////
const positionBtnsDriver = new Driver({
padding: 0,
});
document.querySelector('#position-btn-left')
.addEventListener('click', (e) => {
e.preventDefault();
positionBtnsDriver.highlight({
element: '#position-btn-left',
popover: {
title: 'Did you know?',
description: 'You can add HTML in title or description also!',
position: 'left'
}
});
});
document.querySelector('#position-btn-right')
.addEventListener('click', (e) => {
e.preventDefault();
positionBtnsDriver.highlight({
element: '#position-btn-right',
popover: {
title: 'Did you know?',
description: 'You can add HTML in title or description also!',
position: 'right'
}
});
});
document.querySelector('#position-btn-bottom')
.addEventListener('click', (e) => {
e.preventDefault();
positionBtnsDriver.highlight({
element: '#position-btn-bottom',
popover: {
title: 'Did you know?',
description: 'You can add HTML in title or description also!',
position: 'bottom'
}
});
});
document.querySelector('#position-btn-top')
.addEventListener('click', (e) => {
e.preventDefault();
positionBtnsDriver.highlight({
element: '#position-btn-top',
popover: {
title: 'Did you know?',
description: 'You can add HTML in title or description also!',
position: 'top'
}
});
});
/////////////////////////////////////////////////////
// Highlighting single element with popover position
/////////////////////////////////////////////////////
const htmlDriver = new Driver();
document.querySelector('#run-single-element-with-popover-html')
.addEventListener('click', (e) => {
e.preventDefault();
htmlDriver.highlight({
element: '#single-element-with-popover-html',
popover: {
title: 'Tags in title or body',
description: 'Body can also have html tags!',
position: 'top'
}
});
});
/////////////////////////////////////////////////////
// Without Overlay Example
/////////////////////////////////////////////////////
const withoutOverlay = new Driver({
opacity: 0,
padding: 0
});
document.querySelector('#run-element-without-popover')
.addEventListener('click', (e) => {
e.preventDefault();
withoutOverlay.highlight({
element: '#run-element-without-popover',
popover: {
title: 'Title for the Popover',
description: 'Description for it',
position: 'left', // can be `top`, `left`, `right`, `bottom`
}
});
});
/////////////////////////////////////////////////////
// Highlighting single element with popover position
/////////////////////////////////////////////////////
const featureIntroductionDriver = new Driver();
featureIntroductionDriver.defineSteps([
{
element: '#first-element-introduction',
popover: {
title: 'Title on Popover',
description: 'Body of the popover',
position: 'bottom'
}
},
{
element: '#second-para-feature-introductions',
popover: {
title: 'Title on Popover',
description: 'Body of the popover',
position: 'left'
}
},
{
element: '#third-para-feature-introductions',
popover: {
title: 'Title on Popover',
description: 'Body of the popover',
position: 'right'
}
},
{
element: '#run-multi-element-popovers',
popover: {
title: 'Title on Popover',
description: 'Body of the popover',
position: 'top'
}
},
{
element: '#third-element-introduction',
popover: {
title: 'Title on Popover',
description: 'Body of the popover',
position: 'top'
}
},
]);
document.querySelector('#run-multi-element-popovers')
.addEventListener('click', (e) => {
e.preventDefault();
featureIntroductionDriver.start();
});
});