Skip to content

Commit 8ab7248

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

2 files changed

Lines changed: 29 additions & 12 deletions

File tree

  • vaadin-popover-flow-parent/vaadin-popover-flow/src

vaadin-popover-flow-parent/vaadin-popover-flow/src/main/java/com/vaadin/flow/component/popover/Popover.java

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import com.vaadin.flow.component.ComponentEvent;
2525
import com.vaadin.flow.component.ComponentEventListener;
2626
import com.vaadin.flow.component.HasAriaLabel;
27+
import com.vaadin.flow.component.HasAriaRole;
2728
import com.vaadin.flow.component.HasComponents;
2829
import com.vaadin.flow.component.Synchronize;
2930
import com.vaadin.flow.component.Tag;
@@ -50,8 +51,8 @@
5051
@NpmPackage(value = "@vaadin/popover", version = "25.2.0")
5152
@JsModule("@vaadin/popover/src/vaadin-popover.js")
5253
@JsModule("./vaadin-popover/popover.ts")
53-
public class Popover extends Component implements HasAriaLabel, HasComponents,
54-
HasThemeVariant<PopoverVariant> {
54+
public class Popover extends Component implements HasAriaLabel, HasAriaRole,
55+
HasComponents, HasThemeVariant<PopoverVariant> {
5556

5657
private static Integer defaultHideDelay;
5758
private static Integer defaultFocusDelay;
@@ -76,7 +77,7 @@ public Popover() {
7677
getElement().setProperty("opened", false);
7778

7879
updateTrigger();
79-
setRole("dialog");
80+
setAriaRole("dialog");
8081

8182
getElement().addPropertyChangeListener("opened", event -> fireEvent(
8283
new OpenedChangeEvent(this, event.isUserOriginated())));
@@ -384,47 +385,51 @@ public void setTabFocusEnabled(boolean tabFocusEnabled) {
384385
*
385386
* @param role
386387
* the role to set
388+
* @deprecated Use {@link #setAriaRole(String)} instead
387389
*/
390+
@Deprecated(since = "25.3", forRemoval = true)
388391
public void setRole(String role) {
389392
Objects.requireNonNull(role, "Role cannot be null");
390393

391-
getElement().setProperty("role", role);
394+
setAriaRole(role);
392395
}
393396

394397
/**
395398
* Sets the ARIA role for the popover, used by screen readers.
396399
*
397400
* @param role
398401
* the role to set
399-
* @deprecated Use {@link #setRole(String)} instead
402+
* @deprecated Use {@link #setAriaRole(String)} instead
400403
*/
401404
@Deprecated(since = "25.0", forRemoval = true)
402405
public void setOverlayRole(String role) {
403406
Objects.requireNonNull(role, "Role cannot be null");
404407

405-
setRole(role);
408+
setAriaRole(role);
406409
}
407410

408411
/**
409412
* Gets the ARIA role for the popover element, used by screen readers.
410413
* Defaults to {@code dialog}.
411414
*
412415
* @return the role
416+
* @deprecated Use {@link #getAriaRole()} instead
413417
*/
418+
@Deprecated(since = "25.3", forRemoval = true)
414419
public String getRole() {
415-
return getElement().getProperty("role");
420+
return getAriaRole().orElse(null);
416421
}
417422

418423
/**
419424
* Gets the ARIA role for the popover, used by screen readers. Defaults to
420425
* {@code dialog}.
421426
*
422427
* @return the role
423-
* @deprecated Use {@link #getRole()} instead
428+
* @deprecated Use {@link #getAriaRole()} instead
424429
*/
425430
@Deprecated(since = "25.0", forRemoval = true)
426431
public String getOverlayRole() {
427-
return getRole();
432+
return getAriaRole().orElse(null);
428433
}
429434

430435
/**

vaadin-popover-flow-parent/vaadin-popover-flow/src/test/java/com/vaadin/flow/component/popover/PopoverTest.java

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import org.junit.jupiter.api.Test;
2929
import org.mockito.Mockito;
3030

31+
import com.vaadin.flow.component.HasAriaRole;
3132
import com.vaadin.flow.component.Text;
3233
import com.vaadin.flow.component.html.Div;
3334
import com.vaadin.flow.component.shared.HasThemeVariant;
@@ -234,47 +235,58 @@ void setAriaLabelledBy_getAriaLabelledBy() {
234235
}
235236

236237
@Test
238+
@SuppressWarnings("deprecation")
237239
void getRole_defaultDialog() {
238240
Popover popover = new Popover();
239241

240242
Assertions.assertEquals("dialog", popover.getRole());
241243
Assertions.assertEquals("dialog", popover.getOverlayRole());
242244
Assertions.assertEquals("dialog",
243-
popover.getElement().getProperty("role"));
245+
popover.getElement().getAttribute("role"));
244246
}
245247

246248
@Test
249+
@SuppressWarnings("deprecation")
247250
void setOverlayRole_getOverlayRole() {
248251
popover.setOverlayRole("alertdialog");
249252

250253
Assertions.assertEquals("alertdialog", popover.getRole());
251254
Assertions.assertEquals("alertdialog", popover.getOverlayRole());
252255
Assertions.assertEquals("alertdialog",
253-
popover.getElement().getProperty("role"));
256+
popover.getElement().getAttribute("role"));
254257
}
255258

256259
@Test
260+
@SuppressWarnings("deprecation")
257261
void setOverlayRole_null_throws() {
258262
Assertions.assertThrows(NullPointerException.class,
259263
() -> popover.setOverlayRole(null));
260264
}
261265

262266
@Test
267+
@SuppressWarnings("deprecation")
263268
void setRole_getRole() {
264269
popover.setRole("alertdialog");
265270

266271
Assertions.assertEquals("alertdialog", popover.getRole());
267272
Assertions.assertEquals("alertdialog", popover.getOverlayRole());
268273
Assertions.assertEquals("alertdialog",
269-
popover.getElement().getProperty("role"));
274+
popover.getElement().getAttribute("role"));
270275
}
271276

272277
@Test
278+
@SuppressWarnings("deprecation")
273279
void setRole_null_throws() {
274280
Assertions.assertThrows(NullPointerException.class,
275281
() -> popover.setRole(null));
276282
}
277283

284+
@Test
285+
void implementsHasAriaRole() {
286+
Assertions
287+
.assertTrue(HasAriaRole.class.isAssignableFrom(Popover.class));
288+
}
289+
278290
@Test
279291
void setModal_isModal() {
280292
Assertions.assertFalse(popover.isModal());

0 commit comments

Comments
 (0)