Class GeneratedVaadinSplitLayout<R extends GeneratedVaadinSplitLayout<R>>
- java.lang.Object
-
- com.vaadin.flow.component.Component
-
- com.vaadin.flow.component.splitlayout.GeneratedVaadinSplitLayout<R>
-
- All Implemented Interfaces:
com.vaadin.flow.component.AttachNotifier,com.vaadin.flow.component.ClickNotifier<R>,com.vaadin.flow.component.DetachNotifier,com.vaadin.flow.component.HasElement,com.vaadin.flow.component.HasStyle,com.vaadin.flow.component.HasTheme,Serializable
- Direct Known Subclasses:
SplitLayout
@Tag("vaadin-split-layout") @NpmPackage(value="@vaadin/polymer-legacy-adapter", version="23.0.3") @JsModule("@vaadin/polymer-legacy-adapter/style-modules.js") @JsModule("@vaadin/split-layout/src/vaadin-split-layout.js") public abstract class GeneratedVaadinSplitLayout<R extends GeneratedVaadinSplitLayout<R>> extends com.vaadin.flow.component.Component implements com.vaadin.flow.component.HasStyle, com.vaadin.flow.component.ClickNotifier<R>, com.vaadin.flow.component.HasThemeDescription copied from corresponding location in WebComponent:
<vaadin-split-layout>is a Web Component implementing a split layout for two content elements with a draggable splitter between them.<vaadin-split-layout> <div>First content element</div> <div>Second content element</div> </vaadin-split-layout>
Horizontal and Vertical Layouts
By default, the split's orientation is horizontal, meaning that the content elements are positioned side by side in a flex container with a horizontal layout.
You can change the split mode to vertical by setting the
orientationattribute to"vertical":<vaadin-split-layout orientation="vertical"> <div>Content on the top</div> <div>Content on the bottom</div> </vaadin-split-layout>
Layouts Combination
For the layout contents, we usually use
<div>elements in the examples, although you can use any other elements as well.For instance, in order to have a nested vertical split layout inside a horizontal one, you can include
<vaadin-split-layout>as a content element inside another split layout:<vaadin-split-layout> <div>First content element</div> <vaadin-split-layout orientation="vertical"> <div>Second content element</div> <div>Third content element</div> </vaadin-split-layout> </vaadin-split-layout>
You can also trigger the vertical mode in JavaScript by setting the property:
splitLayout.orientation = "vertical";.Split Layout Element Height
<vaadin-split-layout>element itself is a flex container. It does not inherit the parent height by default, but rather sets its height depending on the content.You can use CSS to set the fixed height for the split layout, as usual with any block element:
<vaadin-split-layout style="height: 200px;"> <div>First content element</div> <div>Second content element</div> </vaadin-split-layout>
It is possible to define percentage height as well. Note that you have to set the parent height in order to make percentages work correctly. In the following example, the
<body>is resized to fill the entire viewport, and the<vaadin-split-layout>element is set to take 100% height of the<body>:<body style="height: 100vh; margin: 0;"> <vaadin-split-layout style="height: 100%;"> <div>First</div> <div>Second</div> </vaadin-split-layout> </body>
Alternatively, you can use a flexbox layout to make
<vaadin-split-layout>fill up the parent:<body style="height: 100vh; margin: 0; display: flex;"> <vaadin-split-layout style="flex: 1;"> <div>First</div> <div>Second</div> </vaadin-split-layout> </body>
Initial Splitter Position
The initial splitter position is determined from the sizes of the content elements inside the split layout. Therefore, changing
widthon the content elements affects the initial splitter position for the horizontal layouts, whileheightaffects the vertical ones.Note that when the total size of the content elements does not fit the layout, the content elements are scaled proportionally.
When setting initial sizes with relative units, such as percentages, it is recommended to assign the size for both content elements:
<vaadin-split-layout> <div style="width: 75%;">Three fourths</div> <div style="width: 25%;">One fourth</div> </vaadin-split-layout>
Size Limits
The
min-width/min-height, andmax-width/max-heightCSS size values for the content elements are respected and used to limit the splitter position when it is dragged.It is preferred to set the limits only for a single content element, in order to avoid size conflicts:
<vaadin-split-layout> <div style="min-width: 50px; max-width: 150px;">First</div> <div>Second</div> </vaadin-split-layout>
Resize Notification
This element implements
IronResizableBehaviorto notify the nested resizables when the splitter is dragged. In order to define a resizable and receive that notification in a nested element, includeIronResizableBehaviorand listen for theiron-resizeevent.Styling
The following shadow DOM parts are available for styling:
Part name Description Theme for Element splitterSplit element vaadin-split-layout handleThe handle of the splitter vaadin-split-layout - See Also:
- Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classGeneratedVaadinSplitLayout.IronResizeEvent<R extends GeneratedVaadinSplitLayout<R>>static classGeneratedVaadinSplitLayout.SplitterDragendEvent<R extends GeneratedVaadinSplitLayout<R>>
-
Constructor Summary
Constructors Constructor Description GeneratedVaadinSplitLayout()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected com.vaadin.flow.shared.RegistrationaddIronResizeListener(com.vaadin.flow.component.ComponentEventListener<GeneratedVaadinSplitLayout.IronResizeEvent<R>> listener)Adds a listener foriron-resizeevents fired by the webcomponent.protected com.vaadin.flow.shared.RegistrationaddSplitterDragendListener(com.vaadin.flow.component.ComponentEventListener<GeneratedVaadinSplitLayout.SplitterDragendEvent<R>> listener)Adds a listener forsplitter-dragendevents fired by the webcomponent.voidaddThemeVariants(SplitLayoutVariant... variants)Adds theme variants to the component.protected voidaddToPrimary(com.vaadin.flow.component.Component... components)Adds the given components as children of this component at the slot 'primary'.protected voidaddToSecondary(com.vaadin.flow.component.Component... components)Adds the given components as children of this component at the slot 'secondary'.protected StringgetOrientationString()Description copied from corresponding location in WebComponent:protected voidremove(com.vaadin.flow.component.Component... components)Removes the given child components from this component.protected voidremoveAll()Removes all contents from this component, this includes child components, text content as well as child elements that have been added directly to this component using theElementAPI.voidremoveThemeVariants(SplitLayoutVariant... variants)Removes theme variants from the component.protected voidsetOrientation(String orientation)Description copied from corresponding location in WebComponent:-
Methods inherited from class com.vaadin.flow.component.Component
addListener, fireEvent, from, get, getChildren, getElement, getEventBus, getId, getLocale, getParent, getTranslation, getTranslation, getTranslation, getUI, hasListener, isAttached, isTemplateMapped, isVisible, onAttach, onDetach, onEnabledStateChanged, set, setElement, setId, setVisible
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface com.vaadin.flow.component.ClickNotifier
addClickListener, addClickShortcut
-
-
-
-
Method Detail
-
addThemeVariants
public void addThemeVariants(SplitLayoutVariant... variants)
Adds theme variants to the component.- Parameters:
variants- theme variants to add
-
removeThemeVariants
public void removeThemeVariants(SplitLayoutVariant... variants)
Removes theme variants from the component.- Parameters:
variants- theme variants to remove
-
getOrientationString
protected String getOrientationString()
Description copied from corresponding location in WebComponent:
The split layout's orientation. Possible values are:
horizontal|vertical.This property is not synchronized automatically from the client side, so the returned value may not be the same as in client side.
- Returns:
- the
orientationproperty from the webcomponent
-
setOrientation
protected void setOrientation(String orientation)
Description copied from corresponding location in WebComponent:
The split layout's orientation. Possible values are:
horizontal|vertical.- Parameters:
orientation- the String value to set
-
addIronResizeListener
protected com.vaadin.flow.shared.Registration addIronResizeListener(com.vaadin.flow.component.ComponentEventListener<GeneratedVaadinSplitLayout.IronResizeEvent<R>> listener)
Adds a listener foriron-resizeevents fired by the webcomponent.- Parameters:
listener- the listener- Returns:
- a
Registrationfor removing the event listener
-
addSplitterDragendListener
protected com.vaadin.flow.shared.Registration addSplitterDragendListener(com.vaadin.flow.component.ComponentEventListener<GeneratedVaadinSplitLayout.SplitterDragendEvent<R>> listener)
Adds a listener forsplitter-dragendevents fired by the webcomponent.- Parameters:
listener- the listener- Returns:
- a
Registrationfor removing the event listener
-
addToPrimary
protected void addToPrimary(com.vaadin.flow.component.Component... components)
Adds the given components as children of this component at the slot 'primary'.- Parameters:
components- The components to add.- See Also:
- MDN page about slots, Spec website about slots
-
addToSecondary
protected void addToSecondary(com.vaadin.flow.component.Component... components)
Adds the given components as children of this component at the slot 'secondary'.- Parameters:
components- The components to add.- See Also:
- MDN page about slots, Spec website about slots
-
remove
protected void remove(com.vaadin.flow.component.Component... components)
Removes the given child components from this component.- Parameters:
components- The components to remove.- Throws:
IllegalArgumentException- if any of the components is not a child of this component.
-
removeAll
protected void removeAll()
Removes all contents from this component, this includes child components, text content as well as child elements that have been added directly to this component using theElementAPI.
-
-