Skip to content
vue
<script setup lang="ts">
import "@duplojs/form/vueGrid.css";
import "@duplojs/form/vueDesignSystem.css";
import { useMultiLayout, useRepeatLayout } from "@duplojs/form/vue";
import { useNumberInput, useTextInput, PrimaryButton } from "@duplojs/form/vueDesignSystem";
import * as DP from "@duplojs/utils/dataParser";
import { templatesGrid, useForm } from "./configForm";

const { component: TheForm, check, currentValue, reset } = useForm(
	useRepeatLayout(
		useMultiLayout({
			name: useTextInput({
				label: "Name",
				defaultValue: "Math",
				template: templatesGrid
					.useInputTemplate({ columns: 6 }),
			}),
			age: useNumberInput({
				label: "Age",
				defaultValue: 16,
				dataParser: DP.number()
					.addChecker(
						DP.checkerNumberMin(18, { errorMessage: "Too young !" }),
					),
				template: templatesGrid
					.useInputTemplate({ columns: 6 }),
			}),
		}),
		{
			min: 2,
			max: 10,
		},
	),
);

</script>

<template>
	<TheForm @submit="check()">
		<PrimaryButton
			type="submit"
			label="Submit"
		/>
	</TheForm>
</template>

Released under the MIT License.