Uso incorreto do atributo "for" das Labels

Problema

A partir da versão 3.5.526 do Latromi Web, o atributo for dos elementos do tipo label do Formulário, deixaram de apontar para o elemento input e passaram a apontar para elemento div.fieldWrapper

Essa mudança acidental, além de gerar problemas de retro compatibilidade em rotinas personalizadas, está semanticamente errada.

Veja a definição do atributo for neste link.

Solução

A Plataforma deve ser alterada para que o atributo for das label’s aponte para o elemento input ou outro elemento de formulário associado ao campo do Latromi (ex: select, number, date, upload, check). Quando não houve um elemento de formulário associado, o atributo for não deve ser especificado.

Paliativamente, nos casos onde esse comportamento estiver quebrando um código personalizado existente, adicione o código abaixo no JavaScript Público da Plataforma:

//  Este script tem o objetivo apontar a referência das labels dos
//  forms para os campos "input", preservando a retrocompatibilidade
latromi.formManager.setOnFormCreatedCallback(function (ev) { 
    Object.keys(ev.form.fields).forEach(fieldName => {
        const fieldData = ev.form.getFieldData(fieldName);
        
        // Obtém o elemento "wrapper" de cada campo
        const wrapper  = document.getElementById(fieldData.wrapperClientId);
        if (!wrapper) return;
        // Procura uma label, dentro do "wrapper", que esteja referenciando o próprio "wrapper"
        const label = wrapper.querySelector('label[for="'+wrapper.id+'"]');
        if (!label) return;
        // Ajusta a referência da label, apontando para o input correspondente
        label.htmlFor = fieldData.clientId;
        //
        console.log('Atributo "for" da Label do campo "' + fieldData.labelText + '" ajustado');
    });
});