PluginProbe
The Innovative Form Builder – IvyForms / 0.9
The Innovative Form Builder – IvyForms v0.9
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 0.9, at frontend/src/utils/addFieldUtil.ts

61 lines 2.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 import type { Field } 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 return {
14 ...(fieldData as Field),
15 id: fieldData.id ?? 0,
16 formId: fieldData.formId ?? 0,
17 fieldIndex: index,
18 type: config.type,
19 label: fieldData.label ?? getLabel(config.type),
20 defaultValue: fieldData.defaultValue || '',
21 value: fieldData.value || '',
22 required: fieldData.required || false,
23 readOnly: fieldData.readOnly || false,
24 [config.subFieldKey]: subFields,
25 limitMaxLength: fieldData.limitMaxLength ?? false,
26 limitRange: fieldData.limitRange ?? false,
27 maxLength: fieldData.maxLength ?? 255,
28 labelPosition: fieldData.labelPosition || 'default',
29 noDuplicates: fieldData.noDuplicates || false,
30 inputPrefix: fieldData.inputPrefix || '',
31 inputSuffix: fieldData.inputSuffix || '',
32 limitDateRange: fieldData.limitDateRange ?? false,
33 limitTimeRange: fieldData.limitTimeRange ?? false,
34 } as Field
35 }
36 // Regular field type
37 return {
38 ...(fieldData as Field),
39 id: fieldData.id ?? 0,
40 formId: fieldData.formId ?? 0,
41 fieldIndex: index,
42 defaultValue: fieldData.defaultValue || '',
43 value: fieldData.value || '',
44 required: fieldData.required || false,
45 readOnly: fieldData.readOnly || false,
46 limitMaxLength: fieldData.limitMaxLength ?? false,
47 limitRange: fieldData.limitRange ?? false,
48 maxLength: fieldData.maxLength ?? 255,
49 labelPosition: fieldData.labelPosition || 'default',
50 noDuplicates: fieldData.noDuplicates || false,
51 confirmFieldEnabled: fieldData.confirmFieldEnabled || false,
52 confirmFieldLabel: fieldData.confirmFieldLabel || '',
53 confirmFieldPlaceholder: fieldData.confirmFieldPlaceholder || '',
54 confirmFieldHideLabel: fieldData.confirmFieldHideLabel || false,
55 inputPrefix: fieldData.inputPrefix || '',
56 inputSuffix: fieldData.inputSuffix || '',
57 limitDateRange: fieldData.limitDateRange ?? false,
58 limitTimeRange: fieldData.limitTimeRange ?? false,
59 }
60 }
61