From 7b0bc89f0602c27c62d7c624f23c8d92f628dc00 Mon Sep 17 00:00:00 2001 From: Ricardo Carneiro Date: Sun, 14 Sep 2025 21:16:31 -0300 Subject: [PATCH] =?UTF-8?q?fix:=20Campo=20maior=20para=20digita=C3=A7?= =?UTF-8?q?=C3=A3o=20de=20endere=C3=A7o=20de=20localiza=C3=A7=C3=A3o?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/BCards.Web/Views/Admin/ManagePage.cshtml | 39 +++++++++++++++----- 1 file changed, 29 insertions(+), 10 deletions(-) diff --git a/src/BCards.Web/Views/Admin/ManagePage.cshtml b/src/BCards.Web/Views/Admin/ManagePage.cshtml index 25634de..49af073 100644 --- a/src/BCards.Web/Views/Admin/ManagePage.cshtml +++ b/src/BCards.Web/Views/Admin/ManagePage.cshtml @@ -1776,6 +1776,7 @@ }, 'fas fa-map-marker-alt': { prefix: 'https://maps.google.com/?q=', + visualPrefix: '📍 Maps:', placeholder: 'Rua das Flores, 123 - São Paulo, SP', instructions: 'Digite o endereço completo (acentos e espaços serão codificados automaticamente)', color: 'bg-warning' @@ -1820,7 +1821,9 @@ if (iconValue && linkTypes[iconValue]) { const config = linkTypes[iconValue]; - $prefix.text(config.prefix) + // Usar visualPrefix se existir, senão usar prefix normal + const displayPrefix = config.visualPrefix || config.prefix; + $prefix.text(displayPrefix) .removeClass('bg-primary bg-success bg-danger bg-warning bg-info bg-secondary bg-dark') .addClass(config.color); $input.attr('placeholder', config.placeholder); @@ -1877,13 +1880,29 @@ // Eventos para tratar entrada do usuário $input.on('input paste keyup', function() { let value = $(this).val(); - const currentPrefix = $('#urlPrefix').text() || 'https://'; + + // Obter o prefixo real baseado no ícone selecionado + const selectedIcon = $('#linkIcon').val(); + let realPrefix = 'https://'; + + const linkTypes = { + 'fas fa-envelope': { prefix: 'mailto:' }, + 'fas fa-phone': { prefix: 'tel:' }, + 'fas fa-map-marker-alt': { prefix: 'https://maps.google.com/?q=' }, + 'fab fa-youtube': { prefix: 'https://youtube.com/' }, + 'fab fa-linkedin': { prefix: 'https://linkedin.com/in/' }, + 'fab fa-github': { prefix: 'https://github.com/' } + }; + + if (selectedIcon && linkTypes[selectedIcon]) { + realPrefix = linkTypes[selectedIcon].prefix; + } // Apenas processar/limpar a URL para tipos que não sejam de mapa - if (currentPrefix !== 'https://maps.google.com/?q=') { + if (realPrefix !== 'https://maps.google.com/?q=') { let processedValue = value.trim(); processedValue = cleanAnyUrlPrefix(processedValue); - + // Apenas atualiza o DOM se o valor foi alterado para não atrapalhar o cursor if (processedValue !== value) { $(this).val(processedValue); @@ -1894,18 +1913,18 @@ // Atualizar campo hidden com URL completa if (value) { // Tratar casos especiais - if (currentPrefix === 'https://maps.google.com/?q=') { - // Para mapas, o usuário digita normalmente. O encoding é feito apenas na URL final. + if (realPrefix === 'https://maps.google.com/?q=') { + // Para mapas, o usuário digita normalmente, encoding só na URL final const encodedValue = encodeURIComponent(value); - $hidden.val(currentPrefix + encodedValue); - } else if (currentPrefix === 'tel:') { + $hidden.val(realPrefix + encodedValue); + } else if (realPrefix === 'tel:') { // Para telefone, apenas números const telValue = value.replace(/\D/g, ''); $(this).val(telValue); - $hidden.val(currentPrefix + telValue); + $hidden.val(realPrefix + telValue); } else { // Para outros tipos, a URL é concatenada diretamente - $hidden.val(currentPrefix + value); + $hidden.val(realPrefix + value); } } else { $hidden.val('');