This is a Kotlin extensions and DSL library for the Vaadin framework.
Need a button? Write button {}
. Need a text field? Write textField {}
.
Need a layout? Write
verticalLayout {
val nameField = textField("Your name") {}
button("Click me") {
setPrimary()
onClick { Notification.show("Hello, ${nameField.value}") }
}
}
Build own components and views by composing existing components with layouts.
This library:
- Allows you to create Vaadin UI designs in the structured code way; the idea behind the library is explained in the DSLs: Explained for Vaadin article. The general DSL idea is explained in Kotlin Type-Safe Builders.
- Includes useful components like
PopupButton
andTabSheet
- Contains additional useful methods which Vaadin lacks; see karibu-tools
Compatibility chart:
Vaadin Version | Karibu DSL Version | Min. Java Version | Maintained |
---|---|---|---|
24.5+ | 2.2.0+ | 17 | yes |
24+ | 2.0.0+ | 17 | no |
23 | 1.x | 11 | no |
14-22 | 1.x | 8 | no |
8 | 1.0.x | 5 | no |
A very simple Gradle-based example application is located here: karibu-helloworld-application The project only shows a very simple Button, which makes it an ideal quick start application for experimenting and further development.
To check out the example app and run it:
git clone https://github.com/mvysny/karibu-helloworld-application
cd karibu-helloworld-application
./gradlew run
The app will run on http://localhost:8080.
The Beverage Buddy VoK is a more complex example app. It's the Vaadin Beverage Buddy app backed by an in-memory H2 database. You can quickly run the bundled example application from the command-line:
git clone https://github.com/mvysny/beverage-buddy-vok
cd beverage-buddy-vok
./gradlew appRun
The example app will be running at http://localhost:8080.
>>> Documentation + Tutorial <<<: Please read the Karibu-DSL Vaadin 14+ tutorial.
The origins of the word Karibu: it's a term for North American subspecies of the reindeer; that connects to Vaadin (which is a Finnish word for a female reindeer). A nice connotation comes from Swahili where Karibu means welcome.
Note: For Groovy Vaadin DSL please see the Vaadin Groovy Builder library.
Vaadin 8 support is no longer maintained. If you're still using Vaadin 8, please use Karibu-DSL 1.0.x. Please find the documentation for Karibu-DSL Vaadin 8 in the 1.0.x README.md. Also see Issue #35 for more details.
Just compare the Kotlin-based CategoriesList with the original Java CategoriesList. Both render the Beverage Buddy: Categories page, yet with Kotlin DSL:
- The UI structure is immediately visible
- The code is more readable and much shorter and concise
- You can more easily copy parts of the UI and paste it into your project
Supports Vaadin 14+.
Vaadin 24:
- Simple one-page-one-button example app: karibu-helloworld-application (Gradle), karibu-helloworld-application (Maven)
- Two-page app demoing grids and database: Beverage Buddy VoK running on vok; Beverage Buddy JOOQ
- A simple database-backed one-page task list app: vaadin-kotlin-pwa
Back in the days there was a Vaadin 8 project called UITest (or Component Palette) which demoed all Vaadin 8 components along with all of ValoTheme styles. The project is no longer around officially, but there's a karibu-dsl fork of the project. To run it quickly, follow these steps:
git clone https://github.com/mvysny/karibu-dsl
cd karibu-dsl
git checkout 1.0.x
./gradlew clean build example-v8:appRun
You may need JDK 11 or JDK 8 to run the demo: JDK 17+ may or may not work.
The NumberRangePopup
, DateRangePopup
, ClosedInterval
, NumberInterval
and DateInterval
classes have been removed from this project since they
were too specific. You can find them in the jdbi-orm-vaadin project.
Please see the Karibu-Testing library, to learn more about how to test Karibu-DSL apps.
See Contributing.