aboutsummaryrefslogtreecommitdiff
path: root/src/composable/validation.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/composable/validation.ts')
-rw-r--r--src/composable/validation.ts27
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;
}