trithuc-mvc-react 2.0.1 → 2.1.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.
@@ -14,236 +14,237 @@ import TableToolbar from "./TableToolbar";
14
14
  import { useDataTable } from "./hooks";
15
15
  import { usePermission } from "../../hooks";
16
16
  const DataTable = ({ multipleActions = [] }) => {
17
- const {
18
- tableName,
19
- selectedField,
20
- columns,
21
- dataSearch,
22
- setOpenEditorDialog,
23
- setSelectedEditItem,
24
- setOpenViewDialog,
25
- onEditClick,
26
- hasTabpanel
27
- } = useDataTable();
28
-
29
- const { set: setPermission } = usePermission(tableName);
30
- const queryClient = useQueryClient();
31
- const confirm = useConfirm();
32
- const [selectedItems, setSelectedItems] = useState([]);
33
- const [page, setPage] = useState(0);
34
- const [rowsPerPage, setRowsPerPage] = useState(5);
35
-
36
- const { data, isLoading } = useQuery({
37
- queryKey: [tableName, page, rowsPerPage, dataSearch],
38
- queryFn: () =>
39
- getDatasFromTable({
40
- tableName: tableName,
41
- page: page + 1,
42
- pageSize: rowsPerPage,
43
- data: dataSearch
44
- }),
45
- // keepPreviousData: true,
46
- onSuccess: ({ PermissionModel, status }) => {
47
- if (status) {
48
- // setPermission(PermissionModel);
49
- // console.log("LOAD LAI PermissionModel");
50
- }
51
- }
52
- });
53
- const changeStatusMutation = useMutation(changeStatusDataToTable, {
54
- onSuccess: () => {
55
- toast.success("Thay đổi trạng thái thành công !");
56
- queryClient.invalidateQueries({ queryKey: [tableName] });
57
- },
58
- onError: () => {
59
- toast.error(" lỗi xảy ra !");
60
- }
61
- });
62
- const deleteMutation = useMutation(deleteDataFromTable, {
63
- onSuccess: ({ status }) => {
64
- if (status) {
65
- toast.success("Xóa thành công !");
66
- } else {
67
- toast.error(" lỗi xảy ra !");
68
- }
69
-
70
- queryClient.invalidateQueries({ queryKey: [tableName] });
71
- },
72
- onError: () => {
73
- toast.error(" lỗi xảy ra !");
74
- }
75
- });
76
- const deleteMultipleMutation = useMutation(deleteMultipleDataFromTable, {
77
- onSuccess: () => {
78
- toast.success("Xóa thành công !");
79
- setSelectedItems([]);
80
- queryClient.invalidateQueries({ queryKey: [tableName] });
81
- },
82
- onError: () => {
83
- toast.error(" lỗi xảy ra !");
84
- }
85
- });
86
-
87
- const handleDelete = (id) => {
88
- confirm({ description: "Bạn chắc chắn muốn xóa bản ghi này không?", title: "Xác nhận" })
89
- .then(() => {
90
- deleteMutation.mutate({
91
- id,
92
- tableName
93
- });
94
- })
95
- .catch(() => {});
96
- };
97
- const handleChangeStatus = (Id) => {
98
- changeStatusMutation.mutate({
99
- tableName,
100
- id: Id
17
+ const {
18
+ tableName,
19
+ selectedField,
20
+ columns,
21
+ dataSearch,
22
+ setOpenEditorDialog,
23
+ setSelectedEditItem,
24
+ setOpenViewDialog,
25
+ onEditClick,
26
+ hasTabpanel,
27
+ defaultRowsPerPage = 5
28
+ } = useDataTable();
29
+
30
+ const { set: setPermission } = usePermission(tableName);
31
+ const queryClient = useQueryClient();
32
+ const confirm = useConfirm();
33
+ const [selectedItems, setSelectedItems] = useState([]);
34
+ const [page, setPage] = useState(0);
35
+ const [rowsPerPage, setRowsPerPage] = useState(defaultRowsPerPage);
36
+
37
+ const { data, isLoading } = useQuery({
38
+ queryKey: [tableName, page, rowsPerPage, dataSearch],
39
+ queryFn: () =>
40
+ getDatasFromTable({
41
+ tableName: tableName,
42
+ page: page + 1,
43
+ pageSize: rowsPerPage,
44
+ data: dataSearch
45
+ }),
46
+ // keepPreviousData: true,
47
+ onSuccess: ({ PermissionModel, status }) => {
48
+ if (status) {
49
+ // setPermission(PermissionModel);
50
+ // console.log("LOAD LAI PermissionModel");
51
+ }
52
+ }
53
+ });
54
+ const changeStatusMutation = useMutation(changeStatusDataToTable, {
55
+ onSuccess: () => {
56
+ toast.success("Thay đổi trạng thái thành công !");
57
+ queryClient.invalidateQueries({ queryKey: [tableName] });
58
+ },
59
+ onError: () => {
60
+ toast.error(" Có lỗi xảy ra !");
61
+ }
62
+ });
63
+ const deleteMutation = useMutation(deleteDataFromTable, {
64
+ onSuccess: ({ status }) => {
65
+ if (status) {
66
+ toast.success("Xóa thành công !");
67
+ } else {
68
+ toast.error(" Có lỗi xảy ra !");
69
+ }
70
+
71
+ queryClient.invalidateQueries({ queryKey: [tableName] });
72
+ },
73
+ onError: () => {
74
+ toast.error(" Có lỗi xảy ra !");
75
+ }
76
+ });
77
+ const deleteMultipleMutation = useMutation(deleteMultipleDataFromTable, {
78
+ onSuccess: () => {
79
+ toast.success("Xóa thành công !");
80
+ setSelectedItems([]);
81
+ queryClient.invalidateQueries({ queryKey: [tableName] });
82
+ },
83
+ onError: () => {
84
+ toast.error(" Có lỗi xảy ra !");
85
+ }
86
+ });
87
+
88
+ const handleDelete = (id) => {
89
+ confirm({ description: "Bạn có chắc chắn muốn xóa bản ghi này không?", title: "Xác nhận" })
90
+ .then(() => {
91
+ deleteMutation.mutate({
92
+ id,
93
+ tableName
101
94
  });
95
+ })
96
+ .catch(() => {});
97
+ };
98
+ const handleChangeStatus = (Id) => {
99
+ changeStatusMutation.mutate({
100
+ tableName,
101
+ id: Id
102
+ });
103
+ };
104
+ const handlEdit = (item) => {
105
+ setOpenEditorDialog(true);
106
+ setSelectedEditItem(item);
107
+ onEditClick(item);
108
+ };
109
+ const handlViewDetail = (item) => {
110
+ setOpenViewDialog(true);
111
+ setSelectedEditItem(item);
112
+ };
113
+ const { rows, total } = useMemo(() => {
114
+ let rows = data?.data ?? [];
115
+ let total = data?.total ?? 0;
116
+ return {
117
+ rows: rows,
118
+ total
102
119
  };
103
- const handlEdit = (item) => {
104
- setOpenEditorDialog(true);
105
- setSelectedEditItem(item);
106
- onEditClick(item);
107
- };
108
- const handlViewDetail = (item) => {
109
- setOpenViewDialog(true);
110
- setSelectedEditItem(item);
111
- };
112
- const { rows, total } = useMemo(() => {
113
- let rows = data?.data ?? [];
114
- let total = data?.total ?? 0;
115
- return {
116
- rows: rows,
117
- total
118
- };
119
- }, [data]);
120
-
121
- useEffect(() => {
122
- let PermissionModel = data?.PermissionModel;
123
- PermissionModel && setPermission(PermissionModel);
124
- }, [data]);
125
- useEffect(() => {
126
- const newSelectedItems = selectedItems.filter((selectedId) => {
127
- return rows?.some((row) => row.Id == selectedId);
120
+ }, [data]);
121
+
122
+ useEffect(() => {
123
+ let PermissionModel = data?.PermissionModel;
124
+ PermissionModel && setPermission(PermissionModel);
125
+ }, [data]);
126
+ useEffect(() => {
127
+ const newSelectedItems = selectedItems.filter((selectedId) => {
128
+ return rows?.some((row) => row.Id == selectedId);
129
+ });
130
+ setSelectedItems(newSelectedItems);
131
+ }, [rows]);
132
+ const handleChangePage = (event, newPage) => {
133
+ setPage(newPage);
134
+ };
135
+ const isSelected = (Id) => selectedItems.indexOf(Id) !== -1;
136
+
137
+ const handleSelect = (event, Id) => {
138
+ const selectedIndex = selectedItems.indexOf(Id);
139
+ let newSelected = [];
140
+
141
+ if (selectedIndex === -1) {
142
+ newSelected = newSelected.concat(selectedItems, Id);
143
+ } else if (selectedIndex === 0) {
144
+ newSelected = newSelected.concat(selectedItems.slice(1));
145
+ } else if (selectedIndex === selectedItems.length - 1) {
146
+ newSelected = newSelected.concat(selectedItems.slice(0, -1));
147
+ } else if (selectedIndex > 0) {
148
+ newSelected = newSelected.concat(selectedItems.slice(0, selectedIndex), selectedItems.slice(selectedIndex + 1));
149
+ }
150
+
151
+ setSelectedItems(newSelected);
152
+ };
153
+ const handleSelectAllClick = (event) => {
154
+ if (event.target.checked) {
155
+ const newSelected = rows.map((n) => n[selectedField]);
156
+ setSelectedItems(newSelected);
157
+ return;
158
+ }
159
+ setSelectedItems([]);
160
+ };
161
+
162
+ const handleChangeRowsPerPage = (event) => {
163
+ setRowsPerPage(parseInt(event.target.value, 10));
164
+ setPage(0);
165
+ };
166
+ const handleDeleteMultiple = () => {
167
+ confirm({ description: `Bạn có chắc chắn muốn xóa ${selectedItems?.length} bản ghi này không?`, title: "Xác nhận" })
168
+ .then(() => {
169
+ deleteMultipleMutation.mutate({
170
+ tableName,
171
+ ids: selectedItems
128
172
  });
129
- setSelectedItems(newSelectedItems);
130
- }, [rows]);
131
- const handleChangePage = (event, newPage) => {
132
- setPage(newPage);
133
- };
134
- const isSelected = (Id) => selectedItems.indexOf(Id) !== -1;
135
-
136
- const handleSelect = (event, Id) => {
137
- const selectedIndex = selectedItems.indexOf(Id);
138
- let newSelected = [];
139
-
140
- if (selectedIndex === -1) {
141
- newSelected = newSelected.concat(selectedItems, Id);
142
- } else if (selectedIndex === 0) {
143
- newSelected = newSelected.concat(selectedItems.slice(1));
144
- } else if (selectedIndex === selectedItems.length - 1) {
145
- newSelected = newSelected.concat(selectedItems.slice(0, -1));
146
- } else if (selectedIndex > 0) {
147
- newSelected = newSelected.concat(selectedItems.slice(0, selectedIndex), selectedItems.slice(selectedIndex + 1));
148
- }
149
-
150
- setSelectedItems(newSelected);
151
- };
152
- const handleSelectAllClick = (event) => {
153
- if (event.target.checked) {
154
- const newSelected = rows.map((n) => n[selectedField]);
155
- setSelectedItems(newSelected);
156
- return;
157
- }
158
- setSelectedItems([]);
159
- };
160
-
161
- const handleChangeRowsPerPage = (event) => {
162
- setRowsPerPage(parseInt(event.target.value, 10));
163
- setPage(0);
164
- };
165
- const handleDeleteMultiple = () => {
166
- confirm({ description: `Bạn có chắc chắn muốn xóa ${selectedItems?.length} bản ghi này không?`, title: "Xác nhận" })
167
- .then(() => {
168
- deleteMultipleMutation.mutate({
169
- tableName,
170
- ids: selectedItems
171
- });
172
- })
173
- .catch(() => {});
174
- };
175
- const theme = useTheme();
176
- const downXL = useMediaQuery(theme.breakpoints.down("xl"));
177
-
178
- return (
179
- <>
180
- <TableContainer sx={{ position: "relative" }}>
181
- <TableToolbar
182
- onSelectAllClick={handleSelectAllClick}
183
- numSelected={selectedItems?.length}
184
- rowCount={rows.length}
185
- onDeleteMultiple={handleDeleteMultiple}
186
- selected={selectedItems}
187
- multipleActions={multipleActions}
173
+ })
174
+ .catch(() => {});
175
+ };
176
+ const theme = useTheme();
177
+ const downXL = useMediaQuery(theme.breakpoints.down("xl"));
178
+
179
+ return (
180
+ <>
181
+ <TableContainer sx={{ position: "relative" }}>
182
+ <TableToolbar
183
+ onSelectAllClick={handleSelectAllClick}
184
+ numSelected={selectedItems?.length}
185
+ rowCount={rows.length}
186
+ onDeleteMultiple={handleDeleteMultiple}
187
+ selected={selectedItems}
188
+ multipleActions={multipleActions}
189
+ />
190
+
191
+ <Table className="border" size={downXL ? "small" : "medium"}>
192
+ <TableHead
193
+ headLabel={columns}
194
+ onSelectAllClick={handleSelectAllClick}
195
+ numSelected={selectedItems?.length}
196
+ rowCount={rows.length}
197
+ />
198
+ {isLoading ? (
199
+ <TableRowsLoader rowsNum={5} colsNum={columns.length + 4} />
200
+ ) : (
201
+ <TableBody>
202
+ {[...rows].map((row, index) => (
203
+ <TableRowRender
204
+ key={row.Id}
205
+ index={index}
206
+ row={row}
207
+ selected={isSelected(row[selectedField])}
208
+ onSelect={handleSelect}
209
+ onEdit={handlEdit}
210
+ onView={handlViewDetail}
211
+ onChangeStatus={handleChangeStatus}
212
+ onDelete={handleDelete}
188
213
  />
189
-
190
- <Table className="border" size={downXL ? "small" : "medium"}>
191
- <TableHead
192
- headLabel={columns}
193
- onSelectAllClick={handleSelectAllClick}
194
- numSelected={selectedItems?.length}
195
- rowCount={rows.length}
196
- />
197
- {isLoading ? (
198
- <TableRowsLoader rowsNum={5} colsNum={columns.length + 4} />
199
- ) : (
200
- <TableBody>
201
- {[...rows].map((row, index) => (
202
- <TableRowRender
203
- key={row.Id}
204
- index={index}
205
- row={row}
206
- selected={isSelected(row[selectedField])}
207
- onSelect={handleSelect}
208
- onEdit={handlEdit}
209
- onView={handlViewDetail}
210
- onChangeStatus={handleChangeStatus}
211
- onDelete={handleDelete}
212
- />
213
- ))}
214
-
215
- {rows?.length == 0 && (
216
- <TableRow>
217
- <TableCell colSpan={columns.length + 4} align="center">
218
- Không có dữ liệu
219
- </TableCell>
220
- </TableRow>
221
- )}
222
- </TableBody>
223
- )}
224
- </Table>
225
- </TableContainer>
226
-
227
- <Grid container>
228
- {!hasTabpanel && (
229
- <Grid item alignSelf={"center"} sx={{ pl: 2 }}>
230
- <Typography variant="body1">
231
- Tổng số lượng: <span>{total}</span>
232
- </Typography>
233
- </Grid>
234
- )}
235
-
236
- <Grid item xs>
237
- <TablePaginationCustom
238
- count={total}
239
- rowsPerPage={rowsPerPage}
240
- page={page}
241
- onPageChange={handleChangePage}
242
- onRowsPerPageChange={handleChangeRowsPerPage}
243
- />
244
- </Grid>
245
- </Grid>
246
- </>
247
- );
214
+ ))}
215
+
216
+ {rows?.length == 0 && (
217
+ <TableRow>
218
+ <TableCell colSpan={columns.length + 4} align="center">
219
+ Không có dữ liệu
220
+ </TableCell>
221
+ </TableRow>
222
+ )}
223
+ </TableBody>
224
+ )}
225
+ </Table>
226
+ </TableContainer>
227
+
228
+ <Grid container>
229
+ {!hasTabpanel && (
230
+ <Grid item alignSelf={"center"} sx={{ pl: 2 }}>
231
+ <Typography variant="body1">
232
+ Tổng số lượng: <span>{total}</span>
233
+ </Typography>
234
+ </Grid>
235
+ )}
236
+
237
+ <Grid item xs>
238
+ <TablePaginationCustom
239
+ count={total}
240
+ rowsPerPage={rowsPerPage}
241
+ page={page}
242
+ onPageChange={handleChangePage}
243
+ onRowsPerPageChange={handleChangeRowsPerPage}
244
+ />
245
+ </Grid>
246
+ </Grid>
247
+ </>
248
+ );
248
249
  };
249
250
  export default DataTable;
@@ -74,7 +74,8 @@ function DataManagement({
74
74
  header: {
75
75
  sx: {}
76
76
  }
77
- }
77
+ },
78
+ defaultRowsPerPage = 5
78
79
  }) {
79
80
  const [openEditorDialog, setOpenEditorDialog] = useState(false);
80
81
  const [selectedEditItem, setSelectedEditItem] = useState(null);
@@ -123,7 +124,8 @@ function DataManagement({
123
124
  disableAdd,
124
125
  tableActions,
125
126
  onEditClick,
126
- hasTabpanel
127
+ hasTabpanel,
128
+ defaultRowsPerPage
127
129
  };
128
130
  }, [
129
131
  tableName,
@@ -136,7 +138,8 @@ function DataManagement({
136
138
  tableActions,
137
139
  openViewDialog,
138
140
  setOpenViewDialog,
139
- onEditClick
141
+ onEditClick,
142
+ defaultRowsPerPage
140
143
  ]);
141
144
 
142
145
  const methods = useForm({ defaultValues: getDefaultValues(filters) });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "trithuc-mvc-react",
3
- "version": "2.0.1",
3
+ "version": "2.1.1",
4
4
  "main": "index.js",
5
5
  "scripts": {
6
6
  "test": "echo \"Error: no test specified\" && exit 1"