Added age preview to application view

This commit is contained in:
2026-01-02 14:59:37 -05:00
parent 0a3ed7b569
commit d9c721791e

View File

@@ -33,7 +33,7 @@ const regexB = /^https?:\/\/steamcommunity\.com\/profiles\/\d+\/?$/;
const formSchema = toTypedSchema(z.object({ const formSchema = toTypedSchema(z.object({
dob: z.string().refine(v => v, { message: "A date of birth is required." }), dob: z.string().refine(v => v, { message: "A date of birth is required." }),
name: z.string().nonempty(), name: z.string().nonempty(),
playtime: z.preprocess((v) => (v === "" ? undefined : String(v)),z.string({ required_error: "Required" }).regex(/^\d+(\.\d+)?$/, "Must be a number").transform(Number).refine((n) => n >= 0, "Cannot be less than 0")), playtime: z.preprocess((v) => (v === "" ? undefined : String(v)), z.string({ required_error: "Required" }).regex(/^\d+(\.\d+)?$/, "Must be a number").transform(Number).refine((n) => n >= 0, "Cannot be less than 0")),
hobbies: z.string().nonempty(), hobbies: z.string().nonempty(),
military: z.boolean(), military: z.boolean(),
communities: z.string().nonempty(), communities: z.string().nonempty(),
@@ -109,6 +109,17 @@ watch(() => showCoC.value, async () => {
} }
}); });
function convertToAge(dob: string) {
const [month, day, year] = dob.split('/').map(Number);
let dobDate = new Date(year, month - 1, day);
return Math.floor(
(Date.now() - dobDate.getTime()) / (1000 * 60 * 60 * 24 * 365.2425)
);
}
</script> </script>
<template> <template>
@@ -119,7 +130,10 @@ watch(() => showCoC.value, async () => {
<FormItem> <FormItem>
<FormLabel>What is your date of birth?</FormLabel> <FormLabel>What is your date of birth?</FormLabel>
<FormControl> <FormControl>
<template class="flex items-center gap-10">
<DateInput :model-value="(value as string) ?? ''" :disabled="readOnly" @update:model-value="handleChange" /> <DateInput :model-value="(value as string) ?? ''" :disabled="readOnly" @update:model-value="handleChange" />
<p class="text-muted-foreground">Age: {{ convertToAge(value) }}</p>
</template>
</FormControl> </FormControl>
<div class="h-4"> <div class="h-4">
<FormMessage class="text-destructive" /> <FormMessage class="text-destructive" />