trithuc-mvc-react 2.1.1 → 2.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -28,13 +28,27 @@ function EditorForm({ fields, submitRef }) {
|
|
|
28
28
|
if (selectedEditItem) {
|
|
29
29
|
setValue("Id", selectedEditItem.Id);
|
|
30
30
|
|
|
31
|
-
fields.forEach(({ field, onChange, type, keyValue, keyValueLabel, defaultValue }) => {
|
|
31
|
+
fields.forEach(({ field, onChange, type, keyValue, keyValueLabel, defaultValue, ...rest }) => {
|
|
32
|
+
let value = selectedEditItem[field];
|
|
33
|
+
|
|
32
34
|
if (type == "autocomplete") {
|
|
35
|
+
if (rest.multiple) {
|
|
36
|
+
console.log("setvalue multiple", field, value);
|
|
37
|
+
try {
|
|
38
|
+
value = JSON.parse(value);
|
|
39
|
+
if (!(value instanceof Array)) {
|
|
40
|
+
value = [];
|
|
41
|
+
}
|
|
42
|
+
} catch (error) {
|
|
43
|
+
value = [];
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
33
47
|
onChange?.({
|
|
34
|
-
[keyValue]:
|
|
48
|
+
[keyValue]: value
|
|
35
49
|
});
|
|
36
50
|
|
|
37
|
-
setValue(field, selectedEditItem ?
|
|
51
|
+
setValue(field, selectedEditItem ? value : defaultValue);
|
|
38
52
|
setValue(keyValueLabel, selectedEditItem[keyValueLabel]);
|
|
39
53
|
} else if (type === "date") {
|
|
40
54
|
setValue(field, selectedEditItem[field]);
|
|
@@ -93,6 +107,10 @@ function EditorForm({ fields, submitRef }) {
|
|
|
93
107
|
if (data[field] && !data[keyValueLabel] && keyValueLabel) {
|
|
94
108
|
data[keyValueLabel] = datas.find((item) => item[keyValue] == data[field])?.[keyLabel];
|
|
95
109
|
}
|
|
110
|
+
|
|
111
|
+
if (data[field] instanceof Array) {
|
|
112
|
+
data[field] = JSON.stringify(data[field]);
|
|
113
|
+
}
|
|
96
114
|
} else if (type === "file") {
|
|
97
115
|
if (data[field]) {
|
|
98
116
|
data[field] = JSON.stringify(data[field]);
|
|
@@ -41,15 +41,21 @@ function FormField({
|
|
|
41
41
|
size,
|
|
42
42
|
required = false,
|
|
43
43
|
disabled = false,
|
|
44
|
+
multiple = false,
|
|
44
45
|
...rest
|
|
45
46
|
}) {
|
|
46
|
-
const { setValue, register } = useFormContext();
|
|
47
|
+
const { setValue, resetField, register, ...restForm } = useFormContext();
|
|
47
48
|
const getValueObject = useCallback(
|
|
48
49
|
(value) => {
|
|
49
|
-
if (
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
50
|
+
if (multiple) {
|
|
51
|
+
if (!value) return [];
|
|
52
|
+
const result = [...datas].filter((item) => value.some((v) => v == item[keyValue]));
|
|
53
|
+
return result;
|
|
54
|
+
} else {
|
|
55
|
+
if (!value) return null;
|
|
56
|
+
const result = [...datas].find((item) => item[keyValue] == value);
|
|
57
|
+
return result;
|
|
58
|
+
}
|
|
53
59
|
},
|
|
54
60
|
[datas]
|
|
55
61
|
);
|
|
@@ -110,6 +116,47 @@ function FormField({
|
|
|
110
116
|
if (keyValueLabel) {
|
|
111
117
|
register(keyValueLabel);
|
|
112
118
|
}
|
|
119
|
+
|
|
120
|
+
if (multiple) {
|
|
121
|
+
return (
|
|
122
|
+
<Controller
|
|
123
|
+
name={name}
|
|
124
|
+
control={control}
|
|
125
|
+
render={({ field: { onChange: onFieldChange, value }, fieldState: { error } }) => {
|
|
126
|
+
return (
|
|
127
|
+
<Autocomplete
|
|
128
|
+
multiple
|
|
129
|
+
disabled={disabled}
|
|
130
|
+
disablePortal
|
|
131
|
+
noOptionsText="Không có dữ liệu"
|
|
132
|
+
loading={loading}
|
|
133
|
+
size={size}
|
|
134
|
+
options={datas ?? []}
|
|
135
|
+
onChange={(event, newValue) => {
|
|
136
|
+
console.log(newValue);
|
|
137
|
+
onFieldChange(newValue.map((item) => item[keyValue]));
|
|
138
|
+
|
|
139
|
+
onChange(newValue, {
|
|
140
|
+
formMethods: {
|
|
141
|
+
setValue,
|
|
142
|
+
resetField,
|
|
143
|
+
...restForm
|
|
144
|
+
}
|
|
145
|
+
});
|
|
146
|
+
}}
|
|
147
|
+
value={getValueObject(value)}
|
|
148
|
+
fullWidth
|
|
149
|
+
getOptionLabel={(option) => option[keyLabel]}
|
|
150
|
+
renderInput={(params) => (
|
|
151
|
+
<TextField {...params} label={label} error={Boolean(error)} helperText={error?.message} />
|
|
152
|
+
)}
|
|
153
|
+
{...rest}
|
|
154
|
+
/>
|
|
155
|
+
);
|
|
156
|
+
}}
|
|
157
|
+
/>
|
|
158
|
+
);
|
|
159
|
+
}
|
|
113
160
|
return (
|
|
114
161
|
<Controller
|
|
115
162
|
name={name}
|
|
@@ -125,7 +172,14 @@ function FormField({
|
|
|
125
172
|
options={datas ?? []}
|
|
126
173
|
onChange={(event, newValue) => {
|
|
127
174
|
onFieldChange(newValue?.[keyValue]);
|
|
128
|
-
|
|
175
|
+
|
|
176
|
+
onChange(newValue, {
|
|
177
|
+
formMethods: {
|
|
178
|
+
setValue,
|
|
179
|
+
resetField,
|
|
180
|
+
...restForm
|
|
181
|
+
}
|
|
182
|
+
});
|
|
129
183
|
if (keyValueLabel) {
|
|
130
184
|
setValue(keyValueLabel, newValue?.[keyLabel]);
|
|
131
185
|
}
|