phx-react 1.3.1667 → 1.3.1668
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.
- package/dist/cjs/components/TableV6/TableV6.d.ts +104 -0
- package/dist/cjs/components/TableV6/TableV6.js +521 -0
- package/dist/cjs/components/TableV6/TableV6.js.map +1 -0
- package/dist/cjs/components/TableV6/index.d.ts +1 -0
- package/dist/cjs/components/TableV6/index.js +5 -0
- package/dist/cjs/components/TableV6/index.js.map +1 -0
- package/dist/cjs/index.d.ts +2 -1
- package/dist/cjs/index.js +3 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/esm/components/TableV6/TableV6.d.ts +104 -0
- package/dist/esm/components/TableV6/TableV6.js +517 -0
- package/dist/esm/components/TableV6/TableV6.js.map +1 -0
- package/dist/esm/components/TableV6/index.d.ts +1 -0
- package/dist/esm/components/TableV6/index.js +2 -0
- package/dist/esm/components/TableV6/index.js.map +1 -0
- package/dist/esm/index.d.ts +2 -1
- package/dist/esm/index.js +2 -1
- package/dist/esm/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { ComplexAction } from '../types';
|
|
3
|
+
import { IEmptyStateAction } from '../EmptyStateAction';
|
|
4
|
+
import { SelectedButtonIcon } from '../TableV3/SelectedAction';
|
|
5
|
+
import { ReadonlyURLSearchParams } from 'next/navigation';
|
|
6
|
+
export interface MainTableV6Props {
|
|
7
|
+
paginationData: any;
|
|
8
|
+
isUnaccentSearchValue?: boolean;
|
|
9
|
+
sortData: any;
|
|
10
|
+
slectedTitle?: string | any;
|
|
11
|
+
selectedBtn?: Array<ComplexAction & {
|
|
12
|
+
icon?: SelectedButtonIcon;
|
|
13
|
+
}>;
|
|
14
|
+
pathname?: any;
|
|
15
|
+
list: {
|
|
16
|
+
keyResult: string;
|
|
17
|
+
query: string;
|
|
18
|
+
} | any;
|
|
19
|
+
thHeader: Array<any>;
|
|
20
|
+
thBody: Array<any>;
|
|
21
|
+
thBodyComponent?: object | any;
|
|
22
|
+
thBodyFilter?(): any;
|
|
23
|
+
editActionLink?: string;
|
|
24
|
+
search: {
|
|
25
|
+
enable: boolean;
|
|
26
|
+
keyResult: string;
|
|
27
|
+
query: string;
|
|
28
|
+
} | any;
|
|
29
|
+
selectedAllPeople?: {
|
|
30
|
+
enable: boolean;
|
|
31
|
+
title: string;
|
|
32
|
+
maxSelectedPeople?: number;
|
|
33
|
+
hideSelectedAction?: boolean;
|
|
34
|
+
} | any;
|
|
35
|
+
actionName?: any;
|
|
36
|
+
sort?: {
|
|
37
|
+
enable?: boolean;
|
|
38
|
+
defaultActive?: string;
|
|
39
|
+
sortList?: Array<any>;
|
|
40
|
+
} | any;
|
|
41
|
+
clickRow?: boolean;
|
|
42
|
+
clickType?: 'edit' | 'custom';
|
|
43
|
+
router: any;
|
|
44
|
+
setAggregate?: any;
|
|
45
|
+
sortSelectData?: any;
|
|
46
|
+
selectArray?: any;
|
|
47
|
+
pagination?: any;
|
|
48
|
+
routerCondition?: {
|
|
49
|
+
link: string;
|
|
50
|
+
conditionName: string;
|
|
51
|
+
conditionArray: Array<any>;
|
|
52
|
+
} | any;
|
|
53
|
+
onClick?(rowData: any): any;
|
|
54
|
+
thHeaderComponent?: any;
|
|
55
|
+
hidePagination?: boolean;
|
|
56
|
+
rowNumber?: number;
|
|
57
|
+
onChange?: any;
|
|
58
|
+
typeLoading?: {
|
|
59
|
+
type: 'page-with-table' | 'page-table-with-report' | 'table' | 'page-table-report-filter' | 'page-table-filter';
|
|
60
|
+
filterQty?: number;
|
|
61
|
+
reportQty?: number;
|
|
62
|
+
};
|
|
63
|
+
setHeaderLoading?: any;
|
|
64
|
+
directDetail?: {
|
|
65
|
+
enable: boolean;
|
|
66
|
+
onClick?(): any;
|
|
67
|
+
} | any;
|
|
68
|
+
filterLoading?: boolean;
|
|
69
|
+
fixedTableLayout?: boolean;
|
|
70
|
+
numericalOrder?: {
|
|
71
|
+
enable: boolean;
|
|
72
|
+
title: string | any;
|
|
73
|
+
disableSpacing?: boolean;
|
|
74
|
+
sticky?: boolean;
|
|
75
|
+
};
|
|
76
|
+
isQueryDataCenter?: boolean;
|
|
77
|
+
isQueryDevPortal?: boolean;
|
|
78
|
+
isSortEmpty?: boolean;
|
|
79
|
+
emptyStateAction?: IEmptyStateAction & {
|
|
80
|
+
enable: boolean;
|
|
81
|
+
};
|
|
82
|
+
isCustomHeaderSelected?: boolean;
|
|
83
|
+
disableSpacing?: {
|
|
84
|
+
disable: boolean;
|
|
85
|
+
indexStart: number;
|
|
86
|
+
};
|
|
87
|
+
border?: boolean;
|
|
88
|
+
isCenterText?: boolean;
|
|
89
|
+
searchValueData?(val: string): void;
|
|
90
|
+
stickyColumnNumber?: number;
|
|
91
|
+
getDataTable?(val: any): void;
|
|
92
|
+
stickyColumnNumberRight?: number;
|
|
93
|
+
isBackgroundReload?: boolean;
|
|
94
|
+
loaded?: (val: boolean) => void;
|
|
95
|
+
isResetPagination?: boolean;
|
|
96
|
+
tableKey?: string;
|
|
97
|
+
searchParams?: ReadonlyURLSearchParams;
|
|
98
|
+
completeState?: boolean;
|
|
99
|
+
completeStateTitle?: string;
|
|
100
|
+
completeStateDescription?: string;
|
|
101
|
+
type?: 'default' | 'in-card';
|
|
102
|
+
title?: string;
|
|
103
|
+
}
|
|
104
|
+
export declare function PHXTableV6({ actionName, clickRow, clickType, directDetail, editActionLink, filterLoading, fixedTableLayout, hidePagination, list, numericalOrder, onChange, onClick, pagination, paginationData, router, routerCondition, rowNumber, search, selectArray, selectedAllPeople, selectedBtn, setAggregate, setHeaderLoading, slectedTitle, sort, sortData, sortSelectData, thBody, thBodyComponent, thBodyFilter, thHeader, thHeaderComponent, typeLoading, isSortEmpty, emptyStateAction, isCustomHeaderSelected, isUnaccentSearchValue, disableSpacing, border, isCenterText, searchValueData, stickyColumnNumber, getDataTable, stickyColumnNumberRight, isBackgroundReload, loaded, isResetPagination, tableKey, searchParams, completeState, completeStateTitle, completeStateDescription, type, title, }: Readonly<MainTableV6Props>): React.JSX.Element;
|
|
@@ -0,0 +1,521 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
'use client';
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.PHXTableV6 = PHXTableV6;
|
|
5
|
+
const tslib_1 = require("tslib");
|
|
6
|
+
const react_1 = require("@headlessui/react");
|
|
7
|
+
const solid_1 = require("@heroicons/react/24/solid");
|
|
8
|
+
const react_2 = tslib_1.__importStar(require("react"));
|
|
9
|
+
const Button_1 = require("../Button");
|
|
10
|
+
const EmptyRecord_1 = require("../EmptyRecord");
|
|
11
|
+
const useDebounce_1 = tslib_1.__importDefault(require("../Func/useDebounce"));
|
|
12
|
+
const Loading_1 = require("../Loading");
|
|
13
|
+
const Skeleton_1 = require("../Skeleton");
|
|
14
|
+
const types_1 = require("../types");
|
|
15
|
+
const PHXGrpcClientV6_1 = require("../Func/GRPC/PHXGrpcClientV6");
|
|
16
|
+
const sort_1 = tslib_1.__importDefault(require("../TableV3/sort"));
|
|
17
|
+
const RowTable_1 = require("../TableV3/RowTable");
|
|
18
|
+
const PaginaitonSelectedV5_1 = tslib_1.__importDefault(require("../TableV5/PaginaitonSelectedV5"));
|
|
19
|
+
const PaginationV5_1 = tslib_1.__importDefault(require("../TableV5/PaginationV5"));
|
|
20
|
+
const EmptyStateAction_1 = require("../EmptyStateAction");
|
|
21
|
+
const HeaderTable_1 = tslib_1.__importDefault(require("../TableV3/HeaderTable"));
|
|
22
|
+
const SelectedAction_1 = tslib_1.__importDefault(require("../TableV3/SelectedAction"));
|
|
23
|
+
const helpers_1 = require("../../helpers/helpers");
|
|
24
|
+
const useStickyLeft_1 = require("../TableVertical/useStickyLeft");
|
|
25
|
+
const CompleteState_1 = require("../CompleteState");
|
|
26
|
+
const EmptySearch_1 = require("../EmptySearch");
|
|
27
|
+
function PHXTableV6({ actionName, clickRow = true, clickType = 'edit', directDetail, editActionLink, filterLoading = false, fixedTableLayout = true, hidePagination, list, numericalOrder = {
|
|
28
|
+
enable: true,
|
|
29
|
+
title: 'STT',
|
|
30
|
+
disableSpacing: false,
|
|
31
|
+
sticky: false,
|
|
32
|
+
}, onChange, onClick, pagination, paginationData, router, routerCondition, rowNumber = 25, search, selectArray, selectedAllPeople, selectedBtn, setAggregate, setHeaderLoading, slectedTitle, sort, sortData, sortSelectData, thBody, thBodyComponent, thBodyFilter, thHeader, thHeaderComponent, typeLoading = { type: 'table' }, isSortEmpty = true, emptyStateAction = {
|
|
33
|
+
enable: false,
|
|
34
|
+
title: '',
|
|
35
|
+
description: '',
|
|
36
|
+
buttonContent: '',
|
|
37
|
+
buttonType: 'primary',
|
|
38
|
+
onAction: () => console.log('action'),
|
|
39
|
+
}, isCustomHeaderSelected = false, isUnaccentSearchValue = false, disableSpacing = { disable: false, indexStart: 0 }, border = false, isCenterText = false, searchValueData, stickyColumnNumber = 0, getDataTable, stickyColumnNumberRight = 0, isBackgroundReload = false, loaded, isResetPagination = false, tableKey = 'table', searchParams, completeState, completeStateTitle, completeStateDescription, type = 'default', title, }) {
|
|
40
|
+
const checkbox = (0, react_2.useRef)();
|
|
41
|
+
const [checked, setChecked] = (0, react_2.useState)(false);
|
|
42
|
+
const [indeterminate, setIndeterminate] = (0, react_2.useState)(false);
|
|
43
|
+
const [isMainLoading, setIsMainLoading] = (0, react_2.useState)(true);
|
|
44
|
+
const [dataTable, setDataTable] = (0, react_2.useState)([]);
|
|
45
|
+
const [selectedPeople, setSelectedPeople] = (0, react_2.useState)([]);
|
|
46
|
+
const [isSearchLoading, setIsSearchLoading] = (0, react_2.useState)(false);
|
|
47
|
+
const [searchDataResult, setSearchDataResult] = (0, react_2.useState)([]);
|
|
48
|
+
const [pagi, setPagi] = (0, react_2.useState)(0);
|
|
49
|
+
const [numericalOderInPage, setNumericalOderInPage] = (0, react_2.useState)(0);
|
|
50
|
+
const [count, setCount] = (0, react_2.useState)(0);
|
|
51
|
+
const timKiemPlacholder = 'Tìm kiếm';
|
|
52
|
+
const [activeMenu, setActiveMenu] = (0, react_2.useState)(sort === null || sort === void 0 ? void 0 : sort.defaultActive);
|
|
53
|
+
const [isSelectSort, setIsSelectSort] = (0, react_2.useState)(false);
|
|
54
|
+
const [isSort, setIsSort] = (0, react_2.useState)(false);
|
|
55
|
+
const [isSortLoading, setIsSortLoading] = (0, react_2.useState)(false);
|
|
56
|
+
const [numberOfFetchData, setNumberOfFetchData] = (0, react_2.useState)(0);
|
|
57
|
+
const [pageInfo, setPageInfo] = (0, react_2.useState)();
|
|
58
|
+
const [afterRecord, setAfterRecord] = (0, react_2.useState)('');
|
|
59
|
+
const [beforeRecord, setBeforeRecord] = (0, react_2.useState)('');
|
|
60
|
+
const numericalOrderDefault = {
|
|
61
|
+
...numericalOrder,
|
|
62
|
+
sticky: !!stickyColumnNumber,
|
|
63
|
+
};
|
|
64
|
+
// @ts-ignore
|
|
65
|
+
const params = new URLSearchParams(searchParams);
|
|
66
|
+
const [searchValue, setSearchValue] = (0, react_2.useState)(params.get(`search-${tableKey}`) || '');
|
|
67
|
+
const [isSearch, setIsSearch] = (0, react_2.useState)(!!params.get(`search-${tableKey}`));
|
|
68
|
+
const entries = Object.fromEntries(params.entries());
|
|
69
|
+
const [rowQuantity, setRowQuantity] = (0, react_2.useState)((entries === null || entries === void 0 ? void 0 : entries[`row-${tableKey}`]) ? Number(entries === null || entries === void 0 ? void 0 : entries[`row-${tableKey}`]) : rowNumber);
|
|
70
|
+
const [isChangeRowQty, setIsChangeRowQty] = (0, react_2.useState)(false);
|
|
71
|
+
(0, react_2.useEffect)(() => {
|
|
72
|
+
if ((entries === null || entries === void 0 ? void 0 : entries[`row-${tableKey}`]) ? Number(entries === null || entries === void 0 ? void 0 : entries[`row-${tableKey}`]) !== rowQuantity : rowNumber !== rowQuantity) {
|
|
73
|
+
setRowQuantity((entries === null || entries === void 0 ? void 0 : entries[`row-${tableKey}`]) ? Number(entries === null || entries === void 0 ? void 0 : entries[`row-${tableKey}`]) : rowNumber);
|
|
74
|
+
if (!isChangeRowQty) {
|
|
75
|
+
setIsChangeRowQty(true);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}, [entries === null || entries === void 0 ? void 0 : entries[`row-${tableKey}`], rowNumber]);
|
|
79
|
+
const { lefts, refs } = (0, useStickyLeft_1.useStickyLefts)((numericalOrderDefault === null || numericalOrderDefault === void 0 ? void 0 : numericalOrderDefault.sticky) && selectedAllPeople && selectedAllPeople.enable
|
|
80
|
+
? stickyColumnNumber + 2
|
|
81
|
+
: (numericalOrderDefault === null || numericalOrderDefault === void 0 ? void 0 : numericalOrderDefault.sticky) || (selectedAllPeople && selectedAllPeople.enable)
|
|
82
|
+
? stickyColumnNumber + 1
|
|
83
|
+
: stickyColumnNumber, dataTable);
|
|
84
|
+
const { refs: refRights, rights } = (0, useStickyLeft_1.useStickyRights)(stickyColumnNumberRight, dataTable);
|
|
85
|
+
const queryHidePagi = list.query
|
|
86
|
+
? list.query.replace(/first\s*:\s*\d+\s*,?|last\s*:\s*\d+\s*,?|after\s*:\s*\d+\s*,?|before\s*:\s*\d+\s*,?/g, '')
|
|
87
|
+
: '';
|
|
88
|
+
const queryWithNextPage = (after) => list.query
|
|
89
|
+
? list.query
|
|
90
|
+
.replace(/first\s*:\s*\d+/g, `first: ${rowQuantity}`)
|
|
91
|
+
.replace(/\bafter\b\s*:\s*(["']).*?\1/g, after ? `after: "${after}"` : '')
|
|
92
|
+
.replace(/last\s*:\s*\d+/g, '')
|
|
93
|
+
.replace(/\bbefore\b\s*:\s*(["']).*?\1/g, '')
|
|
94
|
+
: '';
|
|
95
|
+
const queryWithPrevPage = (before) => list.query
|
|
96
|
+
? list.query
|
|
97
|
+
.replace(/last\s*:\s*\d+/g, `last: ${rowQuantity}`)
|
|
98
|
+
.replace(/\bbefore\b\s*:\s*(["']).*?\1/g, before ? `before: "${before}"` : '')
|
|
99
|
+
.replace(/first\s*:\s*\d+/g, '')
|
|
100
|
+
.replace(/\bafter\b\s*:\s*(["']).*?\1/g, '')
|
|
101
|
+
: '';
|
|
102
|
+
const dataQuery = (after, before) => {
|
|
103
|
+
switch (true) {
|
|
104
|
+
case hidePagination:
|
|
105
|
+
return queryHidePagi;
|
|
106
|
+
case !!afterRecord:
|
|
107
|
+
return queryWithNextPage(after);
|
|
108
|
+
case !!beforeRecord:
|
|
109
|
+
return queryWithPrevPage(before);
|
|
110
|
+
default:
|
|
111
|
+
return queryWithNextPage('');
|
|
112
|
+
}
|
|
113
|
+
};
|
|
114
|
+
const { enable: enableEmptyStateAction, ...emptyStateActionAttribute } = emptyStateAction;
|
|
115
|
+
const filterQuery = (query, value) => {
|
|
116
|
+
const formatValue = isUnaccentSearchValue ? (0, helpers_1.unaccentValue)(value) : value;
|
|
117
|
+
return query.replace(/%@value%/g, `${formatValue}`);
|
|
118
|
+
};
|
|
119
|
+
const searchQuery = search && search.query ? filterQuery(search.query, searchValue.trim()) : '';
|
|
120
|
+
const searchQueryHidePagi = searchQuery
|
|
121
|
+
.replace(/last\s*:\s*\d+/g, '')
|
|
122
|
+
.replace(/\bbefore\b\s*:\s*(["']).*?\1/g, '')
|
|
123
|
+
.replace(/first\s*:\s*\d+/g, '')
|
|
124
|
+
.replace(/\bafter\b\s*:\s*(["']).*?\1/g, '');
|
|
125
|
+
const searchQueryWithNextPage = (after) => searchQuery
|
|
126
|
+
.replace(/first\s*:\s*\d+/g, `first: ${rowQuantity}`)
|
|
127
|
+
.replace(/\bafter\b\s*:\s*(["']).*?\1/g, after ? `after: "${after}"` : '')
|
|
128
|
+
.replace(/last\s*:\s*\d+/g, '')
|
|
129
|
+
.replace(/\bbefore\b\s*:\s*(["']).*?\1/g, '');
|
|
130
|
+
const searchQueryWithPrevPage = (before) => searchQuery
|
|
131
|
+
.replace(/last\s*:\s*\d+/g, `last: ${rowQuantity}`)
|
|
132
|
+
.replace(/\bbefore\b\s*:\s*(["']).*?\1/g, before ? `before: "${before}"` : '')
|
|
133
|
+
.replace(/first\s*:\s*\d+/g, '')
|
|
134
|
+
.replace(/\bafter\b\s*:\s*(["']).*?\1/g, '');
|
|
135
|
+
const searchDataQuery = (after, before) => {
|
|
136
|
+
switch (true) {
|
|
137
|
+
case hidePagination:
|
|
138
|
+
return searchQueryHidePagi;
|
|
139
|
+
case !!afterRecord:
|
|
140
|
+
return searchQueryWithNextPage(after);
|
|
141
|
+
case !!beforeRecord:
|
|
142
|
+
return searchQueryWithPrevPage(before);
|
|
143
|
+
default:
|
|
144
|
+
return searchQueryWithNextPage('');
|
|
145
|
+
}
|
|
146
|
+
};
|
|
147
|
+
const fetchSearchData = async () => {
|
|
148
|
+
try {
|
|
149
|
+
const variables = (search === null || search === void 0 ? void 0 : search.persistedId)
|
|
150
|
+
? {
|
|
151
|
+
...search === null || search === void 0 ? void 0 : search.variables,
|
|
152
|
+
first: rowQuantity,
|
|
153
|
+
after: afterRecord,
|
|
154
|
+
}
|
|
155
|
+
: {};
|
|
156
|
+
const queryFn = PHXGrpcClientV6_1.PHXClientQueryV6;
|
|
157
|
+
return queryFn({
|
|
158
|
+
query: searchDataQuery(afterRecord, beforeRecord),
|
|
159
|
+
variables,
|
|
160
|
+
persistedId: search === null || search === void 0 ? void 0 : search.persistedId,
|
|
161
|
+
schemaGroup: search === null || search === void 0 ? void 0 : search.schemaGroup,
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
catch (error) {
|
|
165
|
+
console.log(error);
|
|
166
|
+
return;
|
|
167
|
+
}
|
|
168
|
+
};
|
|
169
|
+
const getData = (result) => result.data;
|
|
170
|
+
const bindDataToTable = (dataTable) => {
|
|
171
|
+
// @ts-ignore
|
|
172
|
+
const data = [...dataTable];
|
|
173
|
+
setDataTable(data);
|
|
174
|
+
setSearchDataResult(data);
|
|
175
|
+
};
|
|
176
|
+
const [isChangePageLoading, setIsChangePageLoading] = (0, react_2.useState)(false);
|
|
177
|
+
const [previousValue, setPreviousValue] = (0, react_2.useState)(params.get(`search-${tableKey}`) || '');
|
|
178
|
+
const [currentPage, setCurrentPage] = (0, react_2.useState)(1);
|
|
179
|
+
const handleChangePage = (page) => {
|
|
180
|
+
if (page > 0 && page <= Math.ceil(count / rowQuantity)) {
|
|
181
|
+
setIsChangePageLoading(true);
|
|
182
|
+
setCurrentPage(page);
|
|
183
|
+
setPagi(page - 1);
|
|
184
|
+
paginationData(page - 1);
|
|
185
|
+
}
|
|
186
|
+
};
|
|
187
|
+
(0, react_2.useLayoutEffect)(() => {
|
|
188
|
+
const isIndeterminate = selectedPeople.length > 0 && selectedPeople.length < dataTable.length;
|
|
189
|
+
setChecked(selectedPeople.length === dataTable.length && dataTable.length > 0);
|
|
190
|
+
setIndeterminate(isIndeterminate);
|
|
191
|
+
// @ts-ignore
|
|
192
|
+
if (checkbox.current) {
|
|
193
|
+
checkbox.current.indeterminate = isIndeterminate;
|
|
194
|
+
}
|
|
195
|
+
}, [selectedPeople]);
|
|
196
|
+
function toggleAll() {
|
|
197
|
+
// @ts-ignore
|
|
198
|
+
if (searchValue) {
|
|
199
|
+
setSelectedPeople(checked || indeterminate ? [] : searchDataResult.filter((item) => !(item === null || item === void 0 ? void 0 : item.entered_school)));
|
|
200
|
+
}
|
|
201
|
+
else {
|
|
202
|
+
setSelectedPeople(checked || indeterminate ? [] : dataTable.filter((item) => !(item === null || item === void 0 ? void 0 : item.entered_school)));
|
|
203
|
+
}
|
|
204
|
+
if (onChange) {
|
|
205
|
+
onChange(checked || indeterminate ? [] : dataTable.filter((item) => !(item === null || item === void 0 ? void 0 : item.entered_school)));
|
|
206
|
+
}
|
|
207
|
+
setChecked(!checked && !indeterminate);
|
|
208
|
+
setIndeterminate(false);
|
|
209
|
+
}
|
|
210
|
+
function searchSetValue(value) {
|
|
211
|
+
setSearchValue(value);
|
|
212
|
+
if (searchValueData) {
|
|
213
|
+
const formatValue = isUnaccentSearchValue ? (0, helpers_1.unaccentValue)(value.trim()) : value.trim();
|
|
214
|
+
searchValueData(formatValue);
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
function brSetSelectedPeople(value) {
|
|
218
|
+
const maxSelectedPeople = (selectedAllPeople === null || selectedAllPeople === void 0 ? void 0 : selectedAllPeople.maxSelectedPeople) || 0; // loại bỏ item cũ, chỉ giữ lại số item mới nhất, nếu mặc định là 0 thì giữ nguyên mảng gốc
|
|
219
|
+
setSelectedPeople(value.slice(-maxSelectedPeople));
|
|
220
|
+
}
|
|
221
|
+
function renderInclude(person) {
|
|
222
|
+
// @ts-ignore
|
|
223
|
+
return selectedPeople.includes(person);
|
|
224
|
+
}
|
|
225
|
+
function searchChange(e) {
|
|
226
|
+
const value = e.target.value;
|
|
227
|
+
// Loại bỏ ký tự "\" từ chuỗi
|
|
228
|
+
const replaceSensitiveValue = value.replace(/\\/g, '');
|
|
229
|
+
searchSetValue(replaceSensitiveValue);
|
|
230
|
+
paginationData(0);
|
|
231
|
+
setCurrentPage(1);
|
|
232
|
+
setPagi(0);
|
|
233
|
+
setAfterRecord('');
|
|
234
|
+
setBeforeRecord('');
|
|
235
|
+
if (replaceSensitiveValue !== previousValue) {
|
|
236
|
+
setPreviousValue(replaceSensitiveValue);
|
|
237
|
+
}
|
|
238
|
+
if (replaceSensitiveValue.trim().length === 0) {
|
|
239
|
+
setSearchDataResult(dataTable);
|
|
240
|
+
}
|
|
241
|
+
params.set(`search-${tableKey}`, value);
|
|
242
|
+
params.set(`pagi-${tableKey}`, '1');
|
|
243
|
+
params.delete(`after-${tableKey}`);
|
|
244
|
+
params.delete(`before-${tableKey}`);
|
|
245
|
+
router.push(`?${params + ''}`, { scroll: false });
|
|
246
|
+
}
|
|
247
|
+
const debouncedSearch = (0, useDebounce_1.default)(searchValue, 300);
|
|
248
|
+
const sortOnChange = (item) => {
|
|
249
|
+
const isChangeSort = item.id !== activeMenu;
|
|
250
|
+
setIsSort(true);
|
|
251
|
+
sortData(item.field, item.sortDirection);
|
|
252
|
+
setActiveMenu(item.id);
|
|
253
|
+
if (isChangeSort) {
|
|
254
|
+
setIsSortLoading(true);
|
|
255
|
+
}
|
|
256
|
+
};
|
|
257
|
+
const sortSelectOnchange = (item, columnName) => {
|
|
258
|
+
const isChangeSort = item.id !== activeMenu;
|
|
259
|
+
setActiveMenu(item.id);
|
|
260
|
+
sortSelectData(item, columnName);
|
|
261
|
+
setIsSelectSort(true);
|
|
262
|
+
if (isChangeSort) {
|
|
263
|
+
setIsSortLoading(true);
|
|
264
|
+
}
|
|
265
|
+
};
|
|
266
|
+
const actionClickAll = () => {
|
|
267
|
+
actionName(selectedPeople, true);
|
|
268
|
+
};
|
|
269
|
+
const checkConditionRouter = (rowData) => {
|
|
270
|
+
if (routerCondition.conditionArray.some((item) => item === rowData[routerCondition.conditionName])) {
|
|
271
|
+
return true;
|
|
272
|
+
}
|
|
273
|
+
return false;
|
|
274
|
+
};
|
|
275
|
+
const handleSearch = async () => {
|
|
276
|
+
setIsSearchLoading(true);
|
|
277
|
+
const data = getData(await fetchSearchData());
|
|
278
|
+
const dataTable = search.keyResult;
|
|
279
|
+
setCount(data[dataTable].totalCount);
|
|
280
|
+
if (setAggregate) {
|
|
281
|
+
setAggregate(data[dataTable].totalCount);
|
|
282
|
+
}
|
|
283
|
+
if (previousValue !== searchValue) {
|
|
284
|
+
setCurrentPage(1);
|
|
285
|
+
}
|
|
286
|
+
setSearchDataResult(data[dataTable].nodes);
|
|
287
|
+
setIsSearchLoading(false);
|
|
288
|
+
setIsChangeRowQty(false);
|
|
289
|
+
setIsChangePageLoading(false);
|
|
290
|
+
setNumericalOderInPage(pagi);
|
|
291
|
+
// khi search sẽ reset những row đã select
|
|
292
|
+
// setSelectedPeople([]);
|
|
293
|
+
};
|
|
294
|
+
const paginationWithApplyUrl = () => {
|
|
295
|
+
let currentPagination = 1;
|
|
296
|
+
let afterParams = '';
|
|
297
|
+
let beforeParams = '';
|
|
298
|
+
if (!isResetPagination && !isChangeRowQty) {
|
|
299
|
+
const entries = Object.fromEntries(params.entries());
|
|
300
|
+
currentPagination = (entries === null || entries === void 0 ? void 0 : entries[`pagi-${tableKey}`]) ? Number(entries === null || entries === void 0 ? void 0 : entries[`pagi-${tableKey}`]) || 1 : 1;
|
|
301
|
+
afterParams = (entries === null || entries === void 0 ? void 0 : entries[`after-${tableKey}`]) ? (entries === null || entries === void 0 ? void 0 : entries[`after-${tableKey}`]) || '' : '';
|
|
302
|
+
beforeParams = (entries === null || entries === void 0 ? void 0 : entries[`before-${tableKey}`]) ? (entries === null || entries === void 0 ? void 0 : entries[`before-${tableKey}`]) || '' : '';
|
|
303
|
+
}
|
|
304
|
+
if (!isChangePageLoading && !hidePagination && !isChangeRowQty) {
|
|
305
|
+
setCurrentPage(currentPagination);
|
|
306
|
+
setPagi(currentPagination - 1);
|
|
307
|
+
paginationData(currentPagination - 1);
|
|
308
|
+
setAfterRecord(afterParams);
|
|
309
|
+
setBeforeRecord(beforeParams);
|
|
310
|
+
}
|
|
311
|
+
return { currentPagination, afterParams, beforeParams };
|
|
312
|
+
};
|
|
313
|
+
const queryData = async () => {
|
|
314
|
+
let query = dataQuery(afterRecord, beforeRecord);
|
|
315
|
+
const { afterParams, beforeParams, currentPagination } = paginationWithApplyUrl();
|
|
316
|
+
if (!isChangePageLoading) {
|
|
317
|
+
query = dataQuery(afterParams, beforeParams);
|
|
318
|
+
}
|
|
319
|
+
try {
|
|
320
|
+
const variables = (list === null || list === void 0 ? void 0 : list.persistedId)
|
|
321
|
+
? {
|
|
322
|
+
...list === null || list === void 0 ? void 0 : list.variables,
|
|
323
|
+
first: rowQuantity,
|
|
324
|
+
after: !isChangePageLoading ? afterParams : afterRecord,
|
|
325
|
+
}
|
|
326
|
+
: {};
|
|
327
|
+
const queryFn = PHXGrpcClientV6_1.PHXClientQueryV6;
|
|
328
|
+
const data = getData(searchValue
|
|
329
|
+
? await fetchSearchData()
|
|
330
|
+
: await queryFn({
|
|
331
|
+
query,
|
|
332
|
+
variables,
|
|
333
|
+
persistedId: list === null || list === void 0 ? void 0 : list.persistedId,
|
|
334
|
+
schemaGroup: list === null || list === void 0 ? void 0 : list.schemaGroup,
|
|
335
|
+
}));
|
|
336
|
+
if (!data)
|
|
337
|
+
return;
|
|
338
|
+
if (!isBackgroundReload || (numberOfFetchData === 0 && isBackgroundReload)) {
|
|
339
|
+
setIsMainLoading(true);
|
|
340
|
+
}
|
|
341
|
+
const dataTable = list.keyResult;
|
|
342
|
+
bindDataToTable(data[dataTable].nodes);
|
|
343
|
+
setCount(data[dataTable].totalCount);
|
|
344
|
+
setPageInfo(data[dataTable].pageInfo);
|
|
345
|
+
if (setAggregate) {
|
|
346
|
+
setAggregate(data[dataTable].totalCount);
|
|
347
|
+
}
|
|
348
|
+
setIsMainLoading(false);
|
|
349
|
+
if (setHeaderLoading)
|
|
350
|
+
setHeaderLoading();
|
|
351
|
+
setIsSearchLoading(false);
|
|
352
|
+
setIsChangePageLoading(false);
|
|
353
|
+
setIsChangeRowQty(false);
|
|
354
|
+
setNumberOfFetchData(numberOfFetchData + 1);
|
|
355
|
+
loaded === null || loaded === void 0 ? void 0 : loaded(true);
|
|
356
|
+
if (!isChangePageLoading && !hidePagination && !isChangeRowQty) {
|
|
357
|
+
setNumericalOderInPage(currentPagination - 1);
|
|
358
|
+
}
|
|
359
|
+
else {
|
|
360
|
+
setNumericalOderInPage(pagi);
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
catch (e) {
|
|
364
|
+
console.log(e);
|
|
365
|
+
}
|
|
366
|
+
};
|
|
367
|
+
(0, react_2.useEffect)(() => {
|
|
368
|
+
if (!searchValue || numberOfFetchData === 0 || !(search === null || search === void 0 ? void 0 : search.enable)) {
|
|
369
|
+
queryData();
|
|
370
|
+
}
|
|
371
|
+
else if (debouncedSearch) {
|
|
372
|
+
handleSearch();
|
|
373
|
+
}
|
|
374
|
+
}, [pagi, debouncedSearch]);
|
|
375
|
+
(0, react_2.useEffect)(() => {
|
|
376
|
+
if (!isNaN(Number(pagination))) {
|
|
377
|
+
setCurrentPage(Number(pagination) + 1);
|
|
378
|
+
}
|
|
379
|
+
}, [pagination]);
|
|
380
|
+
(0, react_2.useEffect)(() => {
|
|
381
|
+
if (dataTable) {
|
|
382
|
+
setIsSortLoading(false);
|
|
383
|
+
}
|
|
384
|
+
if (getDataTable && dataTable.length) {
|
|
385
|
+
getDataTable(dataTable);
|
|
386
|
+
}
|
|
387
|
+
}, [dataTable]);
|
|
388
|
+
(0, react_2.useEffect)(() => {
|
|
389
|
+
if ((!isChangePageLoading && filterLoading && !isSortLoading) || isChangeRowQty) {
|
|
390
|
+
queryData();
|
|
391
|
+
if (!isBackgroundReload || (numberOfFetchData === 0 && isBackgroundReload)) {
|
|
392
|
+
setIsMainLoading(true);
|
|
393
|
+
}
|
|
394
|
+
setSelectedPeople([]);
|
|
395
|
+
}
|
|
396
|
+
if (search && search.enable && isChangePageLoading) {
|
|
397
|
+
setIsSearchLoading(true);
|
|
398
|
+
}
|
|
399
|
+
}, [list, afterRecord, beforeRecord, rowQuantity]);
|
|
400
|
+
(0, react_2.useEffect)(() => {
|
|
401
|
+
if (isSortLoading) {
|
|
402
|
+
queryData();
|
|
403
|
+
setSelectedPeople([]);
|
|
404
|
+
}
|
|
405
|
+
}, [sort]);
|
|
406
|
+
const funcItemReadOnly = thBodyComponent ? thBodyComponent === null || thBodyComponent === void 0 ? void 0 : thBodyComponent.readOnly : null;
|
|
407
|
+
const onClickItem = (item) => {
|
|
408
|
+
if (onClick && (!funcItemReadOnly || (funcItemReadOnly && !funcItemReadOnly(item)))) {
|
|
409
|
+
onClick(item);
|
|
410
|
+
}
|
|
411
|
+
};
|
|
412
|
+
return (react_2.default.createElement(react_2.default.Fragment, null,
|
|
413
|
+
isMainLoading ? (react_2.default.createElement(Skeleton_1.PHXSkeleton, { filterQty: typeLoading === null || typeLoading === void 0 ? void 0 : typeLoading.filterQty, reportQty: typeLoading === null || typeLoading === void 0 ? void 0 : typeLoading.reportQty, type: typeLoading.type })) : (react_2.default.createElement(react_2.default.Fragment, null,
|
|
414
|
+
title && react_2.default.createElement("div", { className: 'mb-4 text-sm font-semibold leading-5 text-gray-900' }, title),
|
|
415
|
+
react_2.default.createElement("div", { className: 'rounded-lg bg-white shadow-[0rem_.3125rem_.3125rem_-.15625rem_rgba(0,0,0,.03),0rem_.1875rem_.1875rem_-.09375rem_rgba(0,0,0,.02),0rem_.125rem_.125rem_-.0625rem_rgba(0,0,0,.02),0rem_.0625rem_.0625rem_-.03125rem_rgba(0,0,0,.03),0rem_.03125rem_.03125rem_0rem_rgba(0,0,0,.04),0rem_0rem_0rem_.0625rem_rgba(0,0,0,.06)] ring-1 ring-gray-200' },
|
|
416
|
+
react_2.default.createElement("div", { className: 'flex flex-col' },
|
|
417
|
+
(dataTable.length > 0 ||
|
|
418
|
+
(dataTable.length === 0 && isSearch) ||
|
|
419
|
+
(dataTable.length === 0 && isSelectSort) ||
|
|
420
|
+
(dataTable.length === 0 && isSort) ||
|
|
421
|
+
(dataTable.length === 0 && (sort === null || sort === void 0 ? void 0 : sort.enable))) && (react_2.default.createElement("div", { className: (0, types_1.classNames)(isSortEmpty && dataTable.length === 0 && !isSearch ? 'hidden' : 'min-w-full align-middle', (sort && sort.enable) || (search && search.enable) ? 'min-h-11' : '') },
|
|
422
|
+
react_2.default.createElement(react_1.Transition, { as: react_2.Fragment, enter: 'transition-[max-height,opacity] duration-300 ease-out overflow-hidden', enterFrom: 'max-h-0 opacity-0', enterTo: 'max-h-20 opacity-100', show: isSearch },
|
|
423
|
+
react_2.default.createElement("div", { className: (0, types_1.classNames)('flex flex-row items-center justify-center rounded-tl-lg rounded-tr-lg px-3 py-1 pl-5 ring-opacity-5', !sort || !sort.enable ? '' : '', searchDataResult.length === 0 && 'border-b', type === 'in-card' && 'bg-gray-50') },
|
|
424
|
+
react_2.default.createElement("div", { className: 'relative mr-2 w-11/12' },
|
|
425
|
+
react_2.default.createElement("input", { autoFocus: true, className: 'block w-full rounded-lg border-transparent bg-white py-1 text-xs hover:border hover:border-gray-500 focus:border-indigo-800 focus:bg-white focus:ring-indigo-800', id: 'search-value', name: 'search-value', onInput: searchChange, placeholder: timKiemPlacholder, type: 'text', value: searchValue })),
|
|
426
|
+
react_2.default.createElement("div", { className: 'flex w-14 justify-center pt-1' }, isSearchLoading ? react_2.default.createElement(Loading_1.PHXSpinner, null) : null),
|
|
427
|
+
react_2.default.createElement("div", null,
|
|
428
|
+
react_2.default.createElement("button", { className: 'inline-flex items-center rounded-lg border-gray-300 px-2 py-1 text-xs font-medium text-gray-700 hover:bg-gray-200', onClick: () => {
|
|
429
|
+
setIsSearch(false);
|
|
430
|
+
searchSetValue('');
|
|
431
|
+
params.delete(`search-${tableKey}`);
|
|
432
|
+
router.push(`?${params + ''}`, { scroll: false });
|
|
433
|
+
}, type: 'button' }, "Cancel")))),
|
|
434
|
+
react_2.default.createElement("div", { className: (0, types_1.classNames)((sort && sort.enable) || (search && search.enable)
|
|
435
|
+
? `flex flex-row items-center rounded-tl-lg rounded-tr-lg px-3 pl-8 ${sort && sort.enable
|
|
436
|
+
? `sm:justify-between ${dataTable.length === 0 || searchDataResult.length === 0 ? 'border-b' : ''}`
|
|
437
|
+
: 'sm:justify-end'} ${isSearch ? 'border-none py-1' : 'mb-2 py-1.5'}`
|
|
438
|
+
: '', isSearch && (!sort || !sort.enable) ? 'pointer-events-none opacity-0' : 'opacity-100', type === 'in-card' && 'bg-gray-50') },
|
|
439
|
+
sort && sort.enable ? (react_2.default.createElement(react_2.default.Fragment, null,
|
|
440
|
+
react_2.default.createElement(sort_1.default, { activeMenu: activeMenu, className: 'w-11/12', isSearch: isSearch, onChange: sortOnChange, onChangeSelect: sortSelectOnchange, selectArray: selectArray, sortList: sort.sortList }),
|
|
441
|
+
react_2.default.createElement("div", { className: 'flex justify-center lg:w-14' }, isSortLoading ? react_2.default.createElement(Loading_1.PHXSpinner, null) : null))) : null,
|
|
442
|
+
!isSearch && (search === null || search === void 0 ? void 0 : search.enable) && (react_2.default.createElement("div", { className: 'mr-3 flex justify-center' }, isChangePageLoading ? react_2.default.createElement(Loading_1.PHXSpinner, null) : null)),
|
|
443
|
+
search && search.enable && (react_2.default.createElement("div", { className: 'rounded-lg bg-white' }, !isSearch && (react_2.default.createElement("button", { className: 'ml-1 flex rounded-lg px-2 py-1 text-xs font-normal text-gray-900 ring-1 ring-inset ring-gray-300 hover:bg-gray-50 active:bg-gray-200 active:pb-[0.2rem] active:pt-[0.3rem] active:shadow-[0rem_0.125rem_0.1rem_0rem_#0004_inset] sm:ml-0', onClick: () => setIsSearch(true), type: 'button' },
|
|
444
|
+
react_2.default.createElement(solid_1.MagnifyingGlassIcon, { className: 'h-4 w-4' })))))))),
|
|
445
|
+
dataTable.length > 0 || isSearch ? (react_2.default.createElement("div", { className: 'relative' }, searchDataResult.length > 0 && !isMainLoading ? (react_2.default.createElement("div", { className: '-my-2 overflow-x-auto' },
|
|
446
|
+
react_2.default.createElement("div", { className: (0, types_1.classNames)('min-w-full pb-2 align-middle ring-black ring-opacity-5', (search && search.enable) || (sort && sort.enable) ? '' : 'pt-0.5') },
|
|
447
|
+
react_2.default.createElement("div", { className: (0, types_1.classNames)('relative overflow-auto', (search && search.enable) || (sort && sort.enable)
|
|
448
|
+
? 'ring-1 ring-black ring-opacity-5'
|
|
449
|
+
: 'mt-1.5') },
|
|
450
|
+
react_2.default.createElement(react_2.default.Fragment, null, selectedAllPeople && selectedAllPeople.enable ? (react_2.default.createElement(react_2.default.Fragment, null, selectedPeople.length > 0 && selectedAllPeople.title && (react_2.default.createElement("div", { className: 'absolute left-12 top-4 flex h-fit items-center space-x-3 bg-gray-50 sm:left-16' },
|
|
451
|
+
react_2.default.createElement(Button_1.PHXButton, { onClick: actionClickAll, secondary: true, size: 'micro' }, selectedAllPeople.title))))) : null),
|
|
452
|
+
react_2.default.createElement("table", { className: (0, types_1.classNames)('min-w-full divide-y divide-gray-300', fixedTableLayout ? 'table-fixed' : '', (search && search.enable) || (sort && sort.enable) ? 'border-t' : '') },
|
|
453
|
+
thHeaderComponent ? (react_2.default.createElement(react_2.default.Fragment, null, selectedAllPeople && selectedAllPeople.enable && isCustomHeaderSelected ? (react_2.default.createElement(react_2.default.Fragment, null, thHeaderComponent(react_2.default.createElement("th", { className: 'relative w-12 rounded-lg px-6 py-2.5 sm:w-16 sm:px-8', scope: 'col' },
|
|
454
|
+
react_2.default.createElement("input", { ref: checkbox, checked: checked, className: 'absolute left-4 top-1/2 -mt-2 block h-4 w-4 rounded border-[0.5px] border-gray-500 text-indigo-800 hover:cursor-pointer hover:bg-gray-100 focus:ring-transparent sm:left-6', onChange: toggleAll, type: 'checkbox' }))))) : (react_2.default.createElement(react_2.default.Fragment, null, thHeaderComponent)))) : (react_2.default.createElement("thead", null,
|
|
455
|
+
react_2.default.createElement(HeaderTable_1.default, { border: border, checkbox: checkbox, checked: checked, disableSpacing: disableSpacing, isCenterText: isCenterText, numericalOrder: numericalOrderDefault, selectedAllPeople: selectedAllPeople, thHeader: thHeader, toggleAll: toggleAll, lefts: lefts, refs: refs, stickyColumnNumber: stickyColumnNumber, selectedPeople: selectedPeople, stickyColumnNumberRight: stickyColumnNumberRight, rights: rights, refRights: refRights, search: search, tableKey: tableKey }))),
|
|
456
|
+
react_2.default.createElement("tbody", { className: 'divide-y divide-gray-200' }, searchValue === ''
|
|
457
|
+
? dataTable.map((item, index) => (
|
|
458
|
+
// @ts-ignore
|
|
459
|
+
react_2.default.createElement("tr", { key: item.rowId, className: (0, types_1.classNames)(clickRow && !funcItemReadOnly ? 'hover:cursor-pointer hover:bg-gray-50' : '', renderInclude(item) && !(item === null || item === void 0 ? void 0 : item.entered_school) && (selectedAllPeople === null || selectedAllPeople === void 0 ? void 0 : selectedAllPeople.enable)
|
|
460
|
+
? 'bg-gray-50'
|
|
461
|
+
: '', funcItemReadOnly && clickType === 'custom'
|
|
462
|
+
? funcItemReadOnly(item)
|
|
463
|
+
? ''
|
|
464
|
+
: 'hover:cursor-pointer hover:bg-gray-50'
|
|
465
|
+
: ''), onClick: () => {
|
|
466
|
+
if (clickRow) {
|
|
467
|
+
if (routerCondition) {
|
|
468
|
+
// eslint-disable-next-line no-unused-expressions
|
|
469
|
+
checkConditionRouter(item)
|
|
470
|
+
? router.push(`${routerCondition.link}${item.rowId}`)
|
|
471
|
+
: router.push(`${editActionLink}${item.rowId}`);
|
|
472
|
+
}
|
|
473
|
+
else if (clickType === 'edit') {
|
|
474
|
+
router.push(`${editActionLink}${item.rowId}`);
|
|
475
|
+
}
|
|
476
|
+
else {
|
|
477
|
+
// @ts-ignore
|
|
478
|
+
onClickItem(item);
|
|
479
|
+
}
|
|
480
|
+
}
|
|
481
|
+
} }, thBody.map((bodyItem, bodyIndex) => (react_2.default.createElement(RowTable_1.RowTable, { key: bodyIndex, bodyIndex: bodyIndex, border: border, brSetSelectedPeople: brSetSelectedPeople, directDetail: directDetail, disableSpacing: disableSpacing, editActionLink: editActionLink, isCenterText: isCenterText, itemBody: item, numericalOrder: {
|
|
482
|
+
...numericalOrderDefault,
|
|
483
|
+
order: numericalOderInPage * rowQuantity + index + 1,
|
|
484
|
+
}, onChange: onChange, selectedAllPeople: selectedAllPeople, selectedPeople: selectedPeople, thBody: thBody, thBodyComponent: thBodyComponent, thBodyFilter: thBodyFilter, lefts: lefts, stickyColumnNumber: stickyColumnNumber, stickyColumnNumberRight: stickyColumnNumberRight, rights: rights, hidePagination: hidePagination, dataTableAggregate: dataTable.length, itemIndex: index, tableKey: tableKey }))))))
|
|
485
|
+
: searchDataResult.map((item, index) => (
|
|
486
|
+
// @ts-ignore
|
|
487
|
+
react_2.default.createElement("tr", { key: item.rowId, className: (0, types_1.classNames)(clickRow && !funcItemReadOnly ? 'hover:cursor-pointer hover:bg-gray-50' : '', renderInclude(item) && !(item === null || item === void 0 ? void 0 : item.entered_school) && (selectedAllPeople === null || selectedAllPeople === void 0 ? void 0 : selectedAllPeople.enable)
|
|
488
|
+
? 'bg-gray-50'
|
|
489
|
+
: '', funcItemReadOnly && clickType === 'custom'
|
|
490
|
+
? funcItemReadOnly(item)
|
|
491
|
+
? ''
|
|
492
|
+
: 'hover:cursor-pointer hover:bg-gray-50'
|
|
493
|
+
: '', hidePagination && index === searchDataResult.length - 1 && 'rounded-bl-lg'), onClick: () => {
|
|
494
|
+
if (clickRow) {
|
|
495
|
+
if (routerCondition) {
|
|
496
|
+
// eslint-disable-next-line no-unused-expressions
|
|
497
|
+
checkConditionRouter(item)
|
|
498
|
+
? router.push(`${routerCondition.link}${item.rowId}`)
|
|
499
|
+
: router.push(`${editActionLink}${item.rowId}`);
|
|
500
|
+
}
|
|
501
|
+
else if (clickType === 'edit') {
|
|
502
|
+
router.push(`${editActionLink}${item.rowId}`);
|
|
503
|
+
}
|
|
504
|
+
else {
|
|
505
|
+
// @ts-ignore
|
|
506
|
+
onClickItem(item);
|
|
507
|
+
}
|
|
508
|
+
}
|
|
509
|
+
} }, thBody.map((bodyItem, bodyIndex) => (react_2.default.createElement(RowTable_1.RowTable, { key: bodyIndex, bodyIndex: bodyIndex, border: border, brSetSelectedPeople: brSetSelectedPeople, directDetail: directDetail, disableSpacing: disableSpacing, editActionLink: editActionLink, isCenterText: isCenterText, itemBody: item, numericalOrder: {
|
|
510
|
+
...numericalOrderDefault,
|
|
511
|
+
order: numericalOderInPage * rowQuantity + index + 1,
|
|
512
|
+
}, onChange: onChange, selectedAllPeople: selectedAllPeople, selectedPeople: selectedPeople, thBody: thBody, thBodyComponent: thBodyComponent, thBodyFilter: thBodyFilter, lefts: lefts, stickyColumnNumber: stickyColumnNumber, stickyColumnNumberRight: stickyColumnNumberRight, rights: rights, hidePagination: hidePagination, dataTableAggregate: searchDataResult.length, itemIndex: index, tableKey: tableKey })))))))))))) : (react_2.default.createElement(EmptySearch_1.PHXEmptySearch, null)))) : (dataTable.length === 0 && isSearch) ||
|
|
513
|
+
(dataTable.length === 0 && isSelectSort) ||
|
|
514
|
+
(dataTable.length === 0 && isSort) ||
|
|
515
|
+
(dataTable.length === 0 && (sort === null || sort === void 0 ? void 0 : sort.enable)) ? (react_2.default.createElement(react_2.default.Fragment, null, enableEmptyStateAction ? react_2.default.createElement(EmptyStateAction_1.PHXEmptyStateAction, { ...emptyStateActionAttribute }) : react_2.default.createElement(EmptyRecord_1.PHXEmptyRecord, null))) : (react_2.default.createElement(react_2.default.Fragment, null, enableEmptyStateAction ? (react_2.default.createElement(EmptyStateAction_1.PHXEmptyStateAction, { ...emptyStateActionAttribute })) : completeState ? (react_2.default.createElement(CompleteState_1.PHXCompleteState, { title: completeStateTitle || 'Hoàn tất duyệt đơn!', description: completeStateDescription || 'Tất cả đơn đăng ký đã được duyệt.' })) : (react_2.default.createElement(EmptyRecord_1.PHXEmptyRecord, null))))),
|
|
516
|
+
dataTable.length > 0 && !hidePagination && (react_2.default.createElement("div", { className: 'flex items-center justify-between rounded-lg rounded-tl-none rounded-tr-none border-t border-gray-200 bg-[#F9FAFB] py-2 pl-7 pr-2' },
|
|
517
|
+
react_2.default.createElement(PaginaitonSelectedV5_1.default, { rowQuantity: rowQuantity, setIsChangeRowQty: setIsChangeRowQty, setRowQuantity: setRowQuantity, router: router, searchParams: params, tableKey: tableKey, setCurrentPage: setCurrentPage, setPagi: setPagi, paginationData: paginationData, setAfterRecord: setAfterRecord, setBeforeRecord: setBeforeRecord }),
|
|
518
|
+
react_2.default.createElement(PaginationV5_1.default, { count: count, currentPage: currentPage, handleChangePage: handleChangePage, pagination: pagination, router: router, rowQuantity: rowQuantity, totalPages: Math.ceil(count / rowQuantity), searchParams: params, tableKey: tableKey, setAfterRecord: setAfterRecord, setBeforeRecord: setBeforeRecord, pageInfo: pageInfo })))))),
|
|
519
|
+
(selectedAllPeople === null || selectedAllPeople === void 0 ? void 0 : selectedAllPeople.enable) && !(selectedAllPeople === null || selectedAllPeople === void 0 ? void 0 : selectedAllPeople.hideSelectedAction) && (react_2.default.createElement(SelectedAction_1.default, { selectedBtn: selectedBtn, selectedPeople: selectedPeople, slectedTitle: slectedTitle, toggleAll: toggleAll }))));
|
|
520
|
+
}
|
|
521
|
+
//# sourceMappingURL=TableV6.js.map
|