Skip to content

Commit 2919f95

Browse files
feat: add setRole to Dialog and Popover, deprecate setOverlayRole (#7796)
* feat: add setRole to Dialog and Popover, deprecate setOverlayRole * Update vaadin-popover-flow-parent/vaadin-popover-flow/src/main/java/com/vaadin/flow/component/popover/Popover.java Co-authored-by: Sascha Ißbrücker <sissbruecker@vaadin.com> --------- Co-authored-by: Sascha Ißbrücker <sissbruecker@vaadin.com>
1 parent 14182f2 commit 2919f95

File tree

4 files changed

+103
-15
lines changed
  • vaadin-dialog-flow-parent/vaadin-dialog-flow/src
  • vaadin-popover-flow-parent/vaadin-popover-flow/src

4 files changed

+103
-15
lines changed

vaadin-dialog-flow-parent/vaadin-dialog-flow/src/main/java/com/vaadin/flow/component/dialog/Dialog.java

Lines changed: 29 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ public Dialog() {
125125
setLeft(event.getLeft());
126126
});
127127

128-
setOverlayRole("dialog");
128+
setRole("dialog");
129129

130130
// Initialize auto-add behavior
131131
new OverlayAutoAddController<>(this, this::isModal);
@@ -1099,26 +1099,52 @@ protected void onAttach(AttachEvent attachEvent) {
10991099
registerClientCloseHandler();
11001100
}
11011101

1102+
/**
1103+
* Sets the ARIA role for the dialog element, used by screen readers.
1104+
*
1105+
* @param role
1106+
* the role to set
1107+
*/
1108+
public void setRole(String role) {
1109+
Objects.requireNonNull(role, "Role cannot be null");
1110+
1111+
getElement().setProperty("role", role);
1112+
}
1113+
11021114
/**
11031115
* Sets the ARIA role for the overlay element, used by screen readers.
11041116
*
11051117
* @param role
11061118
* the role to set
1119+
* @deprecated Use {@link #setRole(String)} instead
11071120
*/
1121+
@Deprecated(since = "25.0", forRemoval = true)
11081122
public void setOverlayRole(String role) {
11091123
Objects.requireNonNull(role, "Role cannot be null");
11101124

1111-
getElement().setProperty("overlayRole", role);
1125+
setRole(role);
1126+
}
1127+
1128+
/**
1129+
* Gets the ARIA role for the overlay element, used by screen readers.
1130+
* Defaults to {@code dialog}.
1131+
*
1132+
* @return the role
1133+
*/
1134+
public String getRole() {
1135+
return getElement().getProperty("role");
11121136
}
11131137

11141138
/**
11151139
* Gets the ARIA role for the overlay element, used by screen readers.
11161140
* Defaults to {@code dialog}.
11171141
*
11181142
* @return the role
1143+
* @deprecated Use {@link #getRole()} instead
11191144
*/
1145+
@Deprecated(since = "25.0", forRemoval = true)
11201146
public String getOverlayRole() {
1121-
return getElement().getProperty("overlayRole");
1147+
return getRole();
11221148
}
11231149

