# ivyforms/0.4/frontend/src/utils/addFieldUtil.ts

The Innovative Form Builder – IvyForms, version 0.4. 49 lines.

- Page: https://pluginprobe.com/plugins/ivyforms/0.4/code/frontend/src/utils/addFieldUtil.ts
- Raw: https://pluginprobe.com/plugins/ivyforms/0.4/raw/frontend/src/utils/addFieldUtil.ts
- Modified: 2025-09-25T14:53:02+00:00

Line numbers below start at 1. Link to a line or a range by appending a fragment to the
page URL, for example `https://pluginprobe.com/plugins/ivyforms/0.4/code/frontend/src/utils/addFieldUtil.ts#L10-L20`.

```typescript
import type { Field } from '@/types/field'
import { parentChildFieldConfigs } from './parentChildFieldTemplates'

export function buildNewField(
  fieldData: Partial<Field> & { type: string },
  index: number,
  getLabel: (key: string) => string,
): Field {
  const config = parentChildFieldConfigs[fieldData.type]
  if (config) {
    // Parent-child field type
    const subFields = config.buildSubFields(getLabel)
    return {
      ...(fieldData as Field),
      id: fieldData.id ?? 0,
      formId: fieldData.formId ?? 0,
      fieldIndex: index,
      type: config.type,
      label: fieldData.label ?? getLabel(config.type),
      defaultValue: '',
      value: '',
      required: false,
      [config.subFieldKey]: subFields,
      limitMaxLength: fieldData.limitMaxLength || false,
      maxLength: fieldData.maxLength || 255,
      labelPosition: fieldData.labelPosition || 'top',
      noDuplicates: fieldData.noDuplicates || false,
    } as Field
  }
  // Regular field type
  return {
    ...(fieldData as Field),
    id: fieldData.id ?? 0,
    formId: fieldData.formId ?? 0,
    fieldIndex: index,
    defaultValue: '',
    value: '',
    required: false,
    limitMaxLength: fieldData.limitMaxLength || false,
    maxLength: fieldData.maxLength || 255,
    labelPosition: fieldData.labelPosition || 'top',
    noDuplicates: fieldData.noDuplicates || false,
    confirmFieldEnabled: fieldData.confirmFieldEnabled || false,
    confirmFieldLabel: '',
    confirmFieldPlaceholder: '',
    confirmFieldHideLabel: fieldData.confirmFieldEnabled || false,
  }
}

```
