-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy patheditField.js
More file actions
111 lines (108 loc) · 3.3 KB
/
editField.js
File metadata and controls
111 lines (108 loc) · 3.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
import React, { useState } from "react";
import "./App.css";
const NewField = (props) => {
const { updateShowAddFieldModal, items, updateItems } = props;
const [internalFieldName, updateInternalFieldName] = useState("");
const [internalFieldType, updateInternalFieldType] = useState("text");
const [internalFieldOptions, updateInternalFieldOptions] = useState([]);
const [internalIsFieldRequired, updateInternalIsFieldRequired] = useState(
false
);
const [internalFieldHalfWidth, updateInternalFieldHalfWidth] = useState(
false
);
const typeOptions = [
{ name: "Text Field", type: "text" },
{ name: "Email", type: "email" },
{ name: "Date", type: "date" },
{ name: "Text Area", type: "text-area" },
{ name: "Radio", type: "radio" },
{ name: "Checkbox", type: "checkbox" },
{ name: "Select", type: "select" },
{ name: "State", type: "state" }
];
return (
<div className="modal-background">
<div className="create-input-options">
<label>
Name
<input
type="text"
onChange={(e) => updateInternalFieldName(e.target.value)}
/>
</label>
<label>
Type
<select onChange={(e) => updateInternalFieldType(e.target.value)}>
{typeOptions.map((t, index) => (
<option value={t.type} key={index}>
{t.name}
</option>
))}
</select>
</label>
{internalFieldType === "select" || internalFieldType === "radio" ? (
<label>
Options (separated by a comma)
<input
type="email"
multiple
onChange={(e) =>
updateInternalFieldOptions(e.target.value.split(","))
}
/>
</label>
) : null}
<label className="flex-row">
<input
type="checkbox"
checked={internalIsFieldRequired}
onChange={(e) =>
updateInternalIsFieldRequired(!internalIsFieldRequired)
}
/>
Required
</label>
<label className="flex-row">
<input
type="checkbox"
checked={internalFieldHalfWidth}
onChange={(e) =>
updateInternalFieldHalfWidth(!internalFieldHalfWidth)
}
/>
Half width
</label>
<div className="modal-button-group">
<div
className="add-field-cancel"
onClick={() => updateShowAddFieldModal(false)}
>
Cancel
</div>
<div
className="add-field-submit"
onClick={() => {
updateShowAddFieldModal(false);
updateItems([
...items,
{
ordinality: items.length,
name: internalFieldName,
type: internalFieldType,
options: internalFieldOptions,
element: internalFieldType === "select" ? "select" : "input",
required: internalIsFieldRequired,
isHalfWidth: internalFieldHalfWidth
}
]);
}}
>
Add
</div>
</div>
</div>
</div>
);
};
export default NewField;