VaadStrap
Bootstrap Grid System for Vaadin
Designed to use bootstrap's grid system in Vaadin applications to enable mobile-ready views without writing a single line of CSS.
The library is ready to be used by any Vaadin project and requires no widgetset compilation.
Usage example:
@Viewport("width=device-width, initial-scale=1") // this is necessary
public class BootstrapUI extends UI {
@Override
protected void init(VaadinRequest request) {
Container container = new Container();
setContent(container);
setSizeFull();
Row row = container.addNewRow();
Col col1 = row.addNewCol(ColMod.SM_6, ColMod.MD_4);
Col col2 = row.addNewCol(ColMod.SM_6, ColMod.MD_4, VisibilityMod.HIDDEN_XS);
col1.setChildrenStyle(MarginMod.TOP7);
col1.addComponent(new TextArea());
col1.addComponent(new TextArea());
col2.addComponent(new Text().append("This ").appendBold("column").append(" will be hidden in ").appendSmall("XS").append(" screens"));
col2.addComponent(new HorizontalLayout(new Button("Login", event -> Page.getCurrent().setLocation("/login")), new Button("New User")));
}
}
Container
has Row
(s).
Row
has Col
(s).
col-*-*
, col-*-offset-*
, col-*-push-*
, col-*-pull-*
, visible-*
, hidden-*
styles are available as enum constants. Look for ColMod
, ColOffsetMod
, ColPushPullMod
, VisibilityMod
, MarginMod
classes.
In the future the library may be extended to support more bootstrap features and components through AbstractJavaScriptComponent. PR's are welcome.
Bootstrap version: 3.3.7
Sample code
@Viewport("width=device-width, initial-scale=1") public class BootstrapUI extends UI { @Override protected void init(VaadinRequest request) { Container container = new Container(); setContent(container); setSizeFull(); Row row = container.addNewRow(); Col col1 = row.addNewCol(ColMod.SM_6, ColMod.MD_4); Col col2 = row.addNewCol(ColMod.SM_6, ColMod.MD_4, VisibilityMod.HIDDEN_XS); col1.setChildrenStyle(MarginMod.TOP7); col1.addComponent(new TextArea()); col1.addComponent(new TextArea()); col2.addComponent(new Text().append("This ").appendBold("column").append(" will be hidden in ").appendSmall("XS").append(" screens")); col2.addComponent(new HorizontalLayout(new Button("Login", event -> Page.getCurrent().setLocation("/login")), new Button("New User"))); } }
package com.sebworks; import com.sebworks.vaadstrap.*; import com.vaadin.annotations.Viewport; import com.vaadin.server.FontAwesome; import com.vaadin.server.VaadinRequest; import com.vaadin.spring.annotation.SpringUI; import com.vaadin.ui.Button; import com.vaadin.ui.PasswordField; import com.vaadin.ui.TextField; import com.vaadin.ui.UI; import com.vaadin.ui.themes.ValoTheme; import org.springframework.stereotype.Component; /** * Demo Login UI for vaadstrap * Created by bekce on 3/16/17. */ @SpringUI(path = "login") @Component @Viewport("width=device-width, initial-scale=1") public class LoginUI extends UI { @Override protected void init(VaadinRequest request) { Container container = new Container(); setContent(container); setSizeFull(); TextField emailField = new TextField(); emailField.setPlaceholder("Email"); PasswordField passwordField = new PasswordField(); passwordField.setPlaceholder("Password"); Button loginButton = new Button("Login", FontAwesome.KEY); loginButton.setStyleName(ValoTheme.BUTTON_FRIENDLY); // add header container.addNewRow().addComponent(new Text().appendH2("Please sign in")); // add components container.addRow( new Row() .addCol(new Col(12, 4).addStyles(MarginMod.TOP7).add(emailField)) .addCol(new Col(12, 4).addStyles(MarginMod.TOP7).add(passwordField)) .addCol(new Col(12, 4).addStyles(MarginMod.TOP7).add(loginButton)) ); } }
Links
Compatibility
Was this helpful? Need more help?
Leave a comment or a question below. You can also join
the chat on Discord or
ask questions on StackOverflow.
Version
- Vaadin 8 support!
- Improved builder API for
Container
,Row
andCol
classes - New
Text
andTextMod
support for creating HTML5 text - Upgraded to Bootstrap 3.3.7 and removed unnecessary JS dependencies
- Added login page example
- Released
- 2017-03-16
- Maturity
- EXPERIMENTAL
- License
- MIT License
Compatibility
- Framework
- Vaadin 8.0+
- Vaadin 7.0+ in 0.1.2
- Browser
- Internet Explorer
- Firefox
- Opera
- Safari
- Google Chrome
- Internet Explorer
- iOS Browser
- Android Browser
- Internet Explorer
- Internet Explorer
- Windows Phone
- Microsoft Edge