[Button]: crash on Safari 17 due to missing ElementInternals.states guard in _setBadgeOverlayStyle
Los mantenedores suelen responder en 2 días
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 1/5
- Tiempo estimado
- Menos de una hora
- Aptitud para principiantes
- 87/100
- Tipo de issue
- Error
- Claridad
- Bien especificado
- Estado de actividad
- Activo
- Stack tecnológico
- typescript, web-dev
- Área
- accessibility, frontend
Línea de trabajo
Lee packages/main/src/Button.ts e inspecciona _setBadgeOverlayStyle() y su llamada desde onBeforeRendering(). Confirma cómo gestiona el proyecto la compatibilidad del navegador con ElementInternals.states y luego ejecuta las pruebas pertinentes de Button o reproduce el problema en Safari 17. La tarea estará completa cuando los botones se rendericen sin errores y se aplique el estado del badge donde la API sea compatible.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Bug Description
Button._setBadgeOverlayStyle() unconditionally accesses this._internals.states, which is undefined on Safari 17. This causes an unhandled promise rejection that crashes all UI5 buttons on the page, regardless of whether a badge is used.
Error
TypeError: undefined is not an object (evaluating 'this._internals.states.delete')
Affected Code
packages/main/src/Button.ts → _setBadgeOverlayStyle():
_setBadgeOverlayStyle() {
const needsOverflowVisible = ...;
if (needsOverflowVisible) {
this._internals.states.add("has-overlay-badge"); // crashes
} else {
this._internals.states.delete("has-overlay-badge"); // crashes
}
}
This method is called unconditionally from onBeforeRendering(), so every button render on Safari 17 triggers the crash.
Root Cause
Safari 17 does not support the CSS Custom State API (ElementInternals.states). The property exists on _internals only in browsers that support this API.
Expected Behavior
Buttons render without error on Safari 17. Badge state simply isn't applied (acceptable degradation).
Proposed Fix
this._internals?.states?.add("has-overlay-badge");
this._internals?.states?.delete("has-overlay-badge");
Environment
@ui5/webcomponents: 2.27.2- Browser: Safari 17.0 / macOS Sonoma
- Not reproducible on Chrome or Safari 18+
Affected Component
No response
Expected Behaviour
No response
Isolated Example
No response
Steps to Reproduce
No response
Log Output, Stack Trace or Screenshots
No response
Priority
None
UI5 Web Components Version
2.27.2
Browser
Safari
Operating System
No response
Additional Context
No response
Organization
No response
Declaration
- I’m not disclosing any internal or sensitive information.
- Lenguaje dominante
- TypeScript
- Estrellas
- 1.8k
- Forks
- 290
- Merge medio
- 2 d 14 h
- PR fusionados (30 d)
- 54
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de UI5/webcomponents
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
UI5/webcomponents#14273 ·
Los mantenedores suelen responder en 2 días
-
[Feature Request][Side Navigation][A11Y]: Enhance user experience navigating components tree itemsPosiblemente ocupada @TeodorTaushanov la tomó hace 5 días. Abiertobug Medium Prio TOPIC RD
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
UI5/webcomponents#14232 · 1 comentario · 1 asignado ·
Los mantenedores suelen responder en 2 días
-
enhancement feature request TOPIC RD
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
UI5/webcomponents#14222 · 1 comentario ·
Los mantenedores suelen responder en 2 días
-
[SF][A11y][ui5-select] Conflicting ARIA: role="combobox" rendered with aria-roledescription="Listbox" (confuses screen-reader users)Posiblemente ocupada @PetyaMarkovaBogdanova la tomó hace 9 días. Abiertobug Medium Prio TOPIC P
Dificultad 2/5 1-3 horas Aptitud para principiantes 67/100
UI5/webcomponents#14212 · 2 comentarios · 1 asignado ·
Los mantenedores suelen responder en 2 días
-
(ui5-search): Loading state sample is brokenPosiblemente ocupada @ndeshev la tomó hace 9 días. Abiertobug Low Prio TOPIC RL
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
UI5/webcomponents#14210 · 1 asignado ·
Los mantenedores suelen responder en 2 días
Todos los issues de UI5/webcomponents
Issues similares
-
area:cards enhancement ready-for-agent
Dificultad 2/5 1-3 horas Aptitud para principiantes 66/100
fil-donadoni/tolaria#8883 ·
Los mantenedores suelen responder en 1 día
-
xsd:integer cast from a string rejects negative numbers, a leading + and surrounding whitespaceAbiertobug 🐛
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
comunica/comunica#1960 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Waiting for: Product Owner
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
getsentry/sentry-javascript#26203 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
bytedance/flowgram.ai#1235 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
devswha/herdr-web-ui#3325 ·