diff options
Diffstat (limited to 'src/composable/validation.ts')
-rw-r--r-- | src/composable/validation.ts | 27 |
1 files changed, 15 insertions, 12 deletions
diff --git a/src/composable/validation.ts b/src/composable/validation.ts index 09b1fce..9d1d424 100644 --- a/src/composable/validation.ts +++ b/src/composable/validation.ts @@ -1,27 +1,30 @@ import { reactive, watch, type Ref } from 'vue'; type UseValidationRule<T> = { - validator: (value: T) => boolean - message: string -} + validator: (value: T) => boolean; + message: string; +}; export function useValidation<T>({ source, rules }: { source: Ref<T>; rules: UseValidationRule<T>[] }) { const state = reactive<{ - message: string, - status: undefined | 'error' + message: string; + status: undefined | 'error'; }>({ message: '', - status: undefined - }) + status: undefined, + }); watch([source], () => { - for(const rule of rules) { - if(!rule.validator(source.value)){ - state.message = rule.message - state.status = 'error' + state.message = ''; + state.status = undefined; + + for (const rule of rules) { + if (!rule.validator(source.value)) { + state.message = rule.message; + state.status = 'error'; } } - }) + }); return state; } |