Table, Tree table: add dataReloadBtnLoading input so the reload button keeps focus while data loads
I maintainer di solito rispondono entro 1 giorno
Valutazione
Questa issue non è ancora stata valutata.
Descrizione
Problem
cps-table and cps-tree-table only offer dataReloadBtnDisabled for the "Reload data" toolbar button. Apps bind it to their loading state, so the button is disabled while the data reloads.
A disabled button can't keep keyboard focus. When a keyboard user presses "Reload data", focus falls back to <body> and the focus ring disappears until the data arrives. With a real backend that takes a second or more. Screen readers lose their place too. (WCAG 2.4.3 Focus Order, 2.4.7 Focus Visible.)
Apps can move focus back once loading ends, but the gap remains. The only way around it today is to stop disabling the button, and then the user gets no sign that a reload is running.
Proposal
Add an input dataReloadBtnLoading: boolean (default false) to CpsTableComponent and CpsTreeTableComponent, and pass it to the reload button:
<cps-button
ariaLabel="Reload data"
icon="refresh"
...
[disabled]="dataReloadBtnDisabled"
[loading]="dataReloadBtnLoading"
(clicked)="onReloadData()">
</cps-button>
cps-button already handles loading the way we need:
- the native button stays enabled, so it keeps focus and its focus ring;
- clicks and Enter are ignored while loading, so no double reloads;
- it gets
aria-busy="true"and the loading style.
dataReloadBtnDisabled stays as it is, for when reloading really isn't possible.
Example
<cps-table
[showDataReloadBtn]="true"
[dataReloadBtnLoading]="loading"
(dataReloadBtnClicked)="reload()"
[loading]="loading">
</cps-table>
- Lingua principale
- TypeScript
- Stelle
- 9
- Fork
- 7
- Merge medio
- 1g 5h
- PR unite (30g)
- 7
Preparare l'ambiente
Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di AbsaOSS/cps-shared-ui
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
AbsaOSS/cps-shared-ui#875 ·
I maintainer di solito rispondono entro 1 giorno
-
enhancement library
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 85/100
AbsaOSS/cps-shared-ui#644 ·
I maintainer di solito rispondono entro 1 giorno
-
Fix WCAG 2.5.3 label-in-name mismatches and re-enable axe ruleForse già presa @lukasmatta l’ha presa oggi. Apertaaccessibility
AbsaOSS/cps-shared-ui#900 · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
-
Table, Tree table: focus is lost after closing a column filter with Apply, Clear or CloseForse già presa @fateeand l’ha presa 3 giorni fa. Apertabug library
AbsaOSS/cps-shared-ui#896 · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
-
CpsDatepickerComponent: disabled cells are not marked aria-disabledForse già presa @fateeand l’ha presa 3 giorni fa. Apertabug library
AbsaOSS/cps-shared-ui#891 · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di AbsaOSS/cps-shared-ui
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
better-auth/better-auth#12132 · 1 reazione ·
I maintainer di solito rispondono entro 1 giorno
-
o8 next debug build aborts on Glass to Dark appearance switch (nil identifier messaged before check)Apertabug
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
hurttlocker/o8#5112 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
webrecorder/wabac.js#386 ·
-
needs-triage
Difficoltà 1/5 1-3 ore Idoneità per principianti 92/100
agent-of-empires/agent-of-empires#5098 · 1 commento · 1 reazione ·
I maintainer di solito rispondono entro 1 giorno