@addev-be/ui 0.6.9 → 0.6.11
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/DataGrid/hooks/useDataGrid.tsx +4 -0
- package/src/components/data/DataGrid/index.tsx +28 -8
- package/src/components/data/DataGrid/types.ts +3 -0
- package/src/components/data/SqlRequestDataGrid/index.tsx +28 -5
- package/src/components/data/SqlRequestGrid/index.tsx +39 -10
- package/src/components/data/SqlRequestGrid/types.ts +4 -0
- package/src/typings.d.ts +7 -0
package/package.json
CHANGED
|
@@ -34,6 +34,7 @@ export const useDataGrid = <R,>(
|
|
|
34
34
|
onSortsChanged,
|
|
35
35
|
loadCopyRows,
|
|
36
36
|
onSelectionChange,
|
|
37
|
+
onSelectedRowsChanged,
|
|
37
38
|
selectable,
|
|
38
39
|
initialSorts,
|
|
39
40
|
} = props;
|
|
@@ -87,6 +88,9 @@ export const useDataGrid = <R,>(
|
|
|
87
88
|
useEffect(() => {
|
|
88
89
|
onSelectionChange?.(selectedKeys);
|
|
89
90
|
}, [onSelectionChange, selectedKeys]);
|
|
91
|
+
useEffect(() => {
|
|
92
|
+
onSelectedRowsChanged?.(selectedRows);
|
|
93
|
+
}, [onSelectedRowsChanged, selectedRows]);
|
|
90
94
|
|
|
91
95
|
const toggleSelection = useCallback(
|
|
92
96
|
(key: string) => {
|
|
@@ -1,7 +1,13 @@
|
|
|
1
1
|
import * as styles from './styles';
|
|
2
2
|
|
|
3
|
-
import {
|
|
4
|
-
|
|
3
|
+
import {
|
|
4
|
+
Context,
|
|
5
|
+
ForwardedRef,
|
|
6
|
+
forwardRef,
|
|
7
|
+
useImperativeHandle,
|
|
8
|
+
useRef,
|
|
9
|
+
} from 'react';
|
|
10
|
+
import { DataGridContextProps, DataGridProps, DataGridRefProps } from './types';
|
|
5
11
|
|
|
6
12
|
import { DataGridFooter } from './DataGridFooter';
|
|
7
13
|
import { DataGridHeader } from './DataGridHeader';
|
|
@@ -12,12 +18,15 @@ import { useDataGrid } from './hooks';
|
|
|
12
18
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
13
19
|
/* eslint-disable @typescript-eslint/no-unnecessary-type-constraint */
|
|
14
20
|
|
|
15
|
-
export const
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
+
export const DataGridInner = <R,>(
|
|
22
|
+
{
|
|
23
|
+
contextOverride,
|
|
24
|
+
...props
|
|
25
|
+
}: DataGridProps<R> & {
|
|
26
|
+
contextOverride?: Partial<DataGridContextProps<R>>;
|
|
27
|
+
},
|
|
28
|
+
ref: ForwardedRef<DataGridRefProps<R>>
|
|
29
|
+
) => {
|
|
21
30
|
const scrollableRef = useRef<HTMLDivElement>(null);
|
|
22
31
|
const { className } = props;
|
|
23
32
|
const [contextProps, DataGridContext] = useDataGrid(props, contextOverride);
|
|
@@ -28,8 +37,17 @@ export const DataGrid = <R,>({
|
|
|
28
37
|
gridTemplateColumns,
|
|
29
38
|
sortedRows,
|
|
30
39
|
onVisibleRowsChange,
|
|
40
|
+
refresh,
|
|
31
41
|
} = contextProps;
|
|
32
42
|
|
|
43
|
+
useImperativeHandle(
|
|
44
|
+
ref,
|
|
45
|
+
() => ({
|
|
46
|
+
refresh,
|
|
47
|
+
}),
|
|
48
|
+
[refresh]
|
|
49
|
+
);
|
|
50
|
+
|
|
33
51
|
const hasFooter = Object.values(columns).some((col) => col.footer);
|
|
34
52
|
|
|
35
53
|
const rowTemplate = DataGridRowTemplate;
|
|
@@ -58,3 +76,5 @@ export const DataGrid = <R,>({
|
|
|
58
76
|
</DataGridContext.Provider>
|
|
59
77
|
);
|
|
60
78
|
};
|
|
79
|
+
|
|
80
|
+
export const DataGrid = forwardRef(DataGridInner);
|
|
@@ -73,6 +73,7 @@ export type DataGridProps<R> = {
|
|
|
73
73
|
editable?: boolean;
|
|
74
74
|
onRowDoubleClick?: (row: R, e: MouseEvent) => void;
|
|
75
75
|
onSelectionChange?: (keys: string[]) => void;
|
|
76
|
+
onSelectedRowsChanged?: (rows: R[]) => void;
|
|
76
77
|
getAllIds?: () => Promise<string[]>;
|
|
77
78
|
onFiltersChanged?: (filters: DataGridFilters) => void;
|
|
78
79
|
onSortsChanged?: (sorts: Record<string, DataGridSort>) => void;
|
|
@@ -268,3 +269,5 @@ export type DataGridRowTemplateProps<R> = {
|
|
|
268
269
|
toggleSelection?: () => void;
|
|
269
270
|
context: DataGridContext<R>;
|
|
270
271
|
};
|
|
272
|
+
|
|
273
|
+
export type DataGridRefProps<R> = Pick<DataGridContextProps<R>, 'refresh'>;
|
|
@@ -8,20 +8,33 @@ import {
|
|
|
8
8
|
import {
|
|
9
9
|
DataGridFilters,
|
|
10
10
|
DataGridFooterFunction,
|
|
11
|
+
DataGridRefProps,
|
|
11
12
|
DataGridSort,
|
|
12
13
|
} from '../DataGrid/types';
|
|
14
|
+
import {
|
|
15
|
+
ForwardedRef,
|
|
16
|
+
forwardRef,
|
|
17
|
+
useCallback,
|
|
18
|
+
useEffect,
|
|
19
|
+
useImperativeHandle,
|
|
20
|
+
useMemo,
|
|
21
|
+
useRef,
|
|
22
|
+
useState,
|
|
23
|
+
} from 'react';
|
|
13
24
|
import _, { debounce } from 'lodash';
|
|
14
|
-
import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
|
|
15
25
|
|
|
16
26
|
import { DataGrid } from '../DataGrid';
|
|
17
27
|
import { SqlRequestDataGridProps } from './types';
|
|
18
28
|
import { convertSqlFiltersToConditions } from './helpers';
|
|
19
29
|
import { isColumnVisible } from '../DataGrid/helpers';
|
|
20
30
|
|
|
21
|
-
export const
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
31
|
+
export const SqlRequestDataGridInner = <R,>(
|
|
32
|
+
{
|
|
33
|
+
onSelectionChange: onSelectionChangeFromProps,
|
|
34
|
+
...props
|
|
35
|
+
}: SqlRequestDataGridProps<R>,
|
|
36
|
+
ref: ForwardedRef<DataGridRefProps<R>>
|
|
37
|
+
) => {
|
|
25
38
|
const currentRows = useRef<R[]>([]);
|
|
26
39
|
const [rows, setRows] = useState<R[]>([]);
|
|
27
40
|
const [start, setStart] = useState(0);
|
|
@@ -331,6 +344,14 @@ export const SqlRequestDataGrid = <R,>({
|
|
|
331
344
|
[footers, setFooters, footerFunctions]
|
|
332
345
|
);
|
|
333
346
|
|
|
347
|
+
useImperativeHandle(
|
|
348
|
+
ref,
|
|
349
|
+
() => ({
|
|
350
|
+
refresh,
|
|
351
|
+
}),
|
|
352
|
+
[refresh]
|
|
353
|
+
);
|
|
354
|
+
|
|
334
355
|
return (
|
|
335
356
|
<DataGrid
|
|
336
357
|
onVisibleRowsChange={onVisibleRowsChanged}
|
|
@@ -349,3 +370,5 @@ export const SqlRequestDataGrid = <R,>({
|
|
|
349
370
|
/>
|
|
350
371
|
);
|
|
351
372
|
};
|
|
373
|
+
|
|
374
|
+
export const SqlRequestDataGrid = forwardRef(SqlRequestDataGridInner);
|
|
@@ -5,22 +5,34 @@ import {
|
|
|
5
5
|
OrderByDTO,
|
|
6
6
|
useSqlRequestHandler,
|
|
7
7
|
} from '../../../services/sqlRequests';
|
|
8
|
-
import {
|
|
8
|
+
import {
|
|
9
|
+
ForwardedRef,
|
|
10
|
+
forwardRef,
|
|
11
|
+
useCallback,
|
|
12
|
+
useEffect,
|
|
13
|
+
useImperativeHandle,
|
|
14
|
+
useMemo,
|
|
15
|
+
useRef,
|
|
16
|
+
useState,
|
|
17
|
+
} from 'react';
|
|
18
|
+
import { SqlRequestGridProps, SqlRequestGridRefProps } from './types';
|
|
9
19
|
|
|
10
|
-
import { SqlRequestGridProps } from './types';
|
|
11
20
|
import { VirtualScroller } from '../VirtualScroller';
|
|
12
21
|
import { debounce } from 'lodash';
|
|
13
22
|
import { isColumnVisible } from '../DataGrid/helpers';
|
|
14
23
|
|
|
15
24
|
// eslint-disable-next-line @typescript-eslint/no-empty-object-type
|
|
16
|
-
export const
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
25
|
+
export const SqlRequestGridInner = <R, P extends object = {}>(
|
|
26
|
+
{
|
|
27
|
+
rowHeight = styles.DEFAULT_ROW_HEIGHT,
|
|
28
|
+
itemsPerRow,
|
|
29
|
+
itemTemplate,
|
|
30
|
+
itemProps,
|
|
31
|
+
gap,
|
|
32
|
+
...props
|
|
33
|
+
}: SqlRequestGridProps<R, P>,
|
|
34
|
+
ref: ForwardedRef<SqlRequestGridRefProps>
|
|
35
|
+
) => {
|
|
24
36
|
const currentRows = useRef<R[]>([]);
|
|
25
37
|
const [rows, setRows] = useState<R[]>([]);
|
|
26
38
|
const [start, setStart] = useState(0);
|
|
@@ -128,6 +140,21 @@ export const SqlRequestGrid = <R, P extends object = {}>({
|
|
|
128
140
|
[length, start]
|
|
129
141
|
);
|
|
130
142
|
|
|
143
|
+
const refresh = useCallback(() => {
|
|
144
|
+
setRows([]);
|
|
145
|
+
setStart(0);
|
|
146
|
+
setLength(50);
|
|
147
|
+
setCount(-1);
|
|
148
|
+
}, []);
|
|
149
|
+
|
|
150
|
+
useImperativeHandle(
|
|
151
|
+
ref,
|
|
152
|
+
() => ({
|
|
153
|
+
refresh,
|
|
154
|
+
}),
|
|
155
|
+
[refresh]
|
|
156
|
+
);
|
|
157
|
+
|
|
131
158
|
return (
|
|
132
159
|
<styles.SqlRequestGridContainer>
|
|
133
160
|
<VirtualScroller
|
|
@@ -143,3 +170,5 @@ export const SqlRequestGrid = <R, P extends object = {}>({
|
|
|
143
170
|
</styles.SqlRequestGridContainer>
|
|
144
171
|
);
|
|
145
172
|
};
|
|
173
|
+
|
|
174
|
+
export const SqlRequestGrid = forwardRef(SqlRequestGridInner);
|
package/src/typings.d.ts
CHANGED
|
@@ -4,3 +4,10 @@
|
|
|
4
4
|
export type DeepPartial<T> = {
|
|
5
5
|
[P in keyof T]?: DeepPartial<T[P]>;
|
|
6
6
|
};
|
|
7
|
+
|
|
8
|
+
declare module 'react' {
|
|
9
|
+
// eslint-disable-next-line @typescript-eslint/no-empty-object-type
|
|
10
|
+
function forwardRef<T, P = {}>(
|
|
11
|
+
render: (props: P, ref: React.Ref<T>) => React.ReactNode | null
|
|
12
|
+
): (props: P & React.RefAttributes<T>) => React.ReactNode | null;
|
|
13
|
+
}
|