Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/emilymclean/jetpackforms
A Jetpack first forms library
https://github.com/emilymclean/jetpackforms
android jetpack-compose
Last synced: about 1 month ago
JSON representation
A Jetpack first forms library
- Host: GitHub
- URL: https://github.com/emilymclean/jetpackforms
- Owner: emilymclean
- License: mit
- Created: 2023-05-04T04:17:57.000Z (over 1 year ago)
- Default Branch: develop
- Last Pushed: 2023-07-06T15:30:56.000Z (over 1 year ago)
- Last Synced: 2024-10-29T14:53:44.467Z (3 months ago)
- Topics: android, jetpack-compose
- Language: Kotlin
- Homepage:
- Size: 144 KB
- Stars: 1
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# JetpackForms
[![Build](https://github.com/BenMMcLean/JetpackForms/actions/workflows/build.yml/badge.svg)](https://github.com/BenMMcLean/JetpackForms/actions/workflows/build.yml)A Jetpack first forms library.
JetpackForms compartmentalizes data management and validation logic out of ViewModels and into
reusable field and validation objects.## Setup
JetpackForms automatically publishes to Github Packages. To use the core library in your project,
add the registry to your settings.gradle file:
```groovy
pluginManagement {
repositories {
maven {
url = uri("https://maven.pkg.github.com/BenMMcLean/JetpackForms")
}
}
}
```
then add your dependency to your app level build.gradle file:
```groovy
dependencies {
implementation 'cl.benm.forms:forms:LATEST_VERSION'
}
```## Usage
To use the forms library, create a new form with any of the fields:
```kotlin
val form = Form.of(listOf(
TextFormField(
"name",
listOf(RequiredValidator()),
TextFormFactor.TEXT
),
TextFormField.phone("phone", true) // Some fields have shortcut constructors for common data types
))
```
fields can then be accessed with:
```kotlin
form.getField("name")
```Out of the box, JetpackForms can also extract data from form fields into a map or flat Kotlin object:
```kotlin
val contentAsAMap = form.extract(MapFormExtractor())
val contentAsAPoko = form.extract(PokoFormExtractor(
target = NameAndPhone::class
))
```## Future
In the future, a compose library is planned that would provide a simple and automatic interface
for rendering form fields is planned. In addition, support for file selectors is planned.