Skip to content

devscast/validable

Repository files navigation

validable

Maven Central Version build

Validable is an extensible library that simplifies text field validation for Jetpack Compose by providing abstraction and reusable validation logic.

This is what it looks like :

Welcome screen

@Composable  
fun MyScreen() { 
 
     val emailField = remember { EmailValidable() }

    // pass all fields to the withValidable method
    val validator = rememberValidator(emailField)


    TextField(  
	    value = emailField.value,
	    onValueChange = { emailField.value = it }, // update the text  
	    isError = emailField.hasError(), // check if the field is not valid    
	)  
  
	AnimatedVisibility(visible = emailField.hasError()) {
	
	    Text(
                text = emailField.errorMessage ?: "",
            	modifier = Modifier.fillMaxWidth(),
            	style = LocalTextStyle.current.copy(color = MaterialTheme.colors.error)
	    )
        
	}  
	
	Button(
        // a state to check if all fields are valid, without submitting the form
        enabled = validator.isValid,
        onClick = { 
            validator.validate { 
                // will be executed if all fields are valid 
                Toast.makeText(context, "All fields are valid", Toast.LENGTH_SHORT).show()
            } 
        }
    ) { 
		Text(text = "Submit") 
	}  
}  

Gradle setup

Include the validable dependency in your module build.gradle or build.gradle.kts :

dependencies {
    implementation("tech.devscast:validable:<version>")
}

The latest version is Maven Central Version

For full documentation, check out https://devscast.github.io/validable

Contributing

We'd love contributions !

We will also try to tag any issues on our issue tracker that we'd love help with, so if you just want to dip in, go have a look.

If you do want to contribute to this project, we have a code of conduct.