[Bug] Header fullscreen/close controls lack accessible names and use hardcoded icon fills
I maintainer di solito rispondono entro 1 giorno
Valutazione
Questa issue non è ancora stata valutata.
Descrizione
Current Behavior
In src/custom/Modal/index.tsx, the modal header actions are not properly accessible:
- The enter/exit fullscreen controls are the styled
FullScreenIcon/FullScreenExitIconSVG components with anonClick. They appear to be plain SVGs rather than buttons, so they have no role and no accessible name, and they are probably not keyboard-focusable. Please verify with a keyboard and a screen reader. The surroundingCustomTooltiponly helps on hover. - The close control is an
IconButton(CloseBtn) with noaria-label, so a screen reader announces only "button". CloseBtnhardcodesfill: #fff(andCloseIconpassesfill="#fff") instead of using the theme/token or inheritingcurrentColor. The fullscreen icons already usetheme.palette.common.white, so the header is inconsistent.
This conflicts with the existing guidance in DESIGN.md ("Semantic ARIA: icon-only buttons must supply descriptive aria-label and Tooltip").
Expected Behavior
- Fullscreen toggle: a native, keyboard-operable button (for example MUI
IconButton) witharia-label"Enter fullscreen" / "Exit fullscreen", keeping the existing tooltip anddata-testids (modal-enter-fullscreen-btn,modal-exit-fullscreen-btn). - Close control:
aria-label="Close dialog"(keepdata-testid="modal-close-btn"). - Icon colors come from the existing theme token or inherit via
currentColor(the header'scolor) rather than a hardcoded literal. - Keep this focused on the header controls: no layout or styling redesign.
Acceptance Criteria
-
getByRole('button', { name: 'Enter fullscreen' }),{ name: 'Exit fullscreen' }and{ name: 'Close dialog' }resolve in tests. - Both controls can be focused and activated with Tab, Enter and Space.
- No hardcoded color literals remain in the header controls.
- Existing Modal tests and
data-testids keep passing. - Does not change
Modal/useModalpublic props.
Context
- Raised in review by @leecalcote on #1868, and deliberately left out of that PR to keep it scoped to #1864.
Screenshots/Logs
Environment
Contributor Guides and Resources
- 🛠 Meshery Build & Release Strategy
- 📚 Instructions for contributing to documentation
- 🎨 Wireframes and designs for Sistent site in Figma (open invite)
- 🙋🏾🙋🏼 Questions: Layer5 Discussion Forum and Layer5 Community Slack
- Lingua principale
- TypeScript
- Stelle
- 140
- Fork
- 244
- Merge medio
- 2g 18h
- PR unite (30g)
- 18
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
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 layer5io/sistent
-
PermissionShield: make the permissions docs link configurable instead of hard-coding docs.meshery.ioForse già presa @SajanBisht l’ha presa 4 giorni fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
layer5io/sistent#1883 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
InfoTooltip is not keyboard reachable and has no accessible nameForse di nuovo libera Una pull request per questa issue è stata chiusa senza essere unita. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
I maintainer di solito rispondono entro 1 giorno
-
[UI] Permission Shield tooltip uses fixed `placement="top"` instead of adaptive placementForse già presa @dhruveshmishra l’ha presa 82 giorni fa. Apertacomponent/ui help wanted kind/enhancement
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
layer5io/sistent#1772 · 5 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
Barrel re-exports DateTimePickerProps from the optional peer @mui/x-date-pickers, so the type is `any` for consumers who skip itForse già presa @Valyrian-Code l’ha presa 92 giorni fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
layer5io/sistent#1749 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
ESM build is not loadable by Node: extensionless 'lodash/debounce' specifier in dist/index.mjsForse di nuovo libera @Salmaan-M l’ha presa 97 giorni fa e non c’è nessuna pull request aperta. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
layer5io/sistent#1739 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di layer5io/sistent
Issue simili
-
backend refactor
Difficoltà 2/5 1-3 ore Idoneità per principianti 73/100
NIAEFEUP/tts#927 · 1 commento · 1 reazione ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
callstackincubator/react-native-harness#296 ·
I maintainer di solito rispondono entro 1 giorno
-
status:in-linear
Difficoltà 2/5 1-3 ore Idoneità per principianti 67/100
n8n-io/n8n#42293 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
verified
Difficoltà 2/5 1-3 ore Idoneità per principianti 67/100
I maintainer di solito rispondono entro 5 giorni
-
Add inputmode attribute support (forwarded to the inner input)Forse di nuovo libera Una pull request per questa issue è stata chiusa senza essere unita. Apertaenhancement
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
Neovici/cosmoz-input#467 ·
I maintainer di solito rispondono entro 1 giorno