# 🚫 Sistema de Bloqueio Temporário da Sidebar ## 📋 Resumo Sistema para bloquear botões específicos da sidebar temporariamente, ideal para deploys onde algumas funcionalidades ainda não foram refatoradas ou estão em manutenção. ## 🎯 Como Usar ### 1. **Configuração Rápida** Edite o arquivo: `projects/idt_app/src/app/shared/components/sidebar/sidebar.component.ts` Localize a seção **`temporaryBlocks`** (linha ~792): ```typescript private temporaryBlocks: { [key: string]: boolean } = { 'maintenance': true, // ✅ BLOQUEAR Manutenção 'reports': true, // ✅ BLOQUEAR Relatórios 'settings': true, // ✅ BLOQUEAR Configurações 'finances': false, // ✅ LIBERAR Finanças 'routes/shopee': true, // ✅ BLOQUEAR Shopee (submenu) // Adicione mais IDs conforme necessário }; ``` ### 2. **Bloquear um Botão** ```typescript 'nome-do-botao': true, // ✅ BLOQUEADO ``` ### 3. **Liberar um Botão** ```typescript 'nome-do-botao': false, // ✅ LIBERADO ``` ## 🔍 IDs Disponíveis ### **Botões Principais:** ```typescript 'dashboard' // Dashboard 'vehicles' // Veículos 'drivers' // Motoristas 'maintenance' // Manutenção 'finances' // Finanças 'routes' // Rotas 'reports' // Relatórios 'settings' // Configurações ``` ### **Submenus:** ```typescript 'finances/accountpayable' // Contas a Pagar 'routes/mercado-live' // Mercado Live 'routes/shopee' // Shopee ``` ## 🎨 Comportamento Visual ### ✅ **Botões Liberados:** - Funcionam normalmente - Cor e hover padrão - Clique navega para a página ### 🚫 **Botões Bloqueados:** - Aparência acinzentada (opacity: 0.5) - Ícone de cadeado (🔒) no final - Cursor `not-allowed` - Tooltip com motivo do bloqueio - Clique não navega - Submenus não expandem ## 💡 Exemplos Práticos ### **Deploy com Manutenção Bloqueada:** ```typescript private temporaryBlocks: { [key: string]: boolean } = { 'maintenance': true, // 🚫 Em refatoração 'reports': true, // 🚫 Aguardando nova API 'settings': false, // ✅ Funcionando }; ``` ### **Deploy com Shopee Desabilitado:** ```typescript private temporaryBlocks: { [key: string]: boolean } = { 'routes/shopee': true, // 🚫 API em manutenção 'routes/mercado-live': false, // ✅ Funcionando }; ``` ### **Liberar Tudo (Deploy Final):** ```typescript private temporaryBlocks: { [key: string]: boolean } = { // Todos os valores false ou remover as linhas }; ``` ## 🔧 Personalização Avançada ### **Alterar Mensagem do Tooltip:** Edite o método `applyTemporaryBlocks()` (linha ~1080): ```typescript if (this.temporaryBlocks[item.id]) { item.disabled = true; item.disabledReason = 'Sua mensagem personalizada aqui'; } ``` ### **Diferentes Mensagens por Item:** ```typescript private applyTemporaryBlocks(): void { const customMessages: { [key: string]: string } = { 'maintenance': 'Manutenção em refatoração - aguarde próxima versão', 'reports': 'Relatórios temporariamente indisponíveis', 'settings': 'Configurações em manutenção programada' }; this.menuItems = this.menuItems.map(item => { if (this.temporaryBlocks[item.id]) { item.disabled = true; item.disabledReason = customMessages[item.id] || 'Funcionalidade temporariamente indisponível'; } // ... resto do código }); } ``` ## 🚀 Fluxo de Deploy ### **1. Antes do Deploy:** ```typescript // Bloquear funcionalidades não finalizadas private temporaryBlocks: { [key: string]: boolean } = { 'maintenance': true, 'reports': true, 'settings': true, }; ``` ### **2. Compilar e Testar:** ```bash ng build idt_app --configuration production # Testar no ambiente de staging ``` ### **3. Deploy em Produção:** ```bash # Deploy com botões bloqueados ``` ### **4. Depois das Correções:** ```typescript // Liberar funcionalidades corrigidas private temporaryBlocks: { [key: string]: boolean } = { 'maintenance': false, // ✅ Corrigido 'reports': true, // 🚫 Ainda em trabalho 'settings': false, // ✅ Corrigido }; ``` ### **5. Deploy Final:** ```typescript // Liberar tudo private temporaryBlocks: { [key: string]: boolean } = {}; ``` ## 🎯 Benefícios ### ✅ **Para Deploy:** - Deploy seguro com funcionalidades incompletas - Usuários não acessam páginas quebradas - Feedback visual claro sobre indisponibilidade ### ✅ **Para Desenvolvimento:** - Controle granular por botão/submenu - Configuração simples e rápida - Reversível sem código complexo ### ✅ **Para Usuários:** - Interface consistente - Não quebra navegação - Feedback claro sobre status ## ⚠️ Observações Importantes 1. **Temporário**: Este sistema é para bloqueios temporários, não permanentes 2. **Não substitui**: Controle de permissões real (roles/permissions) 3. **Deploy**: Sempre testar antes de fazer deploy 4. **Documentar**: Comentar motivos dos bloqueios no código 5. **Limpar**: Remover bloqueios quando funcionalidades estiverem prontas ## 🔄 Rollback Rápido Para reverter bloqueios rapidamente: ```typescript private temporaryBlocks: { [key: string]: boolean } = { // Comentar linha para liberar: // 'maintenance': true, // ← Comentado = liberado }; ``` --- **Este sistema permite deploy seguro e controlado, evitando que usuários acessem funcionalidades em desenvolvimento.** 🚀