Skip to content

feat(popup): add multiple popups support with configuration option#40

Open
oVitorio-ac wants to merge 2 commits intolouvorja:mainfrom
oVitorio-ac:Tela-Auxiliar
Open

feat(popup): add multiple popups support with configuration option#40
oVitorio-ac wants to merge 2 commits intolouvorja:mainfrom
oVitorio-ac:Tela-Auxiliar

Conversation

@oVitorio-ac
Copy link
Contributor

feat(popup): adiciona suporte para múltiplas janelas pop-up

📝 Visão geral

Este PR refatora o sistema de gerenciamento de pop-ups para suportar múltiplas instâncias simultâneas. Anteriormente, abrir um novo pop-up substituiria o existente; agora, os usuários podem alternar "Vários pop-ups" no novo módulo de configuração para gerenciar várias janelas de utilitários ao mesmo tempo.

🚀 Principais mudanças

1. Arquitetura Multi-Instâncias

  • Mudança de estado: Substituído o estado único popup por um objeto popups na loja. Cada instância agora é rastreada por meio de uma chave popup_instance exclusiva.
  • Ajudante pop-up: A lógica auxiliar foi atualizada para gerenciar, focar e rastrear eventos de ciclo de vida para várias janelas simultaneamente.
  • Limpeza automática: Lógica adicionada ao auxiliar Módulos para fechar automaticamente instâncias pop-up quando seus módulos associados não estiverem mais ativos.

2. Sincronização de estado aprimorada

  • Sistema de transmissão: AppData agora transmite alterações de configuração e estado para todas instâncias pop-up ativas, garantindo a consistência da UI em todo o espaço de trabalho.
  • Rastreamento por módulo: O tratamento de mensagens nas visualizações Principal e Popup foi atualizado para manter o isolamento de estado independente para cada módulo.

3. Novo módulo de configuração

  • Preferência do usuário: Introduziu uma alternância multiple_popups no novo módulo "Config".
  • Flexibilidade: os usuários podem escolher entre o comportamento clássico de pop-up único ou o novo fluxo de trabalho de múltiplas janelas.

⚠️ MUDANÇA DE QUEBRA

A estrutura de dados para persistência de pop-up mudou.

  • Estado antigo: state.popup (Objeto)
  • Novo estado: state.popups (coleção de objetos codificados por ID de instância)
  • Nova chave: Adicionado popup_instance para identificar janelas específicas.

Observação: appdata locais existentes para pop-ups podem ser redefinidos ou exigir reconfiguração no primeiro carregamento.


🛠 Especificações Técnicas

Recurso Detalhe de implementação
Gerenciamento de loja Transição de popup: {} para popups: { [id]: {} }.
Comunicação Utiliza BroadcastChannel / EventBus para sincronizar AppData entre janelas.
Limpeza Ouvintes baseados em gancho para fechar pop-ups órfãos.

🧪 Instruções de teste

  1. Ativar recurso: Vá para o novo módulo Config e ative Vários pop-ups.
  2. Teste Multi-Open: Abra o Relógio e depois o Cronômetro. Ambos agora devem aparecer em janelas pop-up separadas (se acionados como pop-ups).
  3. Teste de sincronização: altere uma configuração global (como tema ou idioma) e verifique se todos os pop-ups abertos refletem a alteração imediatamente.
  4. Teste de fechamento automático: Feche um módulo na visualização principal e verifique se sua janela pop-up correspondente fecha automaticamente.
  5. Regressão de modo único: Desative "Vários pop-ups" e verifique se o aplicativo reverte para o comportamento padrão "um pop-up por vez".
Screencast.from.2026-03-04.13-30-12.mp4

Add support for multiple simultaneous popup windows. This includes:
- New "config" module with UI to enable/disable multiple popups feature
- Updated Popup helper to manage multiple popup instances via popups object
- Modified AppData to broadcast data changes to all active popups
- Updated Screen component to handle multiple popup states
- Added auto-closing logic in Modules helper when no active modules remain
- Enhanced Main.vue and Popup.vue to track popup module identity in messages
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant