Beagle v1.5 não é mais mantida ativamente. A versão documentada que você está visualizando pode conter funcionalidades depreciadas. Para obter as funcionalidades mais recentes, consulte a nossa última versão .
Um componente do tipo Validator
é utilizado quando for necessário validar alguma informação em um formulário. Essa validação acontece através do método isValid
, que é chamado sempre que são executados umFormSubmit
ou um notifyChanges()
.
Além disso, esse Validator é listado no componente que recebe dados em um formulário, ao qual chamamos deFormInput.
No Beagle, é possível usar o componente Form para capturar dados informados pelo usuário, validá-los e enviá-los ao BFF.
Essa validação pode tanto ocorrer quando o usuário ativa o FormSubmit e/ou quando o usuário notifica que o estado de seu InputWidget(FormInput)
mudou, como por exemplo, quando ditamos um texto ou quando o campo perde o foco.
O Validator recebe dois parâmetros genéricos e possui um único método isValid
que retorna um valor booleano.
interface Validator<in I, in W> {
fun isValid(input: I, widget: W): Boolean
}
inputWidget
envia como informação (data) a ser validada.InputWidget
que enviou a informação (data).É possível implementar um validador quando, por exemplo, você tem um formulário que habilite o FormSubmit apenas nos casos em que o FormInput não estiver vazio. Quando isso acontece, o Form deve receber uma String com a entrada de dados e será validada se está vazia ou não.
@RegisterValidator
@RegisterValidator("text-is-not-blank")
class TextNotBlankValidator : Validator<String, ServerDrivenComponent> {
override fun isValid(input: String, widget: ServerDrivenComponent): Boolean {
return !input.isBlank()
}
}
InputWidget
essa validação, é necessário somente referenciar o nome dado na anotação acima "text-is-not-blank"
no componente.Siga o exemplo abaixo:
FormInput(
name = "required-field",
required = true,
validator = "text-is-not-blank",
child = SampleTextField(placeholder = "placeholder")
)
Já no exemplo a seguir, a implementação de um InputWidget
irá executar o Validator chamando o método notifyChanges()
.
@RegisterWidget
class SampleTextField(private val placeholder: String) : InputWidget() {
private lateinit var textFieldView: EditText
override fun getValue() = textFieldView.text.toString()
override fun onErrorMessage(message: String) {
textFieldView.error = message
}
buildView(rootView: RootView) = EditText(rootView.getContext()).apply {
textFieldView = this
textFieldView.hint = placeholder
textFieldView.isSingleLine = true
doOnTextChanged { _, _, _, _ -> notifyChanges() }
}
}
notifyChanges()
dentro da função doOnTextChange{}
.Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.