Package Exports
- @pedrohrs/deep-service-desk-widget
- @pedrohrs/deep-service-desk-widget/dist/deep-service-desk-widget.umd.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@pedrohrs/deep-service-desk-widget) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
🎫 Widget Deep Service Desk
Widget Vue.js para integração com o sistema Deep Service Desk. Permite criar tickets de forma simples e segura em qualquer aplicação Vue.js.
✨ Características
- ✅ Compatível: Vue 2.7.16+ e Vue 3.x
- ✅ Botão Flutuante: Aparece automaticamente em todas as páginas
- ✅ Plug & Play: Instalação única, funciona em toda a aplicação
- ✅ Seguro: Autenticação obrigatória
- ✅ Flexível: Configuração via plugin Vue ou props
- ✅ Simples: Instalação via npm e configuração global
- ✅ Responsivo: Interface adaptável a diferentes telas
- ✅ Notificações: Feedback visual automático
- ✅ Configurável: UUID único por cliente
📋 Pré-requisitos
- Vue.js 2.7.16+ ou Vue.js 3.x
- Token de autenticação válido no localStorage
- UUID do cliente
🚀 Instalação
1. Instalar via npm
npm install @pedrohrs/deep-service-desk-widget2. Configurar no main.js
Vue 3
import { createApp } from 'vue'
import App from './App.vue'
import DeepServiceDeskPlugin from '@pedrohrs/deep-service-desk-widget'
const app = createApp(App)
app.use(DeepServiceDeskPlugin, {
apiUrl: 'http://localhost:3000/api',
clientUuid: 'seu-uuid-do-cliente'
})
app.mount('#app')Vue 2.7.16
import Vue from 'vue'
import App from './App.vue'
import DeepServiceDeskPlugin from '@pedrohrs/deep-service-desk-widget'
Vue.use(DeepServiceDeskPlugin, {
apiUrl: 'http://localhost:3000/api',
clientUuid: 'seu-uuid-do-cliente'
})
new Vue({
render: h => h(App),
}).$mount('#app')3. Pronto! 🎉
Após a instalação, um botão flutuante aparecerá automaticamente no canto inferior direito de todas as páginas da sua aplicação. Os usuários podem clicar nele para abrir o formulário de criação de tickets.
💻 Funcionalidades Automáticas
Botão Flutuante
- 🔵 Posição: Canto inferior direito (responsivo)
- 🎨 Design: Gradiente moderno com efeitos hover
- 📱 Responsivo: Adapta-se a dispositivos móveis
- 🎯 Tooltip: "Abrir Suporte"
Notificações
- ✅ Sucesso: Notificação verde quando ticket é criado
- ❌ Erro: Notificação vermelha em caso de erro
- ⏰ Auto-dismiss: Desaparecem automaticamente após 5 segundos
- 🎬 Animações: Entrada e saída suaves
💻 Uso Básico
Funcionamento Automático
Após instalar o plugin, o widget funciona automaticamente:
- Botão flutuante aparece em todas as páginas
- Clique no botão abre o formulário de ticket
- Notificações automáticas informam sobre sucesso/erro
- Eventos globais permitem integração personalizada
Escutar Eventos (Opcional)
// Escutar quando um ticket é criado
window.addEventListener('ticket-created', (event) => {
const ticket = event.detail
console.log('Ticket criado:', ticket)
// Sua lógica personalizada aqui
})
// Escutar erros
window.addEventListener('ticket-error', (event) => {
const error = event.detail
console.error('Erro no ticket:', error)
// Sua lógica de tratamento de erro aqui
})Controle Programático
// Em qualquer componente Vue
export default {
methods: {
abrirSuporte() {
// Abrir o widget programaticamente
this.$deepServiceDeskButton.openTicket()
},
esconderBotao() {
// Esconder o botão flutuante
this.$deepServiceDeskButton.hideFloatingButton()
},
mostrarBotao() {
// Mostrar o botão flutuante
this.$deepServiceDeskButton.showFloatingButton()
}
}
}Uso Manual (Opcional)
Se preferir usar o componente manualmente em páginas específicas:
<template>
<div>
<!-- Seu conteúdo -->
<button @click="openTicketWidget">🎫 Novo Ticket</button>
<!-- Widget manual -->
<TicketWidget
@ticket-created="onTicketCreated"
@ticket-error="onTicketError"
/>
</div>
</template>
<script>
export default {
methods: {
openTicketWidget() {
// Disparar evento para abrir o widget
window.dispatchEvent(new CustomEvent('new-ticket'))
},
onTicketCreated(data) {
console.log('Ticket criado:', data)
},
onTicketError(error) {
console.error('Erro:', error)
}
}
}
</script>🔧 Configuração Avançada
Opções do Plugin
app.use(DeepServiceDeskPlugin, {
clientUuid: 'uuid-do-cliente', // UUID do cliente (obrigatório)
apiUrl: 'http://localhost:3000/api', // URL da API (opcional)
showFloatingButton: true // Mostrar botão flutuante (padrão: true)
})Desabilitar Botão Flutuante
Se preferir usar apenas componentes manuais:
app.use(DeepServiceDeskPlugin, {
clientUuid: 'seu-uuid-do-cliente',
apiUrl: 'http://localhost:3000/api',
showFloatingButton: false // Desabilita o botão flutuante
})Props do Componente (Uso Manual)
| Prop | Tipo | Padrão | Descrição |
|---|---|---|---|
apiUrl |
String | Config global | URL da API (sobrescreve config global) |
clientUuid |
String | Config global | UUID do cliente (sobrescreve config global) |
Prioridade de Configuração
- Props do componente (maior prioridade)
- Configuração global do plugin
- Variáveis de ambiente
- Configuração manual via interface
Métodos Globais Disponíveis
| Método | Descrição |
|---|---|
$deepServiceDeskButton.openTicket() |
Abre o widget programaticamente |
$deepServiceDeskButton.showFloatingButton() |
Mostra o botão flutuante |
$deepServiceDeskButton.hideFloatingButton() |
Esconde o botão flutuante |
Eventos Globais
| Evento | Payload | Descrição |
|---|---|---|
ticket-created |
{ detail: { id, title, description, ... } } |
Ticket criado com sucesso |
ticket-error |
{ detail: { message, details } } |
Erro ao criar ticket |
new-ticket |
null |
Dispara abertura do widget |
🔐 Autenticação
O widget busca tokens de autenticação na seguinte ordem:
localStorage.getItem('token-tc')(sistemas externos)localStorage.getItem('token-deep')(Deep Service Desk)localStorage.getItem('authToken')(genérico)
Formato do token de usuário
// user-tc ou user-deep (base64 encoded JSON)
{
"id": 1,
"email": "usuario@exemplo.com",
"name": "Nome do Usuário",
"role": "user"
}🎨 Personalização
CSS Classes disponíveis
.ticket-widget- Container principal.popup-overlay- Overlay do modal.popup-content- Conteúdo do modal.uuid-config-section- Seção de configuração do UUID.widget-status- Seção de status.ticket-form- Formulário
Exemplo de personalização
/* Personalizar cores do widget */
.ticket-widget .popup-header {
background-color: #your-brand-color;
}
.ticket-widget .btn-submit {
background-color: #your-brand-color;
}🔄 Fluxo de Uso
Com configuração global:
- Widget carrega UUID automaticamente do plugin
- Widget inicializa e busca cliente na API
- Usuário clica para abrir o widget
- Widget exibe formulário de ticket diretamente
Sem configuração ou com erro:
- Usuário clica para abrir o widget
- Widget exibe tela de configuração solicitando UUID
- Usuário insere UUID do cliente
- Widget valida UUID e busca cliente na API
- Widget exibe formulário de ticket
Alteração de UUID:
- Usuário clica no botão "🔄" no status do widget
- Widget limpa configuração atual
- Widget exibe tela de configuração novamente
🐛 Solução de Problemas
Plugin não configurado
💡 UUID do cliente não configurado via plugin.Solução: Configure o plugin no main.js com app.use(DeepServiceDeskPlugin, { clientUuid: 'seu-uuid' }).
Token não encontrado
Token de autenticação não encontrado. Faça login no sistema.Solução: Certifique-se de que o token está no localStorage.
Cliente não encontrado
Cliente não encontrado. Verifique se o UUID está correto.Solução: Verifique se o UUID está correto e se o cliente existe no sistema.
📦 Build e Desenvolvimento
Para desenvolvedores do widget
# Instalar dependências
npm install
# Desenvolvimento
npm run dev
# Build para produção
npm run build
# Lint
npm run lint📞 Suporte
Para suporte técnico, entre em contato com a equipe de desenvolvimento do Deep Service Desk.
📄 Licença
Este widget é parte do sistema Deep Service Desk.