Skip to content

Commit 669eec9

Browse files
web-padawanclaude
andauthored
feat: add HasAriaRole to Badge, deprecate setRole and getRole (#9591)
## Description Part of #9489 ## Type of change - Refactor Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1 parent 2679322 commit 669eec9

2 files changed

Lines changed: 16 additions & 8 deletions

File tree

  • vaadin-badge-flow-parent/vaadin-badge-flow/src

vaadin-badge-flow-parent/vaadin-badge-flow/src/main/java/com/vaadin/flow/component/badge/Badge.java

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import java.util.Optional;
1919

2020
import com.vaadin.flow.component.Component;
21+
import com.vaadin.flow.component.HasAriaRole;
2122
import com.vaadin.flow.component.HasSize;
2223
import com.vaadin.flow.component.HasText;
2324
import com.vaadin.flow.component.SignalPropertySupport;
@@ -67,8 +68,8 @@
6768
@Tag("vaadin-badge")
6869
@NpmPackage(value = "@vaadin/badge", version = "25.2.0")
6970
@JsModule("@vaadin/badge/src/vaadin-badge.js")
70-
public class Badge extends Component
71-
implements HasSize, HasText, HasThemeVariant<BadgeVariant> {
71+
public class Badge extends Component implements HasAriaRole, HasSize, HasText,
72+
HasThemeVariant<BadgeVariant> {
7273

7374
private static final String ICON_SLOT = "icon";
7475

@@ -309,22 +310,22 @@ public Component getIcon() {
309310
*
310311
* @param role
311312
* the ARIA role, or {@code null} to clear
313+
* @deprecated Use {@link #setAriaRole(String)} instead.
312314
*/
315+
@Deprecated(since = "25.3", forRemoval = true)
313316
public void setRole(String role) {
314-
if (role == null) {
315-
getElement().removeAttribute("role");
316-
} else {
317-
getElement().setAttribute("role", role);
318-
}
317+
setAriaRole(role);
319318
}
320319

321320
/**
322321
* Gets the ARIA role attribute of the badge.
323322
*
324323
* @return the ARIA role, or {@code null} if not set
324+
* @deprecated Use {@link #getAriaRole()} instead.
325325
*/
326+
@Deprecated(since = "25.3", forRemoval = true)
326327
public String getRole() {
327-
return getElement().getAttribute("role");
328+
return getAriaRole().orElse(null);
328329
}
329330

330331
private void updateText(String text) {

vaadin-badge-flow-parent/vaadin-badge-flow/src/test/java/com/vaadin/flow/component/badge/tests/BadgeTest.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import org.junit.jupiter.api.Assertions;
1919
import org.junit.jupiter.api.Test;
2020

21+
import com.vaadin.flow.component.HasAriaRole;
2122
import com.vaadin.flow.component.badge.Badge;
2223
import com.vaadin.flow.component.html.Span;
2324

@@ -183,6 +184,7 @@ void getContent_doesNotReturnTextOrIcon() {
183184
}
184185

185186
@Test
187+
@SuppressWarnings("deprecation")
186188
void setRole_getRole() {
187189
var badge = new Badge();
188190
Assertions.assertNull(badge.getRole());
@@ -194,6 +196,11 @@ void setRole_getRole() {
194196
Assertions.assertNull(badge.getRole());
195197
}
196198

199+
@Test
200+
void implementsHasAriaRole() {
201+
Assertions.assertTrue(HasAriaRole.class.isAssignableFrom(Badge.class));
202+
}
203+
197204
@Test
198205
void setIcon_getIcon() {
199206
var badge = new Badge();

0 commit comments

Comments
 (0)