Plugin Directory

Changeset 3344781


Ignore:
Timestamp:
08/14/2025 04:20:54 PM (6 months ago)
Author:
newcodebyte
Message:

last touch to input field

Location:
chatbot-ai-free-models
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • chatbot-ai-free-models/tags/1.6.2/js/chatbot-admin.js

    r3344146 r3344781  
    8888        });
    8989
    90 // --- GESTIONE CAMPO API KEY (MOSTRA/NASCONDI E LARGHEZZA AUTOMATICA) ---
    91 
    92 // Seleziona gli elementi una sola volta
     90// --- GESTIONE CAMPO API KEY (Versione Definitiva) ---
     91
    9392const apiKeyField = $('#chatbot_api_key_field');
    9493
    95 // Controlla se il campo esiste prima di procedere
    9694if (apiKeyField.length > 0) {
    9795   
    98     // Crea l'elemento 'span' per misurare il testo
    99     $('body').append('<span id="api_key_ruler" style="position:absolute; top:-9999px; left:-9999px; white-space:nowrap; font: inherit;"></span>');
     96    // Crea un unico "righello" invisibile per misurare il testo
     97    $('body').append('<span id="api_key_ruler" style="position:absolute; top:-9999px; left:-9999px; white-space:nowrap;"></span>');
    10098    const apiKeyRuler = $('#api_key_ruler');
    10199    const apiKeyContainer = apiKeyField.closest('.newcodebyte-password-field');
    102100
    103101    const adjustApiKeyFieldWidth = function() {
    104         // Copia gli stili di font dall'input allo span di misurazione
     102        // Copia gli stili di font esatti dall'input al nostro "righello"
    105103        apiKeyRuler.css({
    106104            'font-size': apiKeyField.css('font-size'),
     
    110108        });
    111109
    112         let textToMeasure = apiKeyField.val();
     110        // Misura SEMPRE la larghezza del testo reale, ignorando i pallini
     111        apiKeyRuler.text(apiKeyField.val());
    113112       
    114         // Simula la larghezza dei pallini se il campo è di tipo password
    115         if (apiKeyField.attr('type') === 'password') {
    116             textToMeasure = '•'.repeat(textToMeasure.length);
    117         }
     113        // Calcola la larghezza necessaria per il testo visibile + spazio per l'icona
     114        const requiredWidth = apiKeyRuler.outerWidth() + 5;
    118115       
    119         apiKeyRuler.text(textToMeasure);
    120        
    121         // Calcola la nuova larghezza: larghezza del testo + spazio per l'icona
    122         const newWidth = apiKeyRuler.outerWidth() + 40;
    123        
    124         // Applica la nuova larghezza al contenitore, con un minimo per non essere troppo stretto
    125         apiKeyContainer.width(Math.max(250, newWidth));
     116        // Applica la larghezza calcolata, con un minimo di 250px
     117        apiKeyContainer.width(Math.max(250, requiredWidth));
    126118    };
    127119
    128     // Esegui la funzione al caricamento della pagina, quando si scrive e quando si clicca l'occhio
     120    // Aggiusta la larghezza al caricamento e ogni volta che l'utente scrive
    129121    adjustApiKeyFieldWidth();
    130122    apiKeyField.on('input', adjustApiKeyFieldWidth);
    131123
     124    // Gestisce il click sull'occhio. NON deve più ricalcolare la larghezza.
    132125    $('.toggle-api-key').on('click', function() {
    133126        const fieldType = apiKeyField.attr('type');
     
    140133            $(this).removeClass('dashicons-hidden').addClass('dashicons-visibility');
    141134        }
    142        
    143         adjustApiKeyFieldWidth();
    144135    });
    145136}       
  • chatbot-ai-free-models/trunk/js/chatbot-admin.js

    r3344146 r3344781  
    8888        });
    8989
    90 // --- GESTIONE CAMPO API KEY (MOSTRA/NASCONDI E LARGHEZZA AUTOMATICA) ---
    91 
    92 // Seleziona gli elementi una sola volta
     90// --- GESTIONE CAMPO API KEY (Versione Definitiva) ---
     91
    9392const apiKeyField = $('#chatbot_api_key_field');
    9493
    95 // Controlla se il campo esiste prima di procedere
    9694if (apiKeyField.length > 0) {
    9795   
    98     // Crea l'elemento 'span' per misurare il testo
    99     $('body').append('<span id="api_key_ruler" style="position:absolute; top:-9999px; left:-9999px; white-space:nowrap; font: inherit;"></span>');
     96    // Crea un unico "righello" invisibile per misurare il testo
     97    $('body').append('<span id="api_key_ruler" style="position:absolute; top:-9999px; left:-9999px; white-space:nowrap;"></span>');
    10098    const apiKeyRuler = $('#api_key_ruler');
    10199    const apiKeyContainer = apiKeyField.closest('.newcodebyte-password-field');
    102100
    103101    const adjustApiKeyFieldWidth = function() {
    104         // Copia gli stili di font dall'input allo span di misurazione
     102        // Copia gli stili di font esatti dall'input al nostro "righello"
    105103        apiKeyRuler.css({
    106104            'font-size': apiKeyField.css('font-size'),
     
    110108        });
    111109
    112         let textToMeasure = apiKeyField.val();
     110        // Misura SEMPRE la larghezza del testo reale, ignorando i pallini
     111        apiKeyRuler.text(apiKeyField.val());
    113112       
    114         // Simula la larghezza dei pallini se il campo è di tipo password
    115         if (apiKeyField.attr('type') === 'password') {
    116             textToMeasure = '•'.repeat(textToMeasure.length);
    117         }
     113        // Calcola la larghezza necessaria per il testo visibile + spazio per l'icona
     114        const requiredWidth = apiKeyRuler.outerWidth() + 5;
    118115       
    119         apiKeyRuler.text(textToMeasure);
    120        
    121         // Calcola la nuova larghezza: larghezza del testo + spazio per l'icona
    122         const newWidth = apiKeyRuler.outerWidth() + 40;
    123        
    124         // Applica la nuova larghezza al contenitore, con un minimo per non essere troppo stretto
    125         apiKeyContainer.width(Math.max(250, newWidth));
     116        // Applica la larghezza calcolata, con un minimo di 250px
     117        apiKeyContainer.width(Math.max(250, requiredWidth));
    126118    };
    127119
    128     // Esegui la funzione al caricamento della pagina, quando si scrive e quando si clicca l'occhio
     120    // Aggiusta la larghezza al caricamento e ogni volta che l'utente scrive
    129121    adjustApiKeyFieldWidth();
    130122    apiKeyField.on('input', adjustApiKeyFieldWidth);
    131123
     124    // Gestisce il click sull'occhio. NON deve più ricalcolare la larghezza.
    132125    $('.toggle-api-key').on('click', function() {
    133126        const fieldType = apiKeyField.attr('type');
     
    140133            $(this).removeClass('dashicons-hidden').addClass('dashicons-visibility');
    141134        }
    142        
    143         adjustApiKeyFieldWidth();
    144135    });
    145136}       
Note: See TracChangeset for help on using the changeset viewer.