aboutsummaryrefslogtreecommitdiff
path: root/src/composable
diff options
context:
space:
mode:
authorGravatar Corentin Thomasset <corentin.thomasset74@gmail.com> 2022-07-29 15:49:28 +0200
committerGravatar Corentin Thomasset <corentin.thomasset74@gmail.com> 2022-08-03 17:13:33 +0200
commit77b5b0cab50a05dcb419ce87d74517d82e7cd2c0 (patch)
tree6d676557a514940a1ad45ebf7cda2491dfb3b29e /src/composable
parent7570ad965602233f860b9e03177a5b9dacf1b034 (diff)
downloadit-tools-77b5b0cab50a05dcb419ce87d74517d82e7cd2c0.tar.gz
it-tools-77b5b0cab50a05dcb419ce87d74517d82e7cd2c0.tar.zst
it-tools-77b5b0cab50a05dcb419ce87d74517d82e7cd2c0.zip
refactor(validation): simplified validation system
Diffstat (limited to 'src/composable')
-rw-r--r--src/composable/validation.ts12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/composable/validation.ts b/src/composable/validation.ts
index b27f2db..fc008de 100644
--- a/src/composable/validation.ts
+++ b/src/composable/validation.ts
@@ -20,15 +20,25 @@ export function isFalsyOrHasThrown(cb: () => ValidatorReturnType): boolean {
}
}
+type ValidationAttrs = {
+ feedback: string;
+ validationStatus: string | undefined;
+};
+
export function useValidation<T>({ source, rules }: { source: Ref<T>; rules: UseValidationRule<T>[] }) {
const state = reactive<{
message: string;
status: undefined | 'error';
isValid: boolean;
+ attrs: ValidationAttrs;
}>({
message: '',
status: undefined,
isValid: false,
+ attrs: {
+ validationStatus: undefined,
+ feedback: '',
+ },
});
watch(
@@ -45,6 +55,8 @@ export function useValidation<T>({ source, rules }: { source: Ref<T>; rules: Use
}
state.isValid = state.status !== 'error';
+ state.attrs.feedback = state.message;
+ state.attrs.validationStatus = state.status;
},
{ immediate: true },
);