Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(slider): changed the properties that were generating an error in… #115

Merged
merged 6 commits into from
Nov 6, 2023

Conversation

joaocongio
Copy link
Contributor

What problem is this solving?

  • O atributo aria-controls não possui valor válido, impedindo que leitores de tela consiga interpretar seu valor.
  • Os elementos Dots possuem tabIndex maior que 0. Uma das soluções é manter o tabIndex dos Dots em 0, conforme essa PR.

Esses problemas são acusados na métrica de Acessibilidade pelo Lighthouse.

How to test it?

Workspace
Realizar o teste via Lighthouse ou Pagespeeds e comparar WS com a URL de produção.

Screenshots or example usage:

Antes (era acusado pelo Lighthouse):
image
image

Depois (deixou de ser acusado pelo Lighthouse):
image

@joaocongio joaocongio requested a review from a team as a code owner September 30, 2023 15:21
@joaocongio joaocongio requested review from lucasfp13, lariciamota and RodrigoTadeuF and removed request for a team September 30, 2023 15:21
@vtex-io-ci-cd
Copy link

vtex-io-ci-cd bot commented Sep 30, 2023

Hi! I'm VTEX IO CI/CD Bot and I'll be helping you to publish your app! 🤖

Please select which version do you want to release:

  • Patch (backwards-compatible bug fixes)

  • Minor (backwards-compatible functionality)

  • Major (incompatible API changes)

And then you just need to merge your PR when you are ready! There is no need to create a release commit/tag.

  • No thanks, I would rather do it manually 😞

@joaocongio
Copy link
Contributor Author

Hi! I'm VTEX IO CI/CD Bot and I'll be helping you to publish your app! 🤖

Please select which version do you want to release:

  • Patch (backwards-compatible bug fixes)
  • Minor (backwards-compatible functionality)
  • Major (incompatible API changes)

And then you just need to merge your PR when you are ready! There is no need to create a release commit/tag.

  • No thanks, I would rather do it manually 😞

Copy link

@ganobrega ganobrega left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

Copy link
Contributor

@filipewl filipewl left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Opa João! Muito obrigado pela primeira contribuição.
🙌

Analisei o PR e apesar de, aparentemente, ele resolver o problema, acredito que não deva ser desse jeito. Explico: analisei esse componente e de fato, do jeito que está atualmente, ele está reclamando que o atributo aria-controls está sendo usado incorretamente. Porém, isso só acontece porque está faltando associar os valores do aria-controls ("slider-items" por padrão) a um id correspondente com este mesmo valor (referencia 1 e 2).

Me parece que a solução então é adicionar o attribute id num dos elementos wrapper principais do componente com o mesmo valor do controls. Acho que adicionar nesse section do componente Slider resolveria esse caso. Faz sentido?
CleanShot 2023-10-31 at 15 27 07

Você poderia testar dessa maneira?

const controls = `${label
.toLowerCase()
.trim()
.replace(/ /g, '-')}-items`

@@ -71,7 +69,7 @@ const Arrow: FC<Props> = ({
} absolute transparent ma2 flex items-center justify-center bn outline-0 pointer`}
style={{ background: 'transparent' }}
onClick={handleArrowClick}
aria-controls={controls}
role="button"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Você acha que esse role="button" é necessário?

Eu acho que todo elemento button por padrão já herda esse role de button.

CleanShot 2023-10-31 at 14 43 59

@filipewl
Copy link
Contributor

filipewl commented Nov 1, 2023

Fala @joaocongio! Vi agora seu último commit 544a181, mas acredito que ainda não seja isso.

Minha proposta não é remover totalmente as props controls usadas nos atributos aria-controls, mas sim deixar como eles estão e adicionar um id ao section do Slider com o valor do controls. Desta maneira, tanto os botões de anterior/próximo, como os dots, estariam corretamente associados a section pelo valor do id/aria-controls. Isso deve ser suficiente pra resolver o erro de acessibilidade reportado.

@joaocongio
Copy link
Contributor Author

Fala @joaocongio! Vi agora seu último commit 544a181, mas acredito que ainda não seja isso.

Minha proposta não é remover totalmente as props controls usadas nos atributos aria-controls, mas sim deixar como eles estão e adicionar um id ao section do Slider com o valor do controls. Desta maneira, tanto os botões de anterior/próximo, como os dots, estariam corretamente associados a section pelo valor do id/aria-controls. Isso deve ser suficiente pra resolver o erro de acessibilidade reportado.

Desculpa, acabei vendo apenas um comentário.
Analisei o que você comentou e faz sentido sim, associar a section, arrow e dots à um ID. Utilizando essa estratégia, o Lighthouse também deixou de acusar o problema.
Nesse último commit eu voltei os controls e associei o id da section a arrow e dots.
Para a propriedade ID mantive o padrão "slider-items", porém adicionei também um identificador randômico para não ter duplicações de ID. Possui alguma ideia diferente ou que possa ser melhor?
Para os dots, alterei a estratégia do tabIndex, antes eu havia deixado todos com o valor 0. Agora apenas o dot ativo fica com o valor 0 e o restante que não está em tela, fica com -1. Ref TabIndex.

Copy link
Contributor

@filipewl filipewl left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Muito obrigado pela contribuição e pela paciência João!

Farei o merge deste PR e você já poderá instalar manualmente a versão nova que será gerada nas contas que quiser.

Em algum momento posterior, quando as condições foram propícias, nós faremos o deploy geral automático para as demais contas.

@filipewl filipewl merged commit 0871ed4 into vtex-apps:master Nov 6, 2023
4 checks passed
Copy link

vtex-io-ci-cd bot commented Nov 6, 2023

Your PR has been merged! App is being published. 🚀
Version 0.24.3 → 0.24.4

After the publishing process has been completed (check #vtex-io-releases) and doing A/B tests with the new version, you can deploy your release by running:

vtex deploy [email protected]

After that your app will be updated on all accounts.

For more information on the deployment process check the docs. 📖

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants