{"id":20712284,"url":"https://github.com/elmot/vaadin-fluent-api","last_synced_at":"2025-07-02T14:35:41.248Z","repository":{"id":47451221,"uuid":"102833146","full_name":"elmot/vaadin-fluent-api","owner":"elmot","description":"Fluent API for Vaadin 8","archived":false,"fork":false,"pushed_at":"2021-10-19T07:27:29.000Z","size":93,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-11T06:34:32.133Z","etag":null,"topics":["fluent-interface","fluents","java","vaadin","vaadin-addon","vaadin8"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/elmot.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-09-08T07:38:57.000Z","updated_at":"2021-10-19T07:27:28.000Z","dependencies_parsed_at":"2022-08-24T02:00:24.916Z","dependency_job_id":null,"html_url":"https://github.com/elmot/vaadin-fluent-api","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/elmot/vaadin-fluent-api","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elmot%2Fvaadin-fluent-api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elmot%2Fvaadin-fluent-api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elmot%2Fvaadin-fluent-api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elmot%2Fvaadin-fluent-api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/elmot","download_url":"https://codeload.github.com/elmot/vaadin-fluent-api/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elmot%2Fvaadin-fluent-api/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":263157202,"owners_count":23422571,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["fluent-interface","fluents","java","vaadin","vaadin-addon","vaadin8"],"created_at":"2024-11-17T02:19:08.846Z","updated_at":"2025-07-02T14:35:41.215Z","avatar_url":"https://github.com/elmot.png","language":"Java","readme":"[![Published on Vaadin  Directory](https://img.shields.io/badge/Vaadin%20Directory-published-00b4f0.svg)](https://vaadin.com/directory/component/fluent-api-add-on)\n[![Stars on Vaadin Directory](https://img.shields.io/vaadin-directory/star/fluent-api-add-on.svg)](https://vaadin.com/directory/component/fluent-api-add-on)\n\n# Elmot's Fluent API Add-on for Vaadin 8\n\nYet another [Fluent API](https://en.wikipedia.org/wiki/Fluent_interface) addon \nfor [Vaadin 8](https://vaadin.com/framework). Uses approach without extending \nexisting classes but by encapsulating those to outer classes. As a result, the \nAPI looks a bit like [Builder](https://en.wikipedia.org/wiki/Builder_pattern) pattern. \nNote ```get()``` method in the example.  \n\n## Getting started\n\n```java\nLabel label = Fluent.label()\n                        .value(\"Styled label\")\n                        .styles(ValoTheme.LABEL_HUGE, ValoTheme.LABEL_COLORED)\n                        .get();\n```\nI do not see a point in covering all the Vaadin components with fluents but only most \nused components without complicated settings. Nevertheless, if you need to \"fluent\" \nsome custom or complicated component, you can do that like here: \n```java\nFluent.$(new Grid()).setup(grid -\u003e grid.setBeanType(YourBean.class)).id(\"grid\");\n```\nIf that is not enough for you, feel free to [contribute](#contributions).\nMore examples: \n * [DemoUI.java](fluent-api-demo/src/main/java/org/vaadin/addon/elmot/fluent/demo/DemoUI.java)\n * [TestElements.java](fluent-api-gen/src/test/java/org/vaadin/addon/elmot/fluenttest/TestElements.java)\n * [TestContainer.java](fluent-api-addon/src/test/java/org/vaadin/addon/elmot/fluent/TestContainer.java)\n\n\n\n## Download release\n\nOfficial releases of this add-on are available at Vaadin Directory. \n\nFor Maven instructions, download and reviews, go to https://vaadin.com/directory#!addon/fluent-api-add-on\n\n## Building and running demo\n```bash\ngit clone https://github.com/elmot/vaadin-fluent-api\nmvn clean install\ncd demo\nmvn jetty:run\n```\n\nTo see the demo, navigate to http://localhost:8080/\n\n## Release notes\n\n### Version 0.1\nCovered: \n* Button\n* CheckBox\n* ComboBox\n* Component\n* DateField\n* DateTimeField\n* Image\n* InlineDateField\n* InlineDateTimeField\n* Label\n* Link\n* HorizontalLayout\n* VerticalLayout\n* Panel\n* TextArea\n* TextField\n\n## Issue tracking\n\nThe issues for this add-on are tracked on its github.com page. All bug reports \nand feature requests are appreciated. \n\n## Contributions\n\nContributions are welcome, but there are no guarantees that they are accepted as\n such. Process for contributing is the following:\n- Fork this project\n- Create an issue to this project about the contribution (bug or feature) if \nthere is no such issue about it already. Try to keep the scope minimal.\n- Develop and test the fix or functionality carefully. Only include minimum \namount of code needed to fix the issue.\n- Refer to the fixed issue in commit\n- Send a pull request for the original project\n- Comment on the original issue that you have implemented a fix for it\n\n## Developer Guide\nNote, most of the code is automatically generated from java class templates. \nDo not try to manually change the result classes. all of those changes will be lost during build process.\nThe ``fluent-api-gen`` module contains both code generator code and java template classes:  \n* [The code generator](fluent-api-gen/src/main/java/org/vaadin/addon/elmot/fluent/gen/Generator.java)\n* [The templates](fluent-api-gen/src/main/java/org/vaadin/addon/elmot/fluent/templates/impl) \n\nMethod return types, some annotations, trivial methods implementations, overriden \nmethods are added automatically by the code generator.\n\n## License \u0026 Author\n\nAdd-on is distributed under Apache License 2.0. For license terms, see LICENSE.txt.\n\nThe API is written by Ilia Motornyi aka Elmot, me@elmot.xyz\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Felmot%2Fvaadin-fluent-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Felmot%2Fvaadin-fluent-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Felmot%2Fvaadin-fluent-api/lists"}