@addev-be/ui 0.1.24 → 0.1.25
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/package.json +1 -1
- package/src/components/data/AdvancedRequestDataGrid/helpers/advancedRequests.ts +7 -9
- package/src/components/data/AdvancedRequestDataGrid/helpers/columns.tsx +52 -12
- package/src/components/data/AdvancedRequestDataGrid/helpers/index.ts +0 -1
- package/src/components/data/AdvancedRequestDataGrid/index.tsx +67 -25
- package/src/components/data/AdvancedRequestDataGrid/types.ts +4 -1
- package/src/components/data/DataGrid/DataGridFilterMenu/hooks.tsx +1 -1
- package/src/components/data/DataGrid/DataGridHeader.tsx +5 -3
- package/src/components/data/DataGrid/hooks/useDataGrid.tsx +2 -2
- package/src/components/data/DataGrid/hooks/useDataGridCopy.ts +1 -1
- package/src/components/data/DataGrid/types.ts +2 -4
- package/src/components/data/AdvancedRequestDataGrid/helpers/filters.ts +0 -19
package/package.json
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
import {
|
|
4
4
|
AdvancedRequestDTO,
|
|
5
5
|
ConditionDTO,
|
|
6
|
+
FieldDTO,
|
|
6
7
|
OrderByDTO,
|
|
7
8
|
} from '../../../../services/advancedRequests';
|
|
8
9
|
import {
|
|
@@ -10,7 +11,6 @@ import {
|
|
|
10
11
|
AdvancedRequestDataGridFilters,
|
|
11
12
|
} from '../types';
|
|
12
13
|
|
|
13
|
-
import { DataGridColumns } from '../../DataGrid/types';
|
|
14
14
|
import _ from 'lodash';
|
|
15
15
|
|
|
16
16
|
export const getAdvancedRequestDto = <R>({
|
|
@@ -21,21 +21,19 @@ export const getAdvancedRequestDto = <R>({
|
|
|
21
21
|
start = 0,
|
|
22
22
|
length = 100,
|
|
23
23
|
getTotal = false,
|
|
24
|
-
|
|
24
|
+
idField = { fieldName: 'Id' },
|
|
25
25
|
}: {
|
|
26
26
|
type: string;
|
|
27
|
-
columns:
|
|
27
|
+
columns: AdvancedRequestDataGridColumns<R>;
|
|
28
28
|
conditions?: ConditionDTO[];
|
|
29
29
|
orderBy?: OrderByDTO[];
|
|
30
30
|
start?: number;
|
|
31
31
|
length?: number;
|
|
32
32
|
getTotal?: boolean;
|
|
33
|
-
|
|
33
|
+
idField?: FieldDTO | null;
|
|
34
34
|
}): AdvancedRequestDTO => ({
|
|
35
35
|
fields: [
|
|
36
|
-
...(
|
|
37
|
-
? []
|
|
38
|
-
: [{ fieldName: 'Id' }]),
|
|
36
|
+
...(idField === null ? [] : [idField]),
|
|
39
37
|
...Object.keys(columns).map((key) =>
|
|
40
38
|
columns[key].field
|
|
41
39
|
? {
|
|
@@ -67,10 +65,10 @@ export const getAdvancedRequestDto = <R>({
|
|
|
67
65
|
|
|
68
66
|
export const convertFiltersToConditions = <R>(
|
|
69
67
|
filters: AdvancedRequestDataGridFilters,
|
|
70
|
-
columns:
|
|
68
|
+
columns: AdvancedRequestDataGridColumns<R>
|
|
71
69
|
): Record<string, ConditionDTO> =>
|
|
72
70
|
_.mapValues(filters, (filter, columnKey) => ({
|
|
73
|
-
field:
|
|
71
|
+
field: columns[columnKey].filterField ??
|
|
74
72
|
columns[columnKey].field ?? {
|
|
75
73
|
fieldName: columnKey,
|
|
76
74
|
},
|
|
@@ -4,14 +4,15 @@ import {
|
|
|
4
4
|
AdvancedRequestDataGridColumn,
|
|
5
5
|
AdvancedRequestDataGridColumns,
|
|
6
6
|
} from '../types';
|
|
7
|
-
import { advancedNumberFilter, advancedTextFilter } from './filters';
|
|
8
7
|
import {
|
|
9
8
|
formatMoney,
|
|
10
9
|
formatNumber,
|
|
11
10
|
formatPercentage,
|
|
12
11
|
} from '../../../../helpers/numbers';
|
|
12
|
+
import { numberFilter, textFilter } from '../../DataGrid/helpers';
|
|
13
13
|
|
|
14
14
|
import { DataGridSettings } from '../../DataGrid/types';
|
|
15
|
+
import { FieldDTO } from '../../../../services/advancedRequests';
|
|
15
16
|
import _ from 'lodash';
|
|
16
17
|
import moment from 'moment';
|
|
17
18
|
|
|
@@ -42,7 +43,7 @@ export const advancedTextColumn = <R extends Record<string, any>>(
|
|
|
42
43
|
render: (row) => row[key] ?? '',
|
|
43
44
|
getter: (row) => row[key] ?? '',
|
|
44
45
|
sortGetter: (row) => row[key] ?? '',
|
|
45
|
-
filter:
|
|
46
|
+
filter: { ...textFilter(key), getter: (value) => value[key] ?? '' },
|
|
46
47
|
...options,
|
|
47
48
|
},
|
|
48
49
|
});
|
|
@@ -70,7 +71,12 @@ export const advancedComposedColumn = <R extends Record<string, any>>(
|
|
|
70
71
|
render: (row) => row[key] ?? '',
|
|
71
72
|
getter: (row) => row[key] ?? '',
|
|
72
73
|
sortGetter: (row) => row[key] ?? '',
|
|
73
|
-
filter:
|
|
74
|
+
filter: {
|
|
75
|
+
...textFilter(fields[0]),
|
|
76
|
+
getter: (value) => value[fields[0]] ?? 0,
|
|
77
|
+
},
|
|
78
|
+
filterField: { fieldName: fields[0] },
|
|
79
|
+
sortField: { fieldName: fields[0] },
|
|
74
80
|
...options,
|
|
75
81
|
},
|
|
76
82
|
});
|
|
@@ -85,7 +91,7 @@ export const advancedMailColumn = <R extends Record<string, any>>(
|
|
|
85
91
|
render: (row) => <a href={`mailto:${row[key]}`}>{row[key] ?? ''}</a>,
|
|
86
92
|
getter: (row) => row[key] ?? '',
|
|
87
93
|
sortGetter: (row) => row[key] ?? '',
|
|
88
|
-
filter:
|
|
94
|
+
filter: { ...textFilter(key), getter: (value) => value[key] ?? '' },
|
|
89
95
|
...options,
|
|
90
96
|
},
|
|
91
97
|
});
|
|
@@ -100,7 +106,7 @@ export const advancedPhoneColumn = <R extends Record<string, any>>(
|
|
|
100
106
|
render: (row) => <a href={`tel:${row[key]}`}>{row[key] ?? ''}</a>,
|
|
101
107
|
getter: (row) => row[key] ?? '',
|
|
102
108
|
sortGetter: (row) => row[key] ?? '',
|
|
103
|
-
filter:
|
|
109
|
+
filter: { ...textFilter(key), getter: (value) => value[key] ?? '' },
|
|
104
110
|
...options,
|
|
105
111
|
},
|
|
106
112
|
});
|
|
@@ -115,7 +121,7 @@ export const advancedDateColumn = <R extends Record<string, any>>(
|
|
|
115
121
|
render: (row) => moment(row[key]).format('DD/MM/YYYY') ?? '',
|
|
116
122
|
getter: (row) => row[key] ?? '',
|
|
117
123
|
sortGetter: (row) => row[key] ?? '',
|
|
118
|
-
filter:
|
|
124
|
+
filter: { ...textFilter(key), getter: (value) => value[key] ?? '' },
|
|
119
125
|
...options,
|
|
120
126
|
},
|
|
121
127
|
});
|
|
@@ -130,7 +136,7 @@ export const advancedMonthColumn = <R extends Record<string, any>>(
|
|
|
130
136
|
render: (row) => (row[key] ? `${row[key]} mois ` : ''),
|
|
131
137
|
getter: (row) => row[key] ?? '',
|
|
132
138
|
sortGetter: (row) => row[key] ?? '',
|
|
133
|
-
filter:
|
|
139
|
+
filter: { ...textFilter(key), getter: (value) => value[key] ?? '' },
|
|
134
140
|
...options,
|
|
135
141
|
},
|
|
136
142
|
});
|
|
@@ -147,7 +153,7 @@ export const advancedNumberColumn = <R extends Record<string, any>>(
|
|
|
147
153
|
excelFormatter: () => '#',
|
|
148
154
|
getter: (row) => row[key] ?? '',
|
|
149
155
|
sortGetter: (row) => row[key] ?? '',
|
|
150
|
-
filter:
|
|
156
|
+
filter: { ...numberFilter(key), getter: (value) => value[key] ?? 0 },
|
|
151
157
|
...options,
|
|
152
158
|
},
|
|
153
159
|
});
|
|
@@ -164,7 +170,7 @@ export const advancedMoneyColumn = <R extends Record<string, any>>(
|
|
|
164
170
|
excelFormatter: () => '#0.00',
|
|
165
171
|
getter: (row) => row[key] ?? '',
|
|
166
172
|
sortGetter: (row) => row[key] ?? '',
|
|
167
|
-
filter:
|
|
173
|
+
filter: { ...numberFilter(key), getter: (value) => value[key] ?? 0 },
|
|
168
174
|
...options,
|
|
169
175
|
},
|
|
170
176
|
});
|
|
@@ -180,7 +186,7 @@ export const advancedPercentageColumn = <R extends Record<string, any>>(
|
|
|
180
186
|
excelFormatter: () => '#0.00',
|
|
181
187
|
getter: (row) => row[key] ?? '',
|
|
182
188
|
sortGetter: (row) => row[key] ?? '',
|
|
183
|
-
filter:
|
|
189
|
+
filter: { ...numberFilter(key), getter: (value) => value[key] ?? 0 },
|
|
184
190
|
...options,
|
|
185
191
|
},
|
|
186
192
|
});
|
|
@@ -200,7 +206,7 @@ export const advancedCheckboxColumn = <R extends Record<string, any>>(
|
|
|
200
206
|
),
|
|
201
207
|
getter: (row) => row[key] ?? '',
|
|
202
208
|
sortGetter: (row) => row[key] ?? '',
|
|
203
|
-
filter:
|
|
209
|
+
filter: { ...numberFilter(key), getter: (value) => value[key] ?? 0 },
|
|
204
210
|
...options,
|
|
205
211
|
},
|
|
206
212
|
});
|
|
@@ -217,7 +223,41 @@ export const advancedColorColumn = <R extends Record<string, any>>(
|
|
|
217
223
|
),
|
|
218
224
|
getter: (row) => row[key] ?? '',
|
|
219
225
|
sortGetter: (row) => row[key] ?? '',
|
|
220
|
-
filter:
|
|
226
|
+
filter: { ...textFilter(key), getter: (value) => value[key] ?? '' },
|
|
221
227
|
...options,
|
|
222
228
|
},
|
|
223
229
|
});
|
|
230
|
+
|
|
231
|
+
export const getColumnField = <R,>(
|
|
232
|
+
columns: AdvancedRequestDataGridColumns<R>,
|
|
233
|
+
columnKey: string
|
|
234
|
+
): FieldDTO => {
|
|
235
|
+
return columns[columnKey].field
|
|
236
|
+
? {
|
|
237
|
+
fieldName: columns[columnKey].field?.fieldName ?? columnKey,
|
|
238
|
+
fieldAlias: columnKey,
|
|
239
|
+
}
|
|
240
|
+
: {
|
|
241
|
+
fieldName: columnKey,
|
|
242
|
+
fieldAlias: columnKey,
|
|
243
|
+
};
|
|
244
|
+
};
|
|
245
|
+
export const getColumnSortField = <R,>(
|
|
246
|
+
columns: AdvancedRequestDataGridColumns<R>,
|
|
247
|
+
columnKey: string
|
|
248
|
+
): FieldDTO => {
|
|
249
|
+
return columns[columnKey].sortField
|
|
250
|
+
? {
|
|
251
|
+
fieldName: columns[columnKey].sortField?.fieldName ?? columnKey,
|
|
252
|
+
fieldAlias: columnKey,
|
|
253
|
+
}
|
|
254
|
+
: {
|
|
255
|
+
fieldName: columnKey,
|
|
256
|
+
fieldAlias: columnKey,
|
|
257
|
+
};
|
|
258
|
+
};
|
|
259
|
+
export const getFirstColumnField = <R,>(
|
|
260
|
+
columns: AdvancedRequestDataGridColumns<R>
|
|
261
|
+
): FieldDTO => {
|
|
262
|
+
return getColumnField(columns, Object.keys(columns)[0]);
|
|
263
|
+
};
|
|
@@ -13,6 +13,8 @@ import _, { debounce } from 'lodash';
|
|
|
13
13
|
import {
|
|
14
14
|
convertFiltersToConditions,
|
|
15
15
|
getAdvancedRequestDto,
|
|
16
|
+
getColumnSortField,
|
|
17
|
+
getFirstColumnField,
|
|
16
18
|
parseJsonObjectFields,
|
|
17
19
|
} from './helpers';
|
|
18
20
|
import { useCallback, useEffect, useRef, useState } from 'react';
|
|
@@ -20,33 +22,18 @@ import { useCallback, useEffect, useRef, useState } from 'react';
|
|
|
20
22
|
import { AdvancedRequestDataGridProps } from './types';
|
|
21
23
|
import { DataGrid } from '../DataGrid';
|
|
22
24
|
|
|
23
|
-
const
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
? {
|
|
29
|
-
fieldName: columns[columnKey].field?.fieldName ?? columnKey,
|
|
30
|
-
fieldAlias: columnKey,
|
|
31
|
-
}
|
|
32
|
-
: {
|
|
33
|
-
fieldName: columnKey,
|
|
34
|
-
fieldAlias: columnKey,
|
|
35
|
-
};
|
|
36
|
-
};
|
|
37
|
-
const getFirstColumnField = <R,>(columns: DataGridColumns<R>): FieldDTO => {
|
|
38
|
-
return getColumnField(columns, Object.keys(columns)[0]);
|
|
39
|
-
};
|
|
40
|
-
|
|
41
|
-
export const AdvancedRequestDataGrid = <R,>(
|
|
42
|
-
props: AdvancedRequestDataGridProps<R>
|
|
43
|
-
) => {
|
|
25
|
+
export const AdvancedRequestDataGrid = <R,>({
|
|
26
|
+
onSelectionChange: onSelectionChangeFromProps,
|
|
27
|
+
idField,
|
|
28
|
+
...props
|
|
29
|
+
}: AdvancedRequestDataGridProps<R>) => {
|
|
44
30
|
const currentRows = useRef<R[]>([]);
|
|
45
31
|
const [rows, setRows] = useState<R[]>([]);
|
|
46
32
|
const [start, setStart] = useState(0);
|
|
47
33
|
const [length, setLength] = useState(50);
|
|
48
34
|
const [total, setTotal] = useState(-1);
|
|
49
35
|
const advancedRequest = useAdvancedRequestHandler<R>();
|
|
36
|
+
const idAdvancedRequest = useAdvancedRequestHandler<{ Id: string }>();
|
|
50
37
|
|
|
51
38
|
const [conditions, setConditions] = useState<Record<string, ConditionDTO>>(
|
|
52
39
|
{}
|
|
@@ -83,7 +70,7 @@ export const AdvancedRequestDataGrid = <R,>(
|
|
|
83
70
|
Object.entries(sorts).map(
|
|
84
71
|
([columnKey, direction]) =>
|
|
85
72
|
({
|
|
86
|
-
field:
|
|
73
|
+
field: getColumnSortField(props.columns, columnKey),
|
|
87
74
|
direction: direction.toUpperCase(),
|
|
88
75
|
} as OrderByDTO)
|
|
89
76
|
)
|
|
@@ -100,6 +87,7 @@ export const AdvancedRequestDataGrid = <R,>(
|
|
|
100
87
|
orderBy: OrderByDTO[],
|
|
101
88
|
start: number,
|
|
102
89
|
length: number,
|
|
90
|
+
idField: FieldDTO | null | undefined,
|
|
103
91
|
getTotal = false
|
|
104
92
|
) => {
|
|
105
93
|
advancedRequest(
|
|
@@ -111,6 +99,7 @@ export const AdvancedRequestDataGrid = <R,>(
|
|
|
111
99
|
start,
|
|
112
100
|
length,
|
|
113
101
|
getTotal,
|
|
102
|
+
idField,
|
|
114
103
|
})
|
|
115
104
|
).then((response) => {
|
|
116
105
|
if (getTotal) {
|
|
@@ -134,7 +123,7 @@ export const AdvancedRequestDataGrid = <R,>(
|
|
|
134
123
|
(columnKey: string) => {
|
|
135
124
|
return advancedRequest({
|
|
136
125
|
fields: [
|
|
137
|
-
props.columns[columnKey].
|
|
126
|
+
props.columns[columnKey].filterField ??
|
|
138
127
|
props.columns[columnKey].field ?? {
|
|
139
128
|
fieldName: columnKey,
|
|
140
129
|
},
|
|
@@ -157,7 +146,7 @@ export const AdvancedRequestDataGrid = <R,>(
|
|
|
157
146
|
),
|
|
158
147
|
orderBy: [
|
|
159
148
|
{
|
|
160
|
-
field: props.columns[columnKey].
|
|
149
|
+
field: props.columns[columnKey].filterField ??
|
|
161
150
|
props.columns[columnKey].field ?? {
|
|
162
151
|
fieldName: columnKey,
|
|
163
152
|
},
|
|
@@ -184,9 +173,19 @@ export const AdvancedRequestDataGrid = <R,>(
|
|
|
184
173
|
orderBy,
|
|
185
174
|
start,
|
|
186
175
|
length,
|
|
176
|
+
idField,
|
|
187
177
|
total < 0
|
|
188
178
|
),
|
|
189
|
-
[
|
|
179
|
+
[
|
|
180
|
+
props.columns,
|
|
181
|
+
conditions,
|
|
182
|
+
orderBy,
|
|
183
|
+
start,
|
|
184
|
+
length,
|
|
185
|
+
total,
|
|
186
|
+
props.conditions,
|
|
187
|
+
idField,
|
|
188
|
+
]
|
|
190
189
|
);
|
|
191
190
|
|
|
192
191
|
const loadCopyRows = useCallback(
|
|
@@ -202,6 +201,7 @@ export const AdvancedRequestDataGrid = <R,>(
|
|
|
202
201
|
orderBy,
|
|
203
202
|
start: 0,
|
|
204
203
|
length: total,
|
|
204
|
+
idField,
|
|
205
205
|
})
|
|
206
206
|
).then((response) =>
|
|
207
207
|
parseJsonObjectFields(response.data, props.columns, props.parser)
|
|
@@ -209,6 +209,7 @@ export const AdvancedRequestDataGrid = <R,>(
|
|
|
209
209
|
[
|
|
210
210
|
advancedRequest,
|
|
211
211
|
conditions,
|
|
212
|
+
idField,
|
|
212
213
|
orderBy,
|
|
213
214
|
props.columns,
|
|
214
215
|
props.conditions,
|
|
@@ -218,6 +219,38 @@ export const AdvancedRequestDataGrid = <R,>(
|
|
|
218
219
|
]
|
|
219
220
|
);
|
|
220
221
|
|
|
222
|
+
const loadAllIds = useCallback(
|
|
223
|
+
() =>
|
|
224
|
+
idAdvancedRequest(
|
|
225
|
+
getAdvancedRequestDto({
|
|
226
|
+
type: props.type,
|
|
227
|
+
columns: {
|
|
228
|
+
Id: {
|
|
229
|
+
name: 'Id',
|
|
230
|
+
field: idField ?? { fieldName: 'Id' },
|
|
231
|
+
},
|
|
232
|
+
},
|
|
233
|
+
conditions: [
|
|
234
|
+
...(props.conditions ?? []),
|
|
235
|
+
...(Object.values(conditions) ?? []),
|
|
236
|
+
],
|
|
237
|
+
orderBy,
|
|
238
|
+
start: 0,
|
|
239
|
+
length: total,
|
|
240
|
+
idField: null,
|
|
241
|
+
})
|
|
242
|
+
).then((response) => response.data.map((row) => row['Id'])),
|
|
243
|
+
[
|
|
244
|
+
conditions,
|
|
245
|
+
idAdvancedRequest,
|
|
246
|
+
idField,
|
|
247
|
+
orderBy,
|
|
248
|
+
props.conditions,
|
|
249
|
+
props.type,
|
|
250
|
+
total,
|
|
251
|
+
]
|
|
252
|
+
);
|
|
253
|
+
|
|
221
254
|
const onVisibleRowsChanged = useCallback(
|
|
222
255
|
(newStart: number, newLength: number) => {
|
|
223
256
|
if (newStart !== start || newLength !== length) {
|
|
@@ -228,6 +261,13 @@ export const AdvancedRequestDataGrid = <R,>(
|
|
|
228
261
|
[length, start]
|
|
229
262
|
);
|
|
230
263
|
|
|
264
|
+
const onSelectionChange = useCallback(
|
|
265
|
+
(selectedKeys: string[]) => {
|
|
266
|
+
onSelectionChangeFromProps?.(selectedKeys);
|
|
267
|
+
},
|
|
268
|
+
[onSelectionChangeFromProps]
|
|
269
|
+
);
|
|
270
|
+
|
|
231
271
|
return (
|
|
232
272
|
<DataGrid
|
|
233
273
|
onVisibleRowsChange={onVisibleRowsChanged}
|
|
@@ -239,6 +279,8 @@ export const AdvancedRequestDataGrid = <R,>(
|
|
|
239
279
|
rows={rows}
|
|
240
280
|
loadCopyRows={loadCopyRows}
|
|
241
281
|
refresh={refresh}
|
|
282
|
+
onSelectionChange={onSelectionChange}
|
|
283
|
+
getAllIds={loadAllIds}
|
|
242
284
|
{...props}
|
|
243
285
|
/>
|
|
244
286
|
);
|
|
@@ -24,6 +24,9 @@ export type AdvancedRequestDataGridFilters = Record<
|
|
|
24
24
|
|
|
25
25
|
export type AdvancedRequestDataGridColumn<R> = DataGridColumn<R> & {
|
|
26
26
|
filter?: AdvancedRequestDataGridFilter;
|
|
27
|
+
field?: FieldDTO;
|
|
28
|
+
filterField?: FieldDTO;
|
|
29
|
+
sortField?: FieldDTO;
|
|
27
30
|
};
|
|
28
31
|
|
|
29
32
|
export type AdvancedRequestDataGridColumns<R> = Record<
|
|
@@ -39,6 +42,6 @@ export type AdvancedRequestDataGridProps<R> = Omit<
|
|
|
39
42
|
type: string;
|
|
40
43
|
orderBy?: OrderByDTO[];
|
|
41
44
|
conditions?: ConditionDTO[];
|
|
42
|
-
|
|
45
|
+
idField?: FieldDTO | null;
|
|
43
46
|
parser?: (row: AdvancedRequestRow<R>) => R;
|
|
44
47
|
};
|
|
@@ -17,7 +17,7 @@ export const useFilterModal = <R,>({
|
|
|
17
17
|
const [isVisible, setIsVisible] = useState(false);
|
|
18
18
|
const { filters = {}, columns, setFilters } = useDataGridContext<R>(context);
|
|
19
19
|
const column = columns[columnKey];
|
|
20
|
-
const [currentFilter, setCurrentFilter] = useState<DataGridFilter
|
|
20
|
+
const [currentFilter, setCurrentFilter] = useState<DataGridFilter>(
|
|
21
21
|
filters[columnKey] ?? column?.filter
|
|
22
22
|
);
|
|
23
23
|
|
|
@@ -37,6 +37,7 @@ export const DataGridHeader = <R,>({
|
|
|
37
37
|
headerColor,
|
|
38
38
|
rowKeyGetter,
|
|
39
39
|
gridTemplateColumns,
|
|
40
|
+
getAllIds,
|
|
40
41
|
} = useDataGridContext(context);
|
|
41
42
|
const [visibleFilter, setVisibleFilter] = useState<string | undefined>();
|
|
42
43
|
|
|
@@ -49,10 +50,11 @@ export const DataGridHeader = <R,>({
|
|
|
49
50
|
? true
|
|
50
51
|
: undefined;
|
|
51
52
|
const toggleAll = useCallback(
|
|
52
|
-
(newStatus: boolean) => {
|
|
53
|
-
|
|
53
|
+
async (newStatus: boolean) => {
|
|
54
|
+
const allIds = getAllIds ? await getAllIds() : rows.map(rowKeyGetter);
|
|
55
|
+
setSelectedKeys(newStatus ? allIds : []);
|
|
54
56
|
},
|
|
55
|
-
[rowKeyGetter, rows, setSelectedKeys]
|
|
57
|
+
[getAllIds, rowKeyGetter, rows, setSelectedKeys]
|
|
56
58
|
);
|
|
57
59
|
|
|
58
60
|
const onFilterButtonClicked = useCallback((columnKey: string) => {
|
|
@@ -54,7 +54,7 @@ export const useDataGridCopy = <R>(
|
|
|
54
54
|
}, []);
|
|
55
55
|
|
|
56
56
|
const generateCellHtml = useCallback(
|
|
57
|
-
(col: DataGridColumn<R
|
|
57
|
+
(col: DataGridColumn<R>, value: any) => `<td style="
|
|
58
58
|
${
|
|
59
59
|
col.excelFormatter
|
|
60
60
|
? "mso-number-format: '" + col.excelFormatter(col) + "';"
|
|
@@ -11,7 +11,6 @@ import {
|
|
|
11
11
|
SetStateAction,
|
|
12
12
|
} from 'react';
|
|
13
13
|
|
|
14
|
-
import { FieldDTO } from '../../../services/advancedRequests';
|
|
15
14
|
import { SettingsContextProps } from '../../../providers/SettingsProvider';
|
|
16
15
|
import { ThemeColor } from '../../../providers/ThemeProvider/types';
|
|
17
16
|
|
|
@@ -23,8 +22,6 @@ export type DataGridColumn<R> = {
|
|
|
23
22
|
editable?: boolean;
|
|
24
23
|
excelFormatter?: (value: any) => string;
|
|
25
24
|
excelValue?: (value: any) => string;
|
|
26
|
-
field?: FieldDTO;
|
|
27
|
-
filterField?: FieldDTO;
|
|
28
25
|
filter?: DataGridFilter;
|
|
29
26
|
footer?: (allRows: R[], filteredRows: R[], selectedRows: R[]) => ReactNode;
|
|
30
27
|
footerClassName?: string;
|
|
@@ -57,7 +54,8 @@ export type DataGridProps<R> = {
|
|
|
57
54
|
selectable?: boolean;
|
|
58
55
|
editable?: boolean;
|
|
59
56
|
onRowDoubleClick?: (row: R, e: MouseEvent) => void;
|
|
60
|
-
onSelectionChange?: (
|
|
57
|
+
onSelectionChange?: (keys: string[]) => void;
|
|
58
|
+
getAllIds?: () => Promise<string[]>;
|
|
61
59
|
onFiltersChanged?: (filters: DataGridFilters) => void;
|
|
62
60
|
onSortsChanged?: (sorts: Record<string, DataGridSort>) => void;
|
|
63
61
|
onVisibleRowsChange?: (startIndex: number, length: number) => void;
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { numberFilter, textFilter } from '../../DataGrid/helpers';
|
|
2
|
-
|
|
3
|
-
import { AdvancedRequestDataGridFilter } from '../types';
|
|
4
|
-
|
|
5
|
-
export const advancedTextFilter = (
|
|
6
|
-
key: string
|
|
7
|
-
): AdvancedRequestDataGridFilter<'text'> => ({
|
|
8
|
-
...textFilter(key),
|
|
9
|
-
field: { fieldName: key },
|
|
10
|
-
getter: (value) => value[key] ?? '',
|
|
11
|
-
});
|
|
12
|
-
|
|
13
|
-
export const advancedNumberFilter = (
|
|
14
|
-
key: string
|
|
15
|
-
): AdvancedRequestDataGridFilter<'number'> => ({
|
|
16
|
-
...numberFilter(key),
|
|
17
|
-
field: { fieldName: key },
|
|
18
|
-
getter: (value) => value[key] ?? 0,
|
|
19
|
-
});
|