DEV Community

Cesar Bhering
Cesar Bhering

Posted on • Edited on

Usando o shepherdjs para fazer tours em uma aplicação nuxt (vue.js) (Parte 1)

Como não vi nenhum conteúdo em pt-BR ensinando o básico de shepherdjs, decidi fazer este pequeno tutorial. Neste exemplo irei fazer referência em como usar o shepherdjs junto ao vue.js com nuxt.

Aqui você encontra o repositório do projeto.

Primeiro e antes de mais nada vamos baixar a biblioteca destinada ao vue:
npm install vue-shepherd --save


Você pode usar várias abordagens, aqui irei mostrar como usar o shepherdjs como plugin:

Crie um arquivo chamado shepherd.js na pasta plugins com o seguinte conteúdo:

import Vue from 'vue'; import VueShepherd from 'vue-shepherd'; import 'shepherd.js/dist/css/shepherd.css'; Vue.use(VueShepherd); 
Enter fullscreen mode Exit fullscreen mode

E no arquivo nuxt.config.js você deve declarar o plugin da seguinte forma:

 plugins: [ '@/plugins/shepherd' ], 
Enter fullscreen mode Exit fullscreen mode

Dentro do componente desejado você pode inicializar um tour e adicionar steps utilizando o ciclo de vida mounted(conforme exemplo que existe no github oficial):

mounted() { this.$nextTick(() => { const tour = this.$shepherd({ useModalOverlay: true }); tour.addStep({ attachTo: { element: this.$el, on: 'top' }, text: 'Test' }); tour.start(); }); } 
Enter fullscreen mode Exit fullscreen mode

OK, até aqui tudo certo, tudo legal. Mas caso você esteja tentando usar o shepherdjs, já percebeu que a documentação oficial é bem genérica em relação a customização do comportamento. Então vamos abordar algumas questões chave.

Para fins didáticos, criei um componente simples com um id chamado shepherd-teste, e iremos usar o mesmo para os exemplos abaixo.


O primeiro ponto a ser abordado é o defaultStepOptions, pois nele conseguimos colocar customizações em todos os steps do tour.

Dentro do defaultStepOptionspodemos colocar a opção popperOptions(sim, o shepherdjs usa o popper por debaixo dos panos), que nos permite usar opções do popper. Sendo assim podemos utilizar a opção offsetpara controlar o quanto a seta/arrow fica dentro ou distante do elemento a ser referenciado.

O nosso tour começa a tomar a seguinte cara:

mounted() { this.$nextTick(() => { const tour = this.$shepherd({ useModalOverlay: true, defaultStepOptions: { popperOptions: { modifiers: [{ name: 'offset', options: { offset: [0, 50] } }] } } }); tour.addStep({ attachTo: { element: '#shepherd-teste', on: 'top' }, text: 'Test' }); tour.start(); }); } 
Enter fullscreen mode Exit fullscreen mode

Onde [0, 50], escolhe se a nossa seta (e consequentemente o elemento criado pelo shepherd) estará mais longe ou mais perto do elemento em destaque (referenciado no attachTo). Quanto maior o segundo número, mais distante a seta/elemento estará.

Exemplo com [0, 50]:
Exemplo com [0, 50]

Exemplo com [0,0]:
Exemplo com [0,0]


Ir para a parte 2.

Top comments (1)

Collapse
 
arnon profile image
Arnon Rodrigues

Muito bom!!
Valeu!