11241150
/**

vaadin-dialog-flow-parent/vaadin-dialog-flow/src/test/java/com/vaadin/flow/component/dialog/DialogTest.java

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -193,22 +193,23 @@ public void isModal_trueByDefault() {
193193
}
194194

195195
@Test
196-
public void getOverlayRole_defaultDialog() {
196+
public void getRole_defaultDialog() {
197197
Dialog dialog = new Dialog();
198198

199+
Assert.assertEquals("dialog", dialog.getRole());
199200
Assert.assertEquals("dialog", dialog.getOverlayRole());
200-
Assert.assertEquals("dialog",
201-
dialog.getElement().getProperty("overlayRole"));
201+
Assert.assertEquals("dialog", dialog.getElement().getProperty("role"));
202202
}
203203

204204
@Test
205205
public void setOverlayRole_getOverlayRole() {
206206
Dialog dialog = new Dialog();
207207
dialog.setOverlayRole("alertdialog");
208208

209+
Assert.assertEquals("alertdialog", dialog.getRole());
209210
Assert.assertEquals("alertdialog", dialog.getOverlayRole());
210211
Assert.assertEquals("alertdialog",
211-
dialog.getElement().getProperty("overlayRole"));
212+
dialog.getElement().getProperty("role"));
212213
}
213214

214215
@Test(expected = NullPointerException.class)
@@ -217,6 +218,23 @@ public void setOverlayRole_null_throws() {
217218
dialog.setOverlayRole(null);
218219
}
219220

221+
@Test
222+
public void setRole_getRole() {
223+
Dialog dialog = new Dialog();
224+
dialog.setRole("alertdialog");
225+
226+
Assert.assertEquals("alertdialog", dialog.getRole());
227+
Assert.assertEquals("alertdialog", dialog.getOverlayRole());
228+
Assert.assertEquals("alertdialog",
229+
dialog.getElement().getProperty("role"));
230+
}
231+
232+
@Test(expected = NullPointerException.class)
233+
public void setRole_null_throws() {
234+
Dialog dialog = new Dialog();
235+
dialog.setRole(null);
236+
}
237+
220238
@Test
221239
public void setModal_dialogCanBeModeless() {
222240
Dialog dialog = new Dialog();

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

Lines changed: 30 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ public Popover() {
7878
getElement().setProperty("opened", false);
7979

8080
updateTrigger();
81-
setOverlayRole("dialog");
81+
setRole("dialog");
8282
}
8383

8484
/**
@@ -344,26 +344,52 @@ public boolean isAutofocus() {
344344
return getElement().getProperty("autofocus", false);
345345
}
346346

347+
/**
348+
* Sets the ARIA role for the popover element, used by screen readers.
349+
*
350+
* @param role
351+
* the role to set
352+
*/
353+
public void setRole(String role) {
354+
Objects.requireNonNull(role, "Role cannot be null");
355+
356+
getElement().setProperty("role", role);
357+
}
358+
347359
/**
348360
* Sets the ARIA role for the overlay element, used by screen readers.
349361
*
350362
* @param role
351363
* the role to set
364+
* @deprecated Use {@link #setRole(String)} instead
352365
*/
366+
@Deprecated(since = "25.0", forRemoval = true)
353367
public void setOverlayRole(String role) {
354368
Objects.requireNonNull(role, "Role cannot be null");
355369

356-
getElement().setProperty("overlayRole", role);
370+
setRole(role);
371+
}
372+
373+
/**
374+
* Gets the ARIA role for the popover element, used by screen readers.
375+
* Defaults to {@code dialog}.
376+
*
377+
* @return the role
378+
*/
379+
public String getRole() {
380+
return getElement().getProperty("role");
357381
}
358382

359383
/**
360-
* Gets the ARIA role for the overlay element, used by screen readers.
384+
* Gets the ARIA role for the popover element, used by screen readers.
361385
* Defaults to {@code dialog}.
362386
*
363387
* @return the role
388+
* @deprecated Use {@link #getRole()} instead
364389
*/
390+
@Deprecated(since = "25.0", forRemoval = true)
365391
public String getOverlayRole() {
366-
return getElement().getProperty("overlayRole");
392+
return getRole();
367393
}
368394

369395
/**

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

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -232,26 +232,44 @@ public void setAriaLabelledBy_getAriaLabelledBy() {
232232
}
233233

234234
@Test
235-
public void getOverlayRole_defaultDialog() {
235+
public void getRole_defaultDialog() {
236+
Popover popover = new Popover();
237+
238+
Assert.assertEquals("dialog", popover.getRole());
236239
Assert.assertEquals("dialog", popover.getOverlayRole());
237-
Assert.assertEquals("dialog",
238-
popover.getElement().getProperty("overlayRole"));
240+
Assert.assertEquals("dialog", popover.getElement().getProperty("role"));
239241
}
240242

241243
@Test
242244
public void setOverlayRole_getOverlayRole() {
243245
popover.setOverlayRole("alertdialog");
244246

247+
Assert.assertEquals("alertdialog", popover.getRole());
245248
Assert.assertEquals("alertdialog", popover.getOverlayRole());
246249
Assert.assertEquals("alertdialog",
247-
popover.getElement().getProperty("overlayRole"));
250+
popover.getElement().getProperty("role"));
248251
}
249252

250253
@Test(expected = NullPointerException.class)
251254
public void setOverlayRole_null_throws() {
252255
popover.setOverlayRole(null);
253256
}
254257

258+
@Test
259+
public void setRole_getRole() {
260+
popover.setRole("alertdialog");
261+
262+
Assert.assertEquals("alertdialog", popover.getRole());
263+
Assert.assertEquals("alertdialog", popover.getOverlayRole());
264+
Assert.assertEquals("alertdialog",
265+
popover.getElement().getProperty("role"));
266+
}
267+
268+
@Test(expected = NullPointerException.class)
269+
public void setRole_null_throws() {
270+
popover.setRole(null);
271+
}
272+
255273
@Test
256274
public void setModal_isModal() {
257275
Assert.assertFalse(popover.isModal());

0 commit comments

Comments
 (0)