feat(form): add metadata tag to bypass validation #29
This commit is contained in:
+15
-1
@@ -23,7 +23,21 @@ class OnlyRequiredInputValidator extends FormValidator {
|
||||
|
||||
@override
|
||||
FormStatus validate(WyattForm form) {
|
||||
// TODO(hpcl): use metadata to check if input is required or not.
|
||||
if (isPure(form)) {
|
||||
return FormStatus.pure;
|
||||
}
|
||||
|
||||
final inputsToTest =
|
||||
form.inputs.where((input) => input.metadata.isRequired);
|
||||
|
||||
if (inputsToTest.every((input) => input.validator.pure)) {
|
||||
return FormStatus.pure;
|
||||
}
|
||||
|
||||
if (inputsToTest.any((input) => input.validator.valid == false)) {
|
||||
return FormStatus.invalid;
|
||||
}
|
||||
|
||||
return FormStatus.valid;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,38 +18,44 @@
|
||||
import 'package:equatable/equatable.dart';
|
||||
import 'package:wyatt_architecture/wyatt_architecture.dart';
|
||||
|
||||
class FormInputMetadata<Extra> extends Equatable
|
||||
implements Entity {
|
||||
class FormInputMetadata<Extra> extends Equatable implements Entity {
|
||||
final bool export;
|
||||
final bool isRequired;
|
||||
final String? name;
|
||||
final Extra? extra;
|
||||
|
||||
const FormInputMetadata({
|
||||
this.export = true,
|
||||
this.isRequired = true,
|
||||
this.name,
|
||||
this.extra,
|
||||
});
|
||||
|
||||
FormInputMetadata<Extra> copyWith({
|
||||
bool? export,
|
||||
bool? isRequired,
|
||||
String? name,
|
||||
Extra? extra,
|
||||
}) =>
|
||||
FormInputMetadata<Extra>(
|
||||
export: export ?? this.export,
|
||||
isRequired: isRequired ?? this.isRequired,
|
||||
name: name ?? this.name,
|
||||
extra: extra ?? this.extra,
|
||||
);
|
||||
|
||||
FormInputMetadata<Extra> clone() => copyWith(
|
||||
export: export,
|
||||
isRequired: isRequired,
|
||||
name: name,
|
||||
extra: extra,
|
||||
);
|
||||
|
||||
@override
|
||||
bool? get stringify => true;
|
||||
List<Object?> get props => [export, isRequired, name, extra];
|
||||
|
||||
@override
|
||||
List<Object?> get props => [export, name, extra];
|
||||
String toString() =>
|
||||
'FormInputMetada(name: $name, export: $export, isRequired: $isRequired, '
|
||||
'${(extra != null) ? "extra(${extra.runtimeType}): $extra" : ""})';
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user