Class Dialog

  • All Implemented Interfaces:
    com.vaadin.flow.component.AttachNotifier, com.vaadin.flow.component.DetachNotifier, com.vaadin.flow.component.HasComponents, com.vaadin.flow.component.HasElement, com.vaadin.flow.component.HasEnabled, com.vaadin.flow.component.HasSize, com.vaadin.flow.component.HasStyle, com.vaadin.flow.component.HasTheme, Serializable

    @JsModule("./dialogConnector.js") @JsModule("./flow-component-renderer.js")
    public class Dialog
    extends GeneratedVaadinDialog<Dialog>
    implements com.vaadin.flow.component.HasComponents, com.vaadin.flow.component.HasSize, com.vaadin.flow.component.HasTheme, com.vaadin.flow.component.HasStyle
    A Dialog is a small window that can be used to present information and user interface elements in an overlay.

    Dialogs can be made modal or non-modal. A modal Dialog blocks the user from interacting with the rest of the user interface while the Dialog is open, as opposed to a non-modal Dialog, which does not block interaction.

    Dialogs can be made draggable and resizable. When draggable, the user is able to move them around using a pointing device. It is recommended to make non-modal Dialogs draggable so that the user can interact with content that might otherwise be obscured by the Dialog. A resizable Dialog allows the user to resize the Dialog by dragging from the edges of the Dialog with a pointing device. Dialogs are not resizable by default.

    Dialogs automatically become scrollable when their content overflows. Custom scrollable areas can be created using the Scroller component.

    Best Practices:
    Dialogs are disruptive by nature and should be used sparingly. Do not use them to communicate nonessential information, such as success messages like “Logged in”, “Copied”, and so on. Instead, use Notifications when appropriate.

    Author:
    Vaadin Ltd
    See Also:
    Serialized Form
    • Constructor Summary

      Constructors 
      Constructor Description
      Dialog()
      Creates an empty dialog.
      Dialog​(com.vaadin.flow.component.Component... components)
      Creates a dialog with given components inside.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void add​(com.vaadin.flow.component.Component... components)
      Adds the given components into this dialog.
      com.vaadin.flow.shared.Registration addAttachListener​(com.vaadin.flow.component.ComponentEventListener<com.vaadin.flow.component.AttachEvent> listener)
      void addComponentAtIndex​(int index, com.vaadin.flow.component.Component component)
      Adds the given component into this dialog at the given index.
      com.vaadin.flow.shared.Registration addDetachListener​(com.vaadin.flow.component.ComponentEventListener<com.vaadin.flow.component.DetachEvent> listener)
      com.vaadin.flow.shared.Registration addDialogCloseActionListener​(com.vaadin.flow.component.ComponentEventListener<Dialog.DialogCloseActionEvent> listener)
      Add a listener that controls whether the dialog should be closed or not.
      com.vaadin.flow.shared.Registration addOpenedChangeListener​(com.vaadin.flow.component.ComponentEventListener<Dialog.OpenedChangeEvent<Dialog>> listener)
      Add a lister for event fired by the opened-changed events.
      com.vaadin.flow.shared.Registration addResizeListener​(com.vaadin.flow.component.ComponentEventListener<Dialog.DialogResizeEvent> listener)
      Adds a listener that is called after user finishes resizing the overlay.
      void addThemeVariants​(DialogVariant... variants)
      Adds theme variants to the component.
      void close()
      Closes the dialog.
      Stream<com.vaadin.flow.component.Component> getChildren()  
      Dialog.DialogFooter getFooter()
      Gets the object from which components can be added or removed from the dialog footer area.
      Dialog.DialogHeader getHeader()
      Gets the object from which components can be added or removed from the dialog header area.
      String getHeaderTitle()
      Gets the title set for the dialog header.
      String getHeight()  
      String getMaxHeight()  
      String getMaxWidth()  
      String getMinHeight()  
      String getMinWidth()  
      com.vaadin.flow.dom.Style getStyle()  
      String getWidth()  
      boolean isCloseOnEsc()
      Gets whether this dialog can be closed by hitting the esc-key or not.
      boolean isCloseOnOutsideClick()
      Gets whether this dialog can be closed by clicking outside of it or not.
      boolean isDraggable()
      Gets whether dialog is enabled to be dragged or not.
      boolean isModal()
      Gets whether component is set as modal or modeless dialog.
      boolean isOpened()
      Gets the open state from the dialog.
      boolean isResizable()
      Gets whether dialog is enabled to be resized or not.
      protected void onAttach​(com.vaadin.flow.component.AttachEvent attachEvent)  
      void open()
      Opens the dialog.
      void remove​(com.vaadin.flow.component.Component... components)  
      void removeAll()  
      void removeThemeVariants​(DialogVariant... variants)
      Removes theme variants from the component.
      void setCloseOnEsc​(boolean closeOnEsc)
      Sets whether this dialog can be closed by hitting the esc-key or not.
      void setCloseOnOutsideClick​(boolean closeOnOutsideClick)
      Sets whether this dialog can be closed by clicking outside of it or not.
      void setDraggable​(boolean draggable)
      Sets whether dialog is enabled to be dragged by the user or not.
      void setHeaderTitle​(String title)
      Sets the title to be rendered on the dialog header.
      void setHeight​(String value)  
      void setMaxHeight​(String value)  
      void setMaxWidth​(String value)  
      void setMinHeight​(String value)  
      void setMinWidth​(String value)  
      void setModal​(boolean modal)
      Sets whether component will open modal or modeless dialog.
      void setOpened​(boolean opened)
      Opens or closes the dialog.
      void setResizable​(boolean resizable)
      Sets whether dialog can be resized by user or not.
      void setVisible​(boolean visible)
      Set the visibility of the dialog.
      void setWidth​(String value)  
      • Methods inherited from class com.vaadin.flow.component.Component

        addListener, findAncestor, fireEvent, from, get, getElement, getEventBus, getId, getListeners, getLocale, getParent, getTranslation, getTranslation, getTranslation, getTranslation, getTranslation, getTranslation, getUI, hasListener, isAttached, isTemplateMapped, isVisible, onDetach, onEnabledStateChanged, scrollIntoView, set, setElement, setId
      • Methods inherited from interface com.vaadin.flow.component.HasComponents

        add, add, addComponentAsFirst, remove
      • Methods inherited from interface com.vaadin.flow.component.HasElement

        getElement
      • Methods inherited from interface com.vaadin.flow.component.HasEnabled

        isEnabled, setEnabled
      • Methods inherited from interface com.vaadin.flow.component.HasSize

        getHeightUnit, getWidthUnit, setHeight, setHeightFull, setMaxHeight, setMaxWidth, setMinHeight, setMinWidth, setSizeFull, setSizeUndefined, setWidth, setWidthFull
      • Methods inherited from interface com.vaadin.flow.component.HasStyle

        addClassName, addClassNames, getClassName, getClassNames, hasClassName, removeClassName, removeClassNames, setClassName, setClassName
      • Methods inherited from interface com.vaadin.flow.component.HasTheme

        addThemeName, addThemeNames, getThemeName, getThemeNames, hasThemeName, removeThemeName, removeThemeNames, setThemeName, setThemeName
    • Constructor Detail

      • Dialog

        public Dialog()
        Creates an empty dialog.
      • Dialog

        public Dialog​(com.vaadin.flow.component.Component... components)
        Creates a dialog with given components inside.
        Parameters:
        components - the components inside the dialog
        See Also:
        add(Component...)
    • Method Detail

      • setWidth

        public void setWidth​(String value)
        Specified by:
        setWidth in interface com.vaadin.flow.component.HasSize
      • setMinWidth

        public void setMinWidth​(String value)
        Specified by:
        setMinWidth in interface com.vaadin.flow.component.HasSize
      • setMaxWidth

        public void setMaxWidth​(String value)
        Specified by:
        setMaxWidth in interface com.vaadin.flow.component.HasSize
      • setHeight

        public void setHeight​(String value)
        Specified by:
        setHeight in interface com.vaadin.flow.component.HasSize
      • setMinHeight

        public void setMinHeight​(String value)
        Specified by:
        setMinHeight in interface com.vaadin.flow.component.HasSize
      • setMaxHeight

        public void setMaxHeight​(String value)
        Specified by:
        setMaxHeight in interface com.vaadin.flow.component.HasSize
      • getWidth

        public String getWidth()
        Specified by:
        getWidth in interface com.vaadin.flow.component.HasSize
      • getMinWidth

        public String getMinWidth()
        Specified by:
        getMinWidth in interface com.vaadin.flow.component.HasSize
      • getMaxWidth

        public String getMaxWidth()
        Specified by:
        getMaxWidth in interface com.vaadin.flow.component.HasSize
      • getHeight

        public String getHeight()
        Specified by:
        getHeight in interface com.vaadin.flow.component.HasSize
      • getMinHeight

        public String getMinHeight()
        Specified by:
        getMinHeight in interface com.vaadin.flow.component.HasSize
      • getMaxHeight

        public String getMaxHeight()
        Specified by:
        getMaxHeight in interface com.vaadin.flow.component.HasSize
      • addDialogCloseActionListener

        public com.vaadin.flow.shared.Registration addDialogCloseActionListener​(com.vaadin.flow.component.ComponentEventListener<Dialog.DialogCloseActionEvent> listener)
        Add a listener that controls whether the dialog should be closed or not.

        The listener is informed when the user wants to close the dialog by clicking outside the dialog, or by pressing escape. Then you can decide whether to close or to keep opened the dialog. It means that dialog won't be closed automatically unless you call close() method explicitly in the listener implementation.

        NOTE: adding this listener changes behavior of the dialog. Dialog is closed automatically in case there are no any close listeners. And the close() method should be called explicitly to close the dialog in case there are close listeners.

        Parameters:
        listener - the listener to add
        Returns:
        registration for removal of listener
        See Also:
        close()
      • addResizeListener

        public com.vaadin.flow.shared.Registration addResizeListener​(com.vaadin.flow.component.ComponentEventListener<Dialog.DialogResizeEvent> listener)
        Adds a listener that is called after user finishes resizing the overlay. It is called only if resizing is enabled (see setResizable(boolean)).

        Note: By default, the component will sync the width/height values after every resizing.

        Parameters:
        listener - the listener to add
        Returns:
        registration for removal of listener
      • add

        public void add​(com.vaadin.flow.component.Component... components)
        Adds the given components into this dialog.

        The elements in the DOM will not be children of the <vaadin-dialog> element, but will be inserted into an overlay that is attached into the <body>.

        Specified by:
        add in interface com.vaadin.flow.component.HasComponents
        Parameters:
        components - the components to add
      • remove

        public void remove​(com.vaadin.flow.component.Component... components)
        Specified by:
        remove in interface com.vaadin.flow.component.HasComponents
      • removeAll

        public void removeAll()
        Specified by:
        removeAll in interface com.vaadin.flow.component.HasComponents
      • addComponentAtIndex

        public void addComponentAtIndex​(int index,
                                        com.vaadin.flow.component.Component component)
        Adds the given component into this dialog at the given index.

        The element in the DOM will not be child of the <vaadin-dialog> element, but will be inserted into an overlay that is attached into the <body>.

        Specified by:
        addComponentAtIndex in interface com.vaadin.flow.component.HasComponents
        Parameters:
        index - the index, where the component will be added.
        component - the component to add
      • isCloseOnEsc

        public boolean isCloseOnEsc()
        Gets whether this dialog can be closed by hitting the esc-key or not.

        By default, the dialog is closable with esc.

        Returns:
        true if this dialog can be closed with the esc-key, false otherwise
      • setCloseOnEsc

        public void setCloseOnEsc​(boolean closeOnEsc)
        Sets whether this dialog can be closed by hitting the esc-key or not.

        By default, the dialog is closable with esc.

        Parameters:
        closeOnEsc - true to enable closing this dialog with the esc-key, false to disable it
      • isCloseOnOutsideClick

        public boolean isCloseOnOutsideClick()
        Gets whether this dialog can be closed by clicking outside of it or not.

        By default, the dialog is closable with an outside click.

        Returns:
        true if this dialog can be closed by an outside click, false otherwise
      • setCloseOnOutsideClick

        public void setCloseOnOutsideClick​(boolean closeOnOutsideClick)
        Sets whether this dialog can be closed by clicking outside of it or not.

        By default, the dialog is closable with an outside click.

        Parameters:
        closeOnOutsideClick - true to enable closing this dialog with an outside click, false to disable it
      • open

        public void open()
        Opens the dialog.

        Note: You don't need to add the dialog component anywhere before opening it. Since <vaadin-dialog>'s location in the DOM doesn't really matter, opening a dialog will automatically add it to the <body> if necessary.

      • close

        public void close()
        Closes the dialog.

        Note: This method also removes the dialog component from the DOM after closing it, unless you have added the component manually.

      • setModal

        public void setModal​(boolean modal)
        Sets whether component will open modal or modeless dialog.

        Note: When dialog is set to be modeless, then it's up to you to provide means for it to be closed (eg. a button that calls close()). The reason being that a modeless dialog allows user to interact with the interface under it and won't be closed by clicking outside or the ESC key.

        Parameters:
        modal - false to enable dialog to open as modeless modal, true otherwise.
      • isModal

        public boolean isModal()
        Gets whether component is set as modal or modeless dialog.
        Returns:
        true if modal dialog (default), false otherwise.
      • setDraggable

        public void setDraggable​(boolean draggable)
        Sets whether dialog is enabled to be dragged by the user or not.

        To allow an element inside the dialog to be dragged by the user (for instance, a header inside the dialog), a class "draggable" can be added to it (see HasStyle.addClassName(String)).

        Note: If draggable is enabled and dialog is opened without first being explicitly attached to a parent, then it won't restore its last position in the case the user closes and opens it again. Reason being that a self attached dialog is removed from the DOM when it's closed and position is not synched.

        Parameters:
        draggable - true to enable dragging of the dialog, false otherwise
      • isDraggable

        public boolean isDraggable()
        Gets whether dialog is enabled to be dragged or not.
        Returns:
        true if dragging is enabled, false otherwise (default).
      • setResizable

        public void setResizable​(boolean resizable)
        Sets whether dialog can be resized by user or not.
        Parameters:
        resizable - true to enabled resizing of the dialog, false otherwise.
      • isResizable

        public boolean isResizable()
        Gets whether dialog is enabled to be resized or not.
        Returns:
        true if resizing is enabled, falsoe otherwiser (default).
      • setHeaderTitle

        public void setHeaderTitle​(String title)
        Sets the title to be rendered on the dialog header.
        Parameters:
        title - title to be rendered
      • getHeaderTitle

        public String getHeaderTitle()
        Gets the title set for the dialog header.
        Returns:
        the title or an empty string, if a header title is not defined.
      • getHeader

        public Dialog.DialogHeader getHeader()
        Gets the object from which components can be added or removed from the dialog header area. The header is displayed only if there's a getHeaderTitle() or at least one component added with Dialog.DialogHeaderFooter.add(Component...).
        Returns:
        the header object
      • getFooter

        public Dialog.DialogFooter getFooter()
        Gets the object from which components can be added or removed from the dialog footer area. The footer is displayed only if there's at least one component added with Dialog.DialogHeaderFooter.add(Component...).
        Returns:
        the header object
      • setVisible

        public void setVisible​(boolean visible)
        Set the visibility of the dialog.

        For a modal dialog the server-side modality will be removed when dialog is not visible so that interactions can be made in the application.

        Overrides:
        setVisible in class com.vaadin.flow.component.Component
        Parameters:
        visible - dialog visibility
        See Also:
        Component.setVisible(boolean)
      • setOpened

        public void setOpened​(boolean opened)
        Opens or closes the dialog.

        Note: You don't need to add the dialog component anywhere before opening it. Since <vaadin-dialog>'s location in the DOM doesn't really matter, opening a dialog will automatically add it to the <body> if necessary.

        Overrides:
        setOpened in class GeneratedVaadinDialog<Dialog>
        Parameters:
        opened - true to open the dialog, false to close it
      • isOpened

        public boolean isOpened()
        Gets the open state from the dialog.
        Returns:
        the opened property from the dialog
      • getChildren

        public Stream<com.vaadin.flow.component.Component> getChildren()
        Overrides:
        getChildren in class com.vaadin.flow.component.Component
      • addOpenedChangeListener

        public com.vaadin.flow.shared.Registration addOpenedChangeListener​(com.vaadin.flow.component.ComponentEventListener<Dialog.OpenedChangeEvent<Dialog>> listener)
        Add a lister for event fired by the opened-changed events.
        Overrides:
        addOpenedChangeListener in class GeneratedVaadinDialog<Dialog>
        Parameters:
        listener - the listener to add
        Returns:
        a Registration for removing the event listener
      • addAttachListener

        public com.vaadin.flow.shared.Registration addAttachListener​(com.vaadin.flow.component.ComponentEventListener<com.vaadin.flow.component.AttachEvent> listener)

        Note: To listen for opening the dialog, you should use addOpenedChangeListener(ComponentEventListener).

        Specified by:
        addAttachListener in interface com.vaadin.flow.component.AttachNotifier
      • addDetachListener

        public com.vaadin.flow.shared.Registration addDetachListener​(com.vaadin.flow.component.ComponentEventListener<com.vaadin.flow.component.DetachEvent> listener)

        Note: To listen for closing the dialog, you should use addOpenedChangeListener(ComponentEventListener), as the component is not necessarily removed from the DOM when closing.

        Specified by:
        addDetachListener in interface com.vaadin.flow.component.DetachNotifier
      • addThemeVariants

        public void addThemeVariants​(DialogVariant... variants)
        Adds theme variants to the component.
        Parameters:
        variants - theme variants to add
      • removeThemeVariants

        public void removeThemeVariants​(DialogVariant... variants)
        Removes theme variants from the component.
        Parameters:
        variants - theme variants to remove
      • onAttach

        protected void onAttach​(com.vaadin.flow.component.AttachEvent attachEvent)
        Overrides:
        onAttach in class com.vaadin.flow.component.Component
      • getStyle

        public com.vaadin.flow.dom.Style getStyle()
        Specified by:
        getStyle in interface com.vaadin.flow.component.HasStyle
        Throws:
        UnsupportedOperationException - Dialog does not support adding styles to overlay