import { useValidatable } from '@/composables/validation/useValidatable' import { useValidation } from '@/composables/validation/useValidation' import type { MaybeRefOrGetter } from 'vue' import { toValue, type ComputedRef } from 'vue' import { useLunarCalendarRules } from './useLunarCalendarRules' export function useLunarCalendarValidation( modelValue: ComputedRef, label: MaybeRefOrGetter, successMessage: MaybeRefOrGetter, required: MaybeRefOrGetter, minYear: MaybeRefOrGetter, maxYear: MaybeRefOrGetter, ) { const { rules } = useLunarCalendarRules( successMessage, required, minYear, maxYear, ) const validation = useValidation({ showSuccessMessages: successMessage !== undefined, fieldIdentifier: toValue(label), }) async function validateOnSubmit() { const result = await validation.validateField( modelValue.value, rules.value, ) return !result.hasError } useValidatable(validateOnSubmit, validation.clearValidation) async function validate() { return await validation.validateField( modelValue.value, rules.value, ) } return { ...validation, validate } }