driver.js web.
Jacg |

Que más todo bien hoy hablaremos sobre driver.js, esta librería es ligera y muy simple, implementarla en nuestras webs es bastante fácil y en unos pasos veremos como hacerlo.


Lo primero será instalarla hay dos formas de hacerlo mediante Node.js con un manejador de paquetes:


# Usando npm
npm install driver.js

# Usando pnpm
pnpm install driver.js

# Usando yarn
yarn add driver.js

O utilizando la CDN, que al momento de esta publicación es esta:


// Colocalas dentro de la etiqueta head de tu HTML
<script src="https://cdn.jsdelivr.net/npm/driver.js@latest/dist/driver.js.iife.js"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/driver.js@latest/dist/driver.css"/>


Una vez instalada debemos crear un archivo .js o al final del HTML antes de cerrar la etiqueta body dentro de etiquetas script, en este caso lo haré con un archivo .js quedando así:


// tutotial.js

/*
    De esta forma si lo instalas con Node.js
*/
import { driver } from "driver.js";
import "driver.js/dist/driver.css";

/*
    O de esta forma si utilizas la CND
*/
const driver = window.driver.js.driver;
const driverObj = driver();

const driverObj = driver();
driverObj.highlight({
  element: "#some-element",
  popover: {
    title: "Title",
    description: "Description"
  }
});


Ahora expliquemos lo que hace el método driverObj.highlight, es una función que recibe un objeto de tipo JSON:

  • element: Corresponde al identificador al que se le hará foco cuando se muestra el modal, se pueden utilizar diferentes selectores:
    • ID: Con el hashtag #
    • Selector de Clase CSS: Con el punto .
    • Con atributos personalizados: Con los data-attributes de las etiquetas tanto nativas de cada etiqueta o personalizados, ejemplo [data-type=text]
  • popover: Está compuesto por un objeto que tiene:
    • title: Será el titulo que tendrá el Modal.
    • description: Un resumen de lo que hace el elemento que se quiere detallar.


Para ejecutar nuestro modal debemos llamar el método para que suceda:


driverObj.drive();


También podemos crear una serie de pasos, si queremos por ejemplo guiar al usuario por un formulario, la forma de hacerlo sería:



const driverObj = driver({
  showProgress: true,
  steps: [
    { element: '#nombre', popover: { title: 'Title', description: 'Description' } },
    { element: '#correo', popover: { title: 'Title', description: 'Description' } },
    { element: '#contraseña', popover: { title: 'Title', description: 'Description' } },
  ]
});

En esta ocasión le pasamos directamente a la librería un JSON con la instrucciones:

  • showProgress: Recibe un boolean que mostrará en que paso va nuestro recorrido.
  • steps: Recibe un array con lo que irá mostrando por cada paso.


Como podemos ver es bastante sencillo crear una guía con driver.js, pero digamos que queremos tener diferentes guías/tutoriales en un solo archivo, la forma que se me ocurrió y quizás a otros fue encapsular en una función cada instancia de la librería, ejemplo:



function guia1(){
    const driverObj = driver({
      showProgress: true,
      steps: [
        { element: '#nombre', popover: { title: 'Title', description: 'Description' } },
        { element: '#correo', popover: { title: 'Title', description: 'Description' } },
        { element: '#contraseña', popover: { title: 'Title', description: 'Description' } },
      ]
    });

    // Ejecutamos el método
    driverObj.drive();
}

function guia2(){
    const driverObj = driver({
      showProgress: true,
      steps: [
        { element: '#edad', popover: { title: 'Title', description: 'Description' } },
        { element: '#direccion', popover: { title: 'Title', description: 'Description' } },
        { element: '#telefono', popover: { title: 'Title', description: 'Description' } },
      ]
    });

    // Ejecutamos el método
    driverObj.drive();
}

// Seleccionamos de nuestro HTML los botones
const boton1=document.querySelector("#boton1")
const boton2=document.querySelector("#boton2")

// Ejecutamos la función correspondiente al hacer click en los botones
boton1.addEventListener("click",()=>{ guia1() })

boton2.addEventListener("click",()=>{ guia2() })


Aún hay mas por aprender de esta librería pero con esto ya pueden crear guías para sus webs.