diff --git a/src/App.vue b/src/App.vue
index 2795940..e05ca87 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -97,6 +97,7 @@ const onClose = () => {
:min="0"
:max="100"
:step="1"
+ required
/>
diff --git a/src/components/fields/VFileField.vue b/src/components/fields/VFileField.vue
index 3df1d0d..55eed6d 100644
--- a/src/components/fields/VFileField.vue
+++ b/src/components/fields/VFileField.vue
@@ -4,6 +4,7 @@ import VField from './VField.vue'
defineProps<{
label: string
accept?: string
+ required?: boolean
}>()
const modelValue = defineModel({ required: true })
@@ -20,6 +21,7 @@ const onChange = (e: Event) => {
:class="modelValue ? 'text-text-normal' : 'italic text-text-disabled'"
type="file"
:accept
+ :required
@change="onChange"
/>
diff --git a/src/components/fields/VNumberField.vue b/src/components/fields/VNumberField.vue
index 609d3da..739fcb6 100644
--- a/src/components/fields/VNumberField.vue
+++ b/src/components/fields/VNumberField.vue
@@ -7,6 +7,7 @@ defineProps<{
min?: number
max?: number
step?: number
+ required?: boolean
}>()
const modelValue = defineModel({ required: true })
@@ -22,6 +23,7 @@ const modelValue = defineModel({ required: true })
:min
:max
:step
+ :required
/>
diff --git a/src/components/fields/VSelectField.vue b/src/components/fields/VSelectField.vue
index c5bffff..17f4d03 100644
--- a/src/components/fields/VSelectField.vue
+++ b/src/components/fields/VSelectField.vue
@@ -4,6 +4,7 @@ import VField from './VField.vue'
defineProps<{
label: string
options: Record
+ required?: boolean
}>()
const modelValue = defineModel({ required: true })
@@ -14,6 +15,7 @@ const modelValue = defineModel({ required: true })