Skip to content

Commit 1edfc54

Browse files
committed
refactor: idPrefix is no longer assigned to FormGenerator.vue
1 parent ac5afee commit 1edfc54

File tree

3 files changed

+15
-10
lines changed

3 files changed

+15
-10
lines changed

src/FormGenerator.vue

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
<script setup>
2-
import { computed, getCurrentInstance, ref } from 'vue'
2+
import { computed, ref } from 'vue'
33
import { resetObjectProperties, toUniqueArray } from '@/helpers'
44
import FormGroup from './FormGroup.vue'
55
6-
const instance = getCurrentInstance()
76
const emits = defineEmits([ 'submit' ])
87
98
const props = defineProps({
@@ -17,6 +16,10 @@ const props = defineProps({
1716
required: false,
1817
default: ''
1918
},
19+
options: {
20+
type: Object,
21+
default: () => ({})
22+
},
2023
schema: {
2124
type: Object,
2225
required: true
@@ -32,9 +35,9 @@ const props = defineProps({
3235
})
3336
3437
/** Data / Refs */
35-
const formGenerator = ref(instance?.proxy || null)
3638
const fieldElements = ref([])
3739
const formErrors = ref({})
40+
const formOptions = computed(() => ({ ...props.options, idPrefix: props.idPrefix }))
3841
3942
/**
4043
* Update form model key with its new value.
@@ -79,7 +82,7 @@ const onReset = () => {
7982
props.model = resetObjectProperties(props.model)
8083
}
8184
82-
defineExpose({ hasErrors, idPrefix: props.idPrefix })
85+
defineExpose({ hasErrors })
8386
</script>
8487

8588
<template>
@@ -94,7 +97,8 @@ defineExpose({ hasErrors, idPrefix: props.idPrefix })
9497
<template v-for="field in props.schema.fields" :key="field">
9598
<form-group
9699
:ref="el => fieldElements.push(el)"
97-
:form-generator="formGenerator" :field="field"
100+
:form-options="formOptions"
101+
:field="field"
98102
:model="props.model"
99103
@value-updated="updateGeneratorModel"
100104
@validated="onFieldValidated"
@@ -108,7 +112,7 @@ defineExpose({ hasErrors, idPrefix: props.idPrefix })
108112
<template v-for="field in group.fields" :key="field">
109113
<form-group
110114
:ref="el => fieldElements.push(el)"
111-
:form-generator="formGenerator"
115+
:form-options="formOptions"
112116
:field="field"
113117
:model="props.model"
114118
@value-updated="updateGeneratorModel"

src/FormGroup.vue

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@ import { getFieldComponentName, hasLabel } from '@/helpers'
55
const fieldComponent = ref(null)
66
77
const props = defineProps({
8-
formGenerator: {
8+
formOptions: {
99
type: Object,
10-
required: true
10+
default: () => ({})
1111
},
1212
model: {
1313
type: Object,
@@ -35,7 +35,7 @@ function onValidated (isValid, fieldErrors, field) {
3535
3636
/** Computed */
3737
const fieldId = computed(() => {
38-
return `${props.formGenerator.idPrefix ? props.formGenerator.idPrefix + '_' : ''}${props.field.name}`
38+
return `${props.formOptions.idPrefix ? props.formOptions.idPrefix + '_' : ''}${props.field.name}`
3939
})
4040
4141
const shouldHaveLabel = computed(() => {
@@ -55,6 +55,7 @@ const shouldHaveLabel = computed(() => {
5555
:is="getFieldComponentName(props.field)"
5656
:id="fieldId"
5757
ref="fieldComponent"
58+
:form-options="props.formOptions"
5859
:model="model"
5960
:field="props.field"
6061
@on-input="onInput"

src/composables/useFieldProps.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ export function useFieldProps () {
22

33
return {
44
id: String,
5-
formGenerator: Object,
5+
formOptions: Object,
66
field: {
77
type: Object,
88
required: true

0 commit comments

Comments
 (0)