Skip to content

Commit 0ecf046

Browse files
committed
Refactors DynamicField component
1 parent 842d3c3 commit 0ecf046

File tree

1 file changed

+21
-21
lines changed

1 file changed

+21
-21
lines changed

app/javascript/components/service-dialog-form/dynamic-field.jsx

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -30,30 +30,30 @@ const DynamicField = ({ fieldData, onFieldAction }) => {
3030
};
3131

3232
const fieldSelector = (fieldData) => {
33-
// Determine component ID with cleaner fallback logic
33+
// Determine component ID
3434
const { field } = fieldData;
3535
const componentId = field.componentId || getComponentIdFromType(field.type || '');
3636

37-
switch (componentId) {
38-
case 1:
39-
return <DynamicTextInput dynamicFieldData={fieldData} onFieldAction={(newFieldData) => onFieldAction(newFieldData)} />;
40-
case 2:
41-
return <DynamicTextArea dynamicFieldData={fieldData} onFieldAction={(newFieldData) => onFieldAction(newFieldData)} />;
42-
case 3:
43-
return <DynamicCheckbox dynamicFieldData={fieldData} onFieldAction={(newFieldData) => onFieldAction(newFieldData)} />;
44-
case 4:
45-
return <DynamicDropdown dynamicFieldData={fieldData} onFieldAction={(newFieldData) => onFieldAction(newFieldData)} />;
46-
case 5:
47-
return <DynamicRadioButton dynamicFieldData={fieldData} onFieldAction={(newFieldData) => onFieldAction(newFieldData)} />;
48-
case 6:
49-
return <DynamicDatepicker dynamicFieldData={fieldData} onFieldAction={(newFieldData) => onFieldAction(newFieldData)} />;
50-
case 7:
51-
return <DynamicTimepicker dynamicFieldData={fieldData} onFieldAction={(newFieldData) => onFieldAction(newFieldData)} />;
52-
case 8:
53-
return <DynamicTagControl dynamicFieldData={fieldData} onFieldAction={(newFieldData) => onFieldAction(newFieldData)} />;
54-
default:
55-
return <DynamicTextInput dynamicFieldData={fieldData} onFieldAction={(newFieldData) => onFieldAction(newFieldData)} />;
56-
}
37+
// Map component IDs to their respective React components
38+
const componentMap = {
39+
1: DynamicTextInput,
40+
2: DynamicTextArea,
41+
3: DynamicCheckbox,
42+
4: DynamicDropdown,
43+
5: DynamicRadioButton,
44+
6: DynamicDatepicker,
45+
7: DynamicTimepicker,
46+
8: DynamicTagControl,
47+
};
48+
49+
// Get the component based on componentId or default to DynamicTextInput
50+
const Component = componentMap[componentId] || DynamicTextInput;
51+
52+
// Return the component with common props
53+
return <Component
54+
dynamicFieldData={fieldData}
55+
onFieldAction={onFieldAction}
56+
/>;
5757
};
5858

5959
return (

0 commit comments

Comments
 (0)