1
resposta

Erro no if: no lastFocusableElement (botão Cancel) foco sempre volta para o first, com ou sem shift

Flávio, sugestão de correção nesta aula:

Da forma como você implementou os ifs para tratar o primeiro e o último elementos, o if do último (botão Cancel) é executado independente de ter shift ou não. Ou seja, não é possível voltar dele para o submit com shift+tab. Faltou um !event.shiftKey.

Então no lugar de:

if(event.shiftKey && document.activeElement === this.firstFocusableElement){
      this.lastFocusableElement.focus();
      event.preventDefault();
    } else if(document.activeElement === this.lastFocusableElement){
      this.firstFocusableElement.focus();
      event.preventDefault();
    }

deveria ser

if(event.shiftKey && document.activeElement === this.firstFocusableElement){
  this.lastFocusableElement.focus();
  event.preventDefault();
} else if(!event.shiftKey && document.activeElement === this.lastFocusableElement){
  this.firstFocusableElement.focus();
  event.preventDefault();
}
1 resposta

Oi Gregory, tudo bem?

Muito obrigada por compartilhar essa informação conosco.

A sugestão de implementação que você apresentou parece correta. Ao adicionar o !event.shiftKey no segundo if, o foco deve voltar para o primeiro elemento quando o shift não estiver pressionado.

Sua contribuição é super importante para o fórum.

Um abraço e bons estudos.