fix: Campo maior para digitação de endereço de localização
All checks were successful
BCards Deployment Pipeline / Run Tests (push) Successful in 2s
BCards Deployment Pipeline / PR Validation (push) Has been skipped
BCards Deployment Pipeline / Build and Push Image (push) Successful in 15m49s
BCards Deployment Pipeline / Deploy to Production (ARM - OCI) (push) Successful in 1m51s
BCards Deployment Pipeline / Deploy to Staging (x86 - Local) (push) Has been skipped
BCards Deployment Pipeline / Cleanup Old Resources (push) Has been skipped
BCards Deployment Pipeline / Deployment Summary (push) Successful in 0s

This commit is contained in:
Ricardo Carneiro 2025-09-14 21:16:31 -03:00
parent 378bcf54b6
commit 7b0bc89f06

View File

@ -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('');