trithuc-mvc-react 2.2.1 → 2.3.2
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
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,6 +172,7 @@ function FormField({
|
|
|
125
172
|
options={datas ?? []}
|
|
126
173
|
onChange={(event, newValue) => {
|
|
127
174
|
onFieldChange(newValue?.[keyValue]);
|
|
175
|
+
|
|
128
176
|
onChange(newValue, {
|
|
129
177
|
formMethods: {
|
|
130
178
|
setValue,
|
|
@@ -18,6 +18,7 @@ import { usePermission } from "../../hooks";
|
|
|
18
18
|
DataManagement.propTypes = {
|
|
19
19
|
columns: PropTypes.array,
|
|
20
20
|
title: PropTypes.string,
|
|
21
|
+
titleButtons: PropTypes.array,
|
|
21
22
|
tableName: PropTypes.string,
|
|
22
23
|
selectedField: PropTypes.string,
|
|
23
24
|
filters: PropTypes.arrayOf(
|
|
@@ -52,6 +53,7 @@ const getDefaultValues = (filters = []) => {
|
|
|
52
53
|
function DataManagement({
|
|
53
54
|
columns = [],
|
|
54
55
|
title,
|
|
56
|
+
titleButtons = [],
|
|
55
57
|
tableName,
|
|
56
58
|
selectedField = "Id",
|
|
57
59
|
filters: tableFilters = [],
|
|
@@ -110,6 +112,7 @@ function DataManagement({
|
|
|
110
112
|
return {
|
|
111
113
|
tableName,
|
|
112
114
|
selectedField,
|
|
115
|
+
titleButtons,
|
|
113
116
|
columns,
|
|
114
117
|
selectedEditItem,
|
|
115
118
|
setSelectedEditItem,
|
|
@@ -130,6 +133,7 @@ function DataManagement({
|
|
|
130
133
|
}, [
|
|
131
134
|
tableName,
|
|
132
135
|
selectedField,
|
|
136
|
+
titleButtons,
|
|
133
137
|
columns,
|
|
134
138
|
selectedEditItem,
|
|
135
139
|
dataSearch,
|
|
@@ -170,6 +174,12 @@ function DataManagement({
|
|
|
170
174
|
</IconButton>
|
|
171
175
|
</Tooltip>
|
|
172
176
|
|
|
177
|
+
{titleButtons?.map((button, index) => (
|
|
178
|
+
<div key={index}>
|
|
179
|
+
{button}
|
|
180
|
+
{/* Các phần tử khác có thể được thêm ở đây nếu cần */}
|
|
181
|
+
</div>
|
|
182
|
+
))}
|
|
173
183
|
<ExportExcelButton tableName={tableName} data={dataSearch} size={elementSize} />
|
|
174
184
|
{canCreate && !disableAdd && (
|
|
175
185
|
<Button
|
|
@@ -199,6 +209,7 @@ function DataManagement({
|
|
|
199
209
|
</Card>
|
|
200
210
|
</FormProvider>
|
|
201
211
|
|
|
212
|
+
{/* nôi dung form */}
|
|
202
213
|
{disableEditor || (
|
|
203
214
|
<EditorDialog
|
|
204
215
|
open={openEditorDialog}
|
|
@@ -207,6 +218,7 @@ function DataManagement({
|
|
|
207
218
|
fields={editorFields}
|
|
208
219
|
/>
|
|
209
220
|
)}
|
|
221
|
+
{/* nôi dung view */}
|
|
210
222
|
<ViewDetailDialog open={openViewDialog} onClose={() => setOpenViewDialog(false)} fields={editorFields} />
|
|
211
223
|
</DataTableContext.Provider>
|
|
212
224
|
</>
|