Jump to content

MediaWiki:Common.js: Difference between revisions

No edit summary
No edit summary
Line 17: Line 17:




/**
/* Botão de Copiar - Versão Final Estável */
* BOTÃO DE COPIAR (Copy Button)
* Este script cria o botão de cópia em todos os blocos de código
*/
$(function() {
$(function() {
    // Procura os blocos gerados pela extensão SyntaxHighlight
     $('.mw-highlight').each(function() {
     $('.mw-highlight').each(function() {
         var $block = $(this);
         var $block = $(this);
       
        // Evita botões duplicados
         if ($block.find('.copy-btn').length > 0) return;
         if ($block.find('.copy-btn').length > 0) return;


        // Cria o botão com estilo azul
         var $button = $('<button>')
         var $button = $('<button>')
             .text('Copy')
             .text('Copy')
Line 35: Line 28:
             .css({
             .css({
                 'position': 'absolute',
                 'position': 'absolute',
                 'top': '10px',       // Mais espaço do topo
                 'top': '10px',
                 'right': '10px',     // Mais espaço da direita
                 'right': '10px',
                 'z-index': '100',
                 'z-index': '100',
                 'padding': '8px 16px', // Aumenta o tamanho (altura e largura)
                'width': '80px',        // Largura fixa para o botão não encolher/mudar de tamanho
                 'background': '#1B2826', // COR: Verde (podes mudar para #000 para preto, etc)
                 'padding': '8px 0',     // Padding vertical
                 'color': '#fff',
                 'background': '#28a745', // Verde inicial
                 'color': '#ffffff',     // Texto sempre branco
                 'border': 'none',
                 'border': 'none',
                 'border-radius': '8px', // CORNER RADIUS: Mais arredondado
                 'border-radius': '12px', // Cantos bem arredondados
                 'cursor': 'pointer',
                 'cursor': 'pointer',
                 'font-size': '14px',   // FONTE: Maior
                 'font-size': '13px',
                 'font-weight': 'bold',
                 'font-weight': 'bold',
                 'transition': '0.3s'   // Suaviza a mudança de cor
                'outline': 'none',      // Remove contornos ao clicar
                 'transition': 'background 0.3s ease'
             });
             });


         // Função para copiar o texto
         // Forçar a cor do texto para não ficar roxo (importante para Wikis)
         $button.on('click', function() {
        $button.css('color', '#ffffff !important');
 
        // Estado: Rato por cima (Hover)
        $button.hover(
            function() { $(this).css('background', '#218838'); },
            function() {
                // Volta para a cor correta dependendo se acabou de copiar ou não
                var bg = ($(this).text() === 'Copied!') ? '#007bff' : '#28a745';
                $(this).css('background', bg);
            }
        );
 
         $button.on('click', function(e) {
            e.preventDefault(); // Impede qualquer comportamento de link da Wiki
             var text = $block.find('pre').text();
             var text = $block.find('pre').text();
              
              
             navigator.clipboard.writeText(text).then(function() {
             navigator.clipboard.writeText(text).then(function() {
                 $button.text('Copied!').css('background', '#00af89');
                // Estado: Sucesso (Copied!)
                 $button.text('Copied!')
                      .css({
                          'background': '#007bff', // Azul quando copiado
                          'color': '#ffffff'
                      });
               
                 setTimeout(function() {
                 setTimeout(function() {
                     $button.text('Copy').css('background', '#3366cc');
                    // Estado: Voltar ao normal
                     $button.text('Copy')
                          .css({
                              'background': '#28a745',
                              'color': '#ffffff'
                          });
                 }, 2000);
                 }, 2000);
            }).catch(function(err) {
                console.error('Erro ao copiar: ', err);
             });
             });
         });
         });


        // Adiciona o botão ao bloco
         $block.css('position', 'relative').prepend($button);
         $block.css('position', 'relative').prepend($button);
     });
     });
});
});