PluginProbe
The Innovative Form Builder – IvyForms / 1.1.1
The Innovative Form Builder – IvyForms v1.1.1
1.5.1 1.5 1.4.1 1.4 trunk 0.1.2 0.2 0.2.1 0.3 0.3.1 0.4 0.5 0.6 0.6.1 0.6.1-backup 0.6.1.1 0.7 0.8 0.8.1 0.8.2 0.9 0.9.1 1.0 1.1 1.1.1 All 27 releases
ivyforms / frontend / src / utils / addFieldUtil.ts

addFieldUtil.ts in The Innovative Form Builder – IvyForms 1.1.1, at frontend/src/utils/addFieldUtil.ts

71 lines 2.7 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 import type { Field, NameSubField, AddressSubField } from '@/types/field'
2 import { parentChildFieldConfigs } from './parentChildFieldTemplates'
3
4 export function buildNewField(
5 fieldData: Partial<Field> & { type: string },
6 index: number,
7 getLabel: (key: string) => string,
8 ): Field {
9 const config = parentChildFieldConfigs[fieldData.type]
10 if (config) {
11 // Parent-child field type
12 const subFields = config.buildSubFields(getLabel)
13 const parentChildExtras =
14 config.type === 'name'
15 ? { nameFieldTypes: (subFields as NameSubField[]).map((subfield) => subfield.type) }
16 : config.type === 'address'
17 ? {
18 addressFieldTypes: (subFields as AddressSubField[]).map((subfield) => subfield.type),
19 }
20 : {}
21
22 return {
23 ...(fieldData as Field),
24 id: fieldData.id ?? 0,
25 formId: fieldData.formId ?? 0,
26 fieldIndex: index,
27 type: config.type,
28 label: fieldData.label ?? getLabel(config.type),
29 defaultValue: fieldData.defaultValue || '',
30 value: fieldData.value || '',
31 required: fieldData.required || false,
32 readOnly: fieldData.readOnly || false,
33 [config.subFieldKey]: subFields,
34 ...parentChildExtras,
35 limitMaxLength: fieldData.limitMaxLength ?? false,
36 limitRange: fieldData.limitRange ?? false,
37 maxLength: fieldData.maxLength ?? 255,
38 labelPosition: fieldData.labelPosition || 'default',
39 noDuplicates: fieldData.noDuplicates || false,
40 inputPrefix: fieldData.inputPrefix || '',
41 inputSuffix: fieldData.inputSuffix || '',
42 limitDateRange: fieldData.limitDateRange ?? false,
43 limitTimeRange: fieldData.limitTimeRange ?? false,
44 } as Field
45 }
46 // Regular field type
47 return {
48 ...(fieldData as Field),
49 id: fieldData.id ?? 0,
50 formId: fieldData.formId ?? 0,
51 fieldIndex: index,
52 defaultValue: fieldData.defaultValue || '',
53 value: fieldData.value || '',
54 required: fieldData.required || false,
55 readOnly: fieldData.readOnly || false,
56 limitMaxLength: fieldData.limitMaxLength ?? false,
57 limitRange: fieldData.limitRange ?? false,
58 maxLength: fieldData.maxLength ?? 255,
59 labelPosition: fieldData.labelPosition || 'default',
60 noDuplicates: fieldData.noDuplicates || false,
61 confirmFieldEnabled: fieldData.confirmFieldEnabled || false,
62 confirmFieldLabel: fieldData.confirmFieldLabel || '',
63 confirmFieldPlaceholder: fieldData.confirmFieldPlaceholder || '',
64 confirmFieldHideLabel: fieldData.confirmFieldHideLabel || false,
65 inputPrefix: fieldData.inputPrefix || '',
66 inputSuffix: fieldData.inputSuffix || '',
67 limitDateRange: fieldData.limitDateRange ?? false,
68 limitTimeRange: fieldData.limitTimeRange ?? false,
69 }
70 }
71