Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
import com.vaadin.flow.component.ComponentEvent;
import com.vaadin.flow.component.ComponentEventListener;
import com.vaadin.flow.component.HasAriaLabel;
import com.vaadin.flow.component.HasAriaRole;
import com.vaadin.flow.component.HasComponents;
import com.vaadin.flow.component.Synchronize;
import com.vaadin.flow.component.Tag;
Expand All @@ -50,8 +51,8 @@
@NpmPackage(value = "@vaadin/popover", version = "25.2.0")
@JsModule("@vaadin/popover/src/vaadin-popover.js")
@JsModule("./vaadin-popover/popover.ts")
public class Popover extends Component implements HasAriaLabel, HasComponents,
HasThemeVariant<PopoverVariant> {
public class Popover extends Component implements HasAriaLabel, HasAriaRole,
HasComponents, HasThemeVariant<PopoverVariant> {

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

updateTrigger();
setRole("dialog");
setAriaRole("dialog");

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

getElement().setProperty("role", role);
setAriaRole(role);
}

/**
* Sets the ARIA role for the popover, used by screen readers.
*
* @param role
* the role to set
* @deprecated Use {@link #setRole(String)} instead
* @deprecated Use {@link #setAriaRole(String)} instead
*/
@Deprecated(since = "25.0", forRemoval = true)
public void setOverlayRole(String role) {
Objects.requireNonNull(role, "Role cannot be null");

setRole(role);
setAriaRole(role);
}

/**
* Gets the ARIA role for the popover element, used by screen readers.
* Defaults to {@code dialog}.
*
* @return the role
* @deprecated Use {@link #getAriaRole()} instead
*/
@Deprecated(since = "25.3", forRemoval = true)
public String getRole() {
return getElement().getProperty("role");
return getAriaRole().orElse(null);
}

/**
* Gets the ARIA role for the popover, used by screen readers. Defaults to
* {@code dialog}.
*
* @return the role
* @deprecated Use {@link #getRole()} instead
* @deprecated Use {@link #getAriaRole()} instead
*/
@Deprecated(since = "25.0", forRemoval = true)
public String getOverlayRole() {
return getRole();
return getAriaRole().orElse(null);
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
import org.junit.jupiter.api.Test;
import org.mockito.Mockito;

import com.vaadin.flow.component.HasAriaRole;
import com.vaadin.flow.component.Text;
import com.vaadin.flow.component.html.Div;
import com.vaadin.flow.component.shared.HasThemeVariant;
Expand Down Expand Up @@ -234,47 +235,58 @@ void setAriaLabelledBy_getAriaLabelledBy() {
}

@Test
@SuppressWarnings("deprecation")
void getRole_defaultDialog() {
Popover popover = new Popover();

Assertions.assertEquals("dialog", popover.getRole());
Assertions.assertEquals("dialog", popover.getOverlayRole());
Assertions.assertEquals("dialog",
popover.getElement().getProperty("role"));
popover.getElement().getAttribute("role"));
}

@Test
@SuppressWarnings("deprecation")
void setOverlayRole_getOverlayRole() {
popover.setOverlayRole("alertdialog");

Assertions.assertEquals("alertdialog", popover.getRole());
Assertions.assertEquals("alertdialog", popover.getOverlayRole());
Assertions.assertEquals("alertdialog",
popover.getElement().getProperty("role"));
popover.getElement().getAttribute("role"));
}

@Test
@SuppressWarnings("deprecation")
void setOverlayRole_null_throws() {
Assertions.assertThrows(NullPointerException.class,
() -> popover.setOverlayRole(null));
}

@Test
@SuppressWarnings("deprecation")
void setRole_getRole() {
popover.setRole("alertdialog");

Assertions.assertEquals("alertdialog", popover.getRole());
Assertions.assertEquals("alertdialog", popover.getOverlayRole());
Assertions.assertEquals("alertdialog",
popover.getElement().getProperty("role"));
popover.getElement().getAttribute("role"));
}

@Test
@SuppressWarnings("deprecation")
void setRole_null_throws() {
Assertions.assertThrows(NullPointerException.class,
() -> popover.setRole(null));
}

@Test
void implementsHasAriaRole() {
Assertions
.assertTrue(HasAriaRole.class.isAssignableFrom(Popover.class));
}

@Test
void setModal_isModal() {
Assertions.assertFalse(popover.isModal());
Expand Down
Loading