@addev-be/ui 0.2.2 → 0.2.6

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.
Files changed (168) hide show
  1. package/assets/icons/arrow-down-a-z.svg +1 -1
  2. package/assets/icons/arrow-up-z-a.svg +1 -1
  3. package/assets/icons/check.svg +1 -1
  4. package/assets/icons/down.svg +1 -1
  5. package/assets/icons/filter-full.svg +1 -1
  6. package/assets/icons/filter.svg +1 -1
  7. package/assets/icons/hashtag.svg +1 -1
  8. package/assets/icons/image-slash.svg +1 -1
  9. package/assets/icons/left.svg +1 -1
  10. package/assets/icons/magnifier.svg +1 -1
  11. package/assets/icons/phone.svg +1 -1
  12. package/assets/icons/right.svg +1 -1
  13. package/assets/icons/spinner-third.svg +1 -1
  14. package/assets/icons/table-columns.svg +1 -1
  15. package/assets/icons/up.svg +1 -1
  16. package/assets/icons/user-tie.svg +1 -1
  17. package/dist/components/data/AdvancedRequestDataGrid/helpers/advancedRequests.d.ts +14 -0
  18. package/dist/components/data/AdvancedRequestDataGrid/helpers/advancedRequests.js +76 -0
  19. package/dist/components/data/AdvancedRequestDataGrid/helpers/columns.d.ts +22 -0
  20. package/dist/components/data/AdvancedRequestDataGrid/helpers/columns.js +156 -0
  21. package/dist/components/data/AdvancedRequestDataGrid/helpers/index.d.ts +2 -0
  22. package/dist/components/data/AdvancedRequestDataGrid/helpers/index.js +18 -0
  23. package/dist/components/data/AdvancedRequestDataGrid/index.d.ts +2 -0
  24. package/dist/components/data/AdvancedRequestDataGrid/index.js +215 -0
  25. package/dist/components/data/AdvancedRequestDataGrid/types.d.ts +21 -0
  26. package/dist/components/data/DataGrid/AdvancedRequestDataGrid.d.ts +1 -2
  27. package/dist/components/data/DataGrid/AdvancedRequestDataGrid.js +3 -5
  28. package/dist/components/data/DataGrid/DataGridCell.d.ts +1 -1
  29. package/dist/components/data/DataGrid/DataGridCell.js +6 -6
  30. package/dist/components/data/DataGrid/DataGridEditableCell.js +2 -7
  31. package/dist/components/data/DataGrid/DataGridFilterMenu/index.js +10 -8
  32. package/dist/components/data/DataGrid/DataGridFooter.js +4 -14
  33. package/dist/components/data/DataGrid/DataGridHeader.js +60 -12
  34. package/dist/components/data/DataGrid/DataGridHeaderCell.js +6 -5
  35. package/dist/components/data/DataGrid/FilterModalContent/index.d.ts +5 -5
  36. package/dist/components/data/DataGrid/FilterModalContent/index.js +11 -9
  37. package/dist/components/data/DataGrid/FilterValuesScroller.d.ts +8 -7
  38. package/dist/components/data/DataGrid/FilterValuesScroller.js +5 -6
  39. package/dist/components/data/DataGrid/VirtualScroller.js +1 -6
  40. package/dist/components/data/DataGrid/helpers/columns.d.ts +12 -13
  41. package/dist/components/data/DataGrid/helpers/columns.js +17 -71
  42. package/dist/components/data/DataGrid/helpers/filters.d.ts +8 -7
  43. package/dist/components/data/DataGrid/helpers/filters.js +26 -21
  44. package/dist/components/data/DataGrid/helpers/index.d.ts +1 -2
  45. package/dist/components/data/DataGrid/helpers/index.js +1 -2
  46. package/dist/components/data/DataGrid/hooks/index.d.ts +2 -2
  47. package/dist/components/data/DataGrid/hooks/index.js +4 -4
  48. package/dist/components/data/DataGrid/hooks/useDataGrid.js +27 -5
  49. package/dist/components/data/DataGrid/hooks/useDataGridCopy.js +0 -1
  50. package/dist/components/data/DataGrid/hooks/useDataGridSettings.js +0 -1
  51. package/dist/components/data/DataGrid/index.js +27 -20
  52. package/dist/components/data/DataGrid/styles.d.ts +7 -2
  53. package/dist/components/data/DataGrid/styles.js +13 -10
  54. package/dist/components/data/DataGrid/types.d.ts +47 -54
  55. package/dist/components/data/SqlRequestDataGrid/helpers/columns.d.ts +16 -0
  56. package/dist/components/data/SqlRequestDataGrid/helpers/columns.js +112 -0
  57. package/dist/components/data/SqlRequestDataGrid/helpers/index.d.ts +2 -0
  58. package/dist/components/data/SqlRequestDataGrid/helpers/index.js +18 -0
  59. package/dist/components/data/SqlRequestDataGrid/helpers/sqlRequests.d.ts +3 -0
  60. package/dist/components/data/SqlRequestDataGrid/helpers/sqlRequests.js +18 -0
  61. package/dist/components/data/SqlRequestDataGrid/index.d.ts +2 -0
  62. package/dist/components/data/SqlRequestDataGrid/index.js +224 -0
  63. package/dist/components/data/SqlRequestDataGrid/types.d.ts +21 -0
  64. package/dist/components/data/SqlRequestDataGrid/types.js +2 -0
  65. package/dist/components/data/index.d.ts +7 -2
  66. package/dist/components/data/index.js +7 -2
  67. package/dist/components/forms/IconButton.js +1 -1
  68. package/dist/components/forms/IndeterminateCheckbox.js +1 -1
  69. package/dist/components/layout/Modal/index.js +1 -1
  70. package/dist/helpers/dates.d.ts +2 -0
  71. package/dist/helpers/dates.js +13 -0
  72. package/dist/providers/PortalsProvider/index.d.ts +1 -1
  73. package/dist/providers/PortalsProvider/index.js +1 -1
  74. package/dist/services/HttpService.d.ts +10 -0
  75. package/dist/services/HttpService.js +117 -0
  76. package/dist/services/advancedRequests.d.ts +3 -3
  77. package/dist/services/advancedRequests.js +2 -2
  78. package/dist/services/hooks.d.ts +2 -1
  79. package/dist/services/hooks.js +10 -3
  80. package/dist/services/sqlRequests.d.ts +40 -0
  81. package/dist/services/sqlRequests.js +10 -0
  82. package/package.json +1 -1
  83. package/src/Icons.tsx +80 -80
  84. package/src/components/data/AdvancedRequestDataGrid/helpers/advancedRequests.ts +93 -93
  85. package/src/components/data/AdvancedRequestDataGrid/helpers/columns.tsx +262 -262
  86. package/src/components/data/AdvancedRequestDataGrid/helpers/index.ts +2 -2
  87. package/src/components/data/AdvancedRequestDataGrid/index.tsx +269 -269
  88. package/src/components/data/AdvancedRequestDataGrid/types.ts +47 -47
  89. package/src/components/data/DataGrid/DataGridCell.tsx +73 -75
  90. package/src/components/data/DataGrid/DataGridColumnsModal/helpers.ts +14 -14
  91. package/src/components/data/DataGrid/DataGridColumnsModal/hooks.tsx +58 -58
  92. package/src/components/data/DataGrid/DataGridColumnsModal/index.tsx +181 -181
  93. package/src/components/data/DataGrid/DataGridColumnsModal/styles.ts +104 -104
  94. package/src/components/data/DataGrid/DataGridEditableCell.tsx +43 -54
  95. package/src/components/data/DataGrid/DataGridFilterMenu/hooks.tsx +75 -75
  96. package/src/components/data/DataGrid/DataGridFilterMenu/index.tsx +200 -190
  97. package/src/components/data/DataGrid/DataGridFilterMenu/styles.ts +100 -100
  98. package/src/components/data/DataGrid/DataGridFooter.tsx +44 -64
  99. package/src/components/data/DataGrid/DataGridHeader.tsx +126 -128
  100. package/src/components/data/DataGrid/DataGridHeaderCell.tsx +167 -166
  101. package/src/components/data/DataGrid/FilterModalContent/index.tsx +124 -125
  102. package/src/components/data/DataGrid/FilterModalContent/styles.ts +22 -22
  103. package/src/components/data/DataGrid/FilterValuesScroller.tsx +133 -131
  104. package/src/components/data/DataGrid/VirtualScroller.tsx +46 -46
  105. package/src/components/data/DataGrid/helpers/columns.tsx +196 -199
  106. package/src/components/data/DataGrid/helpers/filters.ts +220 -207
  107. package/src/components/data/DataGrid/helpers/index.ts +2 -2
  108. package/src/components/data/DataGrid/hooks/index.ts +30 -30
  109. package/src/components/data/DataGrid/hooks/useDataGrid.tsx +264 -261
  110. package/src/components/data/DataGrid/hooks/useDataGridCopy.ts +165 -166
  111. package/src/components/data/DataGrid/hooks/useDataGridSettings.ts +48 -49
  112. package/src/components/data/DataGrid/index.tsx +132 -133
  113. package/src/components/data/DataGrid/styles.ts +326 -299
  114. package/src/components/data/DataGrid/types.ts +241 -233
  115. package/src/components/data/SqlRequestDataGrid/helpers/columns.tsx +224 -206
  116. package/src/components/data/SqlRequestDataGrid/helpers/index.ts +2 -2
  117. package/src/components/data/SqlRequestDataGrid/helpers/sqlRequests.ts +16 -16
  118. package/src/components/data/SqlRequestDataGrid/index.tsx +252 -221
  119. package/src/components/data/SqlRequestDataGrid/types.ts +47 -46
  120. package/src/components/data/index.ts +8 -6
  121. package/src/components/forms/Button.tsx +99 -99
  122. package/src/components/forms/IconButton.tsx +56 -56
  123. package/src/components/forms/IndeterminateCheckbox.tsx +46 -46
  124. package/src/components/forms/Select.tsx +40 -40
  125. package/src/components/forms/index.ts +5 -5
  126. package/src/components/forms/styles.ts +20 -20
  127. package/src/components/index.ts +3 -3
  128. package/src/components/layout/Dropdown/index.tsx +79 -79
  129. package/src/components/layout/Dropdown/styles.ts +44 -44
  130. package/src/components/layout/Loading/index.tsx +29 -29
  131. package/src/components/layout/Loading/styles.ts +29 -29
  132. package/src/components/layout/Modal/index.tsx +51 -51
  133. package/src/components/layout/Modal/styles.ts +110 -110
  134. package/src/components/layout/index.ts +3 -3
  135. package/src/config/index.ts +14 -14
  136. package/src/helpers/dates.ts +9 -0
  137. package/src/helpers/getScrollbarSize.ts +14 -14
  138. package/src/helpers/numbers.ts +20 -20
  139. package/src/hooks/index.ts +2 -2
  140. package/src/hooks/useElementSize.ts +24 -24
  141. package/src/hooks/useWindowSize.ts +20 -20
  142. package/src/index.ts +7 -7
  143. package/src/providers/PortalsProvider/index.tsx +54 -54
  144. package/src/providers/PortalsProvider/styles.ts +27 -27
  145. package/src/providers/SettingsProvider/index.tsx +70 -70
  146. package/src/providers/ThemeProvider/ThemeProvider.ts +55 -55
  147. package/src/providers/ThemeProvider/defaultTheme.ts +444 -444
  148. package/src/providers/ThemeProvider/index.ts +3 -3
  149. package/src/providers/ThemeProvider/types.ts +123 -123
  150. package/src/providers/UiProviders/index.tsx +65 -65
  151. package/src/providers/UiProviders/styles.ts +10 -10
  152. package/src/providers/hooks.ts +8 -8
  153. package/src/providers/index.ts +5 -5
  154. package/src/services/HttpService.ts +80 -80
  155. package/src/services/WebSocketService.ts +147 -147
  156. package/src/services/advancedRequests.ts +101 -101
  157. package/src/services/base.ts +31 -31
  158. package/src/services/hooks.ts +23 -23
  159. package/src/services/index.ts +2 -2
  160. package/src/services/sqlRequests.ts +99 -98
  161. package/src/styles/animations.scss +30 -30
  162. package/src/styles/index.scss +42 -42
  163. package/src/typings.d.ts +6 -6
  164. package/tsconfig.tsbuildinfo +1 -1
  165. package/dist/components/data/DataGrid/helpers.d.ts +0 -28
  166. package/dist/components/data/DataGrid/helpers.js +0 -436
  167. package/dist/config/types.d.ts +0 -11
  168. /package/dist/{config → components/data/AdvancedRequestDataGrid}/types.js +0 -0
@@ -1,221 +1,252 @@
1
- import {
2
- ConditionDTO,
3
- OrderByDTO,
4
- useSqlRequestHandler,
5
- } from '../../../services/sqlRequests';
6
- import {
7
- DataGridColumns,
8
- DataGridFilters,
9
- DataGridSort,
10
- } from '../DataGrid/types';
11
- import { useCallback, useEffect, useRef, useState } from 'react';
12
-
13
- import { DataGrid } from '../DataGrid';
14
- import { SqlRequestDataGridProps } from './types';
15
- import _ from 'lodash';
16
- import { convertSqlFiltersToConditions } from './helpers';
17
- import { debounce } from 'lodash';
18
- import { isColumnVisible } from '../DataGrid/helpers';
19
-
20
- export const SqlRequestDataGrid = <R,>({
21
- onSelectionChange: onSelectionChangeFromProps,
22
- ...props
23
- }: SqlRequestDataGridProps<R>) => {
24
- const currentRows = useRef<R[]>([]);
25
- const [rows, setRows] = useState<R[]>([]);
26
- const [start, setStart] = useState(0);
27
- const [length, setLength] = useState(50);
28
- const [total, setTotal] = useState(-1);
29
- const [sqlRequest, sqlIdRequest] = useSqlRequestHandler<R>(props.type);
30
-
31
- const [conditions, setConditions] = useState<Record<string, ConditionDTO>>(
32
- {}
33
- );
34
- const [orderBy, setOrderBy] = useState<OrderByDTO[]>([]);
35
-
36
- const refresh = useCallback(() => {
37
- setRows([]);
38
- setStart(0);
39
- setLength(50);
40
- setTotal(-1);
41
- }, []);
42
-
43
- const onFiltersChanged = useCallback((filters: DataGridFilters) => {
44
- const newConditions = convertSqlFiltersToConditions(filters);
45
- setTotal(-1);
46
- setConditions(newConditions);
47
- }, []);
48
-
49
- const onSortsChanged = useCallback(
50
- (sorts: Record<string, DataGridSort>) => {
51
- refresh();
52
- const newOrderBy = Object.entries(sorts).map(
53
- ([columnKey, direction]) =>
54
- ({
55
- field: columnKey,
56
- direction: direction.toUpperCase(),
57
- } as OrderByDTO)
58
- );
59
- console.log('newOrderBy=', newOrderBy);
60
- setOrderBy(newOrderBy);
61
- },
62
- [refresh]
63
- );
64
-
65
- const loadRows = useRef(
66
- debounce(
67
- (
68
- columns: DataGridColumns<R>,
69
- conditions: ConditionDTO[] = [],
70
- orderBy: OrderByDTO[] = [],
71
- start = 0,
72
- length = 100,
73
- getTotal = false
74
- ) => {
75
- const columnsKeys = Object.keys(columns).filter((key) =>
76
- isColumnVisible(columns[key])
77
- );
78
- if (!columnsKeys.includes('Id')) columnsKeys.push('Id');
79
- sqlRequest({
80
- columns: columnsKeys,
81
- conditions,
82
- orderBy,
83
- start,
84
- length,
85
- getTotal,
86
- }).then((response) => {
87
- if (getTotal) {
88
- currentRows.current = Array(response.total).fill(null);
89
- if (getTotal) setTotal(response.total ?? 0);
90
- }
91
- const parsedRows = props.parser
92
- ? response.data.map(props.parser)
93
- : (response.data as R[]);
94
- currentRows.current.splice(start, length, ...parsedRows);
95
- setRows([...currentRows.current]);
96
- });
97
- },
98
- 100
99
- )
100
- );
101
-
102
- const loadFilterValues = useCallback(
103
- (columnKey: string) => {
104
- return sqlRequest({
105
- columns: [columnKey],
106
- conditions: [
107
- ...(props.conditions ?? []),
108
- ...Object.values(
109
- _.pickBy(conditions, (condition, key) => key !== columnKey)
110
- ),
111
- ].filter((condition) => condition.field !== columnKey),
112
- orderBy: [
113
- {
114
- field:
115
- props.columns[columnKey].filterField ??
116
- props.columns[columnKey].field?.fieldAlias ??
117
- props.columns[columnKey].field?.fieldName ??
118
- columnKey,
119
- direction: 'ASC',
120
- },
121
- ],
122
- getTotal: false,
123
- unique: true,
124
- }).then((response) =>
125
- response.data.map(
126
- (row) => props.columns[columnKey].filter?.getter?.(row) ?? null
127
- )
128
- );
129
- },
130
- [conditions, props.columns, props.conditions, sqlRequest]
131
- );
132
-
133
- useEffect(
134
- () =>
135
- loadRows.current(
136
- props.columns,
137
- [...(props.conditions ?? []), ...(Object.values(conditions) ?? [])],
138
- orderBy,
139
- start,
140
- length,
141
- total < 0
142
- ),
143
- [props.columns, conditions, orderBy, start, length, total, props.conditions]
144
- );
145
-
146
- const loadCopyRows = useCallback(
147
- () =>
148
- sqlRequest({
149
- columns: Object.keys(props.columns).filter((key) =>
150
- isColumnVisible(props.columns[key])
151
- ),
152
- conditions: [
153
- ...(props.conditions ?? []),
154
- ...(Object.values(conditions) ?? []),
155
- ],
156
- orderBy,
157
- start: 0,
158
- length: total,
159
- }).then((response) =>
160
- props.parser ? response.data.map(props.parser) : (response.data as R[])
161
- ),
162
- [
163
- sqlRequest,
164
- props.columns,
165
- props.conditions,
166
- props.parser,
167
- conditions,
168
- orderBy,
169
- total,
170
- ]
171
- );
172
-
173
- const loadAllIds = useCallback(
174
- () =>
175
- sqlIdRequest({
176
- columns: ['Id'],
177
- conditions: [
178
- ...(props.conditions ?? []),
179
- ...(Object.values(conditions) ?? []),
180
- ],
181
- orderBy,
182
- start: 0,
183
- length: total,
184
- }).then((response) => response.data.map((row) => row['Id'])),
185
- [conditions, orderBy, props.conditions, sqlIdRequest, total]
186
- );
187
-
188
- const onVisibleRowsChanged = useCallback(
189
- (newStart: number, newLength: number) => {
190
- if (newStart !== start || newLength !== length) {
191
- setStart(newStart);
192
- setLength(newLength);
193
- }
194
- },
195
- [length, start]
196
- );
197
-
198
- const onSelectionChange = useCallback(
199
- (selectedKeys: string[]) => {
200
- onSelectionChangeFromProps?.(selectedKeys);
201
- },
202
- [onSelectionChangeFromProps]
203
- );
204
-
205
- return (
206
- <DataGrid
207
- onVisibleRowsChange={onVisibleRowsChanged}
208
- filter={false}
209
- sort={false}
210
- onFiltersChanged={onFiltersChanged}
211
- onSortsChanged={onSortsChanged}
212
- filterValuesLoader={loadFilterValues}
213
- rows={rows}
214
- loadCopyRows={loadCopyRows}
215
- refresh={refresh}
216
- onSelectionChange={onSelectionChange}
217
- getAllIds={loadAllIds}
218
- {...props}
219
- />
220
- );
221
- };
1
+ import {
2
+ ConditionDTO,
3
+ OrderByDTO,
4
+ useSqlRequestHandler,
5
+ } from '../../../services/sqlRequests';
6
+ import { DataGridFilters, DataGridSort } from '../DataGrid/types';
7
+ import _, { debounce } from 'lodash';
8
+ import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
9
+
10
+ import { DataGrid } from '../DataGrid';
11
+ import { SqlRequestDataGridProps } from './types';
12
+ import { convertSqlFiltersToConditions } from './helpers';
13
+ import { isColumnVisible } from '../DataGrid/helpers';
14
+
15
+ export const SqlRequestDataGrid = <R,>({
16
+ onSelectionChange: onSelectionChangeFromProps,
17
+ ...props
18
+ }: SqlRequestDataGridProps<R>) => {
19
+ const currentRows = useRef<R[]>([]);
20
+ const [rows, setRows] = useState<R[]>([]);
21
+ const [start, setStart] = useState(0);
22
+ const [length, setLength] = useState(50);
23
+ const [total, setTotal] = useState(-1);
24
+ const [sqlRequest, sqlIdRequest] = useSqlRequestHandler<R>(props.type);
25
+
26
+ const [conditions, setConditions] = useState<Record<string, ConditionDTO>>(
27
+ {}
28
+ );
29
+ const [orderBy, setOrderBy] = useState<OrderByDTO[]>(
30
+ Object.entries(props.initialSorts ?? {}).map(
31
+ ([columnKey, direction]): OrderByDTO => ({
32
+ field: props.columns[columnKey].field?.fieldAlias ?? columnKey,
33
+ direction: direction.toUpperCase() as 'ASC' | 'DESC',
34
+ })
35
+ )
36
+ );
37
+
38
+ const [columnsKeys, visibleColumnsKeys] = useMemo(
39
+ () => [
40
+ [...Object.keys(props.columns), ...(props.hiddenColumns ?? [])],
41
+ [
42
+ ...Object.keys(props.columns).filter((key) =>
43
+ isColumnVisible(props.columns[key])
44
+ ),
45
+ ...(props.hiddenColumns ?? []),
46
+ ],
47
+ ],
48
+ [props.columns, props.hiddenColumns]
49
+ );
50
+
51
+ const refresh = useCallback(() => {
52
+ setRows([]);
53
+ setStart(0);
54
+ setLength(50);
55
+ setTotal(-1);
56
+ }, []);
57
+
58
+ const onFiltersChanged = useCallback((filters: DataGridFilters) => {
59
+ const newConditions = convertSqlFiltersToConditions(filters);
60
+ setTotal(-1);
61
+ setConditions(newConditions);
62
+ }, []);
63
+
64
+ const onSortsChanged = useCallback(
65
+ (sorts: Record<string, DataGridSort>) => {
66
+ refresh();
67
+ const newOrderBy = Object.entries(sorts).map(
68
+ ([columnKey, direction]) =>
69
+ ({
70
+ field: columnKey,
71
+ direction: direction.toUpperCase(),
72
+ } as OrderByDTO)
73
+ );
74
+ setOrderBy(newOrderBy);
75
+ },
76
+ [refresh]
77
+ );
78
+
79
+ const loadRows = useRef(
80
+ debounce(
81
+ (
82
+ columns: string[],
83
+ returnColumns: string[],
84
+ conditions: ConditionDTO[] = [],
85
+ orderBy: OrderByDTO[] = [],
86
+ start = 0,
87
+ length = 100,
88
+ getTotal = false
89
+ ) => {
90
+ sqlRequest({
91
+ columns: columns.includes('Id') ? columns : [...columns, 'Id'],
92
+ returnColumns: returnColumns.includes('Id')
93
+ ? returnColumns
94
+ : [...returnColumns, 'Id'],
95
+ conditions,
96
+ orderBy,
97
+ start,
98
+ length,
99
+ getTotal,
100
+ }).then((response) => {
101
+ if (getTotal) {
102
+ currentRows.current = Array(response.total).fill(null);
103
+ if (getTotal) setTotal(response.total ?? 0);
104
+ }
105
+ const parsedRows = props.parser
106
+ ? response.data.map(props.parser)
107
+ : (response.data as R[]);
108
+ currentRows.current.splice(start, length, ...parsedRows);
109
+ setRows([...currentRows.current]);
110
+ });
111
+ },
112
+ 100,
113
+ {
114
+ leading: true,
115
+ trailing: true,
116
+ }
117
+ )
118
+ );
119
+
120
+ const loadFilterValues = useCallback(
121
+ (columnKey: string) => {
122
+ return sqlRequest({
123
+ columns: columnsKeys,
124
+ returnColumns: [columnKey],
125
+ conditions: [
126
+ ...(props.conditions ?? []),
127
+ ...Object.values(
128
+ _.pickBy(conditions, (condition, key) => key !== columnKey)
129
+ ),
130
+ ].filter((condition) => condition.field !== columnKey),
131
+ orderBy: [
132
+ {
133
+ field:
134
+ props.columns[columnKey].filterField ??
135
+ props.columns[columnKey].field?.fieldAlias ??
136
+ props.columns[columnKey].field?.fieldName ??
137
+ columnKey,
138
+ direction: 'ASC',
139
+ },
140
+ ],
141
+ getTotal: false,
142
+ unique: true,
143
+ }).then((response) =>
144
+ response.data.map(
145
+ (row) => props.columns[columnKey].filter?.getter?.(row) ?? null
146
+ )
147
+ );
148
+ },
149
+ [columnsKeys, conditions, props.columns, props.conditions, sqlRequest]
150
+ );
151
+
152
+ useEffect(
153
+ () =>
154
+ loadRows.current(
155
+ columnsKeys,
156
+ visibleColumnsKeys,
157
+ [...(props.conditions ?? []), ...(Object.values(conditions) ?? [])],
158
+ orderBy,
159
+ start,
160
+ length,
161
+ total < 0
162
+ ),
163
+ [
164
+ props.columns,
165
+ conditions,
166
+ orderBy,
167
+ start,
168
+ length,
169
+ total,
170
+ props.conditions,
171
+ columnsKeys,
172
+ visibleColumnsKeys,
173
+ ]
174
+ );
175
+
176
+ const loadCopyRows = useCallback(
177
+ () =>
178
+ sqlRequest({
179
+ columns: columnsKeys,
180
+ returnColumns: visibleColumnsKeys,
181
+ conditions: [
182
+ ...(props.conditions ?? []),
183
+ ...(Object.values(conditions) ?? []),
184
+ ],
185
+ orderBy,
186
+ start: 0,
187
+ length: total,
188
+ }).then((response) =>
189
+ props.parser ? response.data.map(props.parser) : (response.data as R[])
190
+ ),
191
+ [
192
+ sqlRequest,
193
+ columnsKeys,
194
+ visibleColumnsKeys,
195
+ props.conditions,
196
+ props.parser,
197
+ conditions,
198
+ orderBy,
199
+ total,
200
+ ]
201
+ );
202
+
203
+ const loadAllIds = useCallback(
204
+ () =>
205
+ sqlIdRequest({
206
+ columns: columnsKeys,
207
+ returnColumns: ['Id'],
208
+ conditions: [
209
+ ...(props.conditions ?? []),
210
+ ...(Object.values(conditions) ?? []),
211
+ ],
212
+ orderBy,
213
+ start: 0,
214
+ length: total,
215
+ }).then((response) => response.data.map((row) => row['Id'])),
216
+ [columnsKeys, conditions, orderBy, props.conditions, sqlIdRequest, total]
217
+ );
218
+
219
+ const onVisibleRowsChanged = useCallback(
220
+ (newStart: number, newLength: number) => {
221
+ if (newStart !== start || newLength !== length) {
222
+ setStart(newStart);
223
+ setLength(newLength);
224
+ }
225
+ },
226
+ [length, start]
227
+ );
228
+
229
+ const onSelectionChange = useCallback(
230
+ (selectedKeys: string[]) => {
231
+ onSelectionChangeFromProps?.(selectedKeys);
232
+ },
233
+ [onSelectionChangeFromProps]
234
+ );
235
+
236
+ return (
237
+ <DataGrid
238
+ onVisibleRowsChange={onVisibleRowsChanged}
239
+ filter={false}
240
+ sort={false}
241
+ onFiltersChanged={onFiltersChanged}
242
+ onSortsChanged={onSortsChanged}
243
+ filterValuesLoader={loadFilterValues}
244
+ rows={rows}
245
+ loadCopyRows={loadCopyRows}
246
+ refresh={refresh}
247
+ onSelectionChange={onSelectionChange}
248
+ getAllIds={loadAllIds}
249
+ {...props}
250
+ />
251
+ );
252
+ };
@@ -1,46 +1,47 @@
1
- import {
2
- ConditionDTO,
3
- FieldDTO,
4
- OrderByDTO,
5
- SqlRequestRow,
6
- } from '../../../services/sqlRequests';
7
- import {
8
- DataGridColumn,
9
- DataGridFilter,
10
- DataGridFilterType,
11
- DataGridProps,
12
- } from '../DataGrid/types';
13
-
14
- export type SqlRequestDataGridFilter<
15
- T extends DataGridFilterType = DataGridFilterType
16
- > = DataGridFilter<T> & {
17
- field?: FieldDTO;
18
- };
19
-
20
- export type SqlRequestDataGridFilters = Record<
21
- string,
22
- SqlRequestDataGridFilter
23
- >;
24
-
25
- export type SqlRequestDataGridColumn<R> = DataGridColumn<R> & {
26
- filter?: SqlRequestDataGridFilter;
27
- field?: FieldDTO;
28
- filterField?: string;
29
- sortField?: string;
30
- };
31
-
32
- export type SqlRequestDataGridColumns<R> = Record<
33
- string,
34
- SqlRequestDataGridColumn<R>
35
- >;
36
-
37
- export type SqlRequestDataGridProps<R> = Omit<
38
- DataGridProps<R>,
39
- 'rows' | 'columns'
40
- > & {
41
- columns: SqlRequestDataGridColumns<R>;
42
- type: string;
43
- orderBy?: OrderByDTO[];
44
- conditions?: ConditionDTO[];
45
- parser?: (row: SqlRequestRow<R>) => R;
46
- };
1
+ import {
2
+ ConditionDTO,
3
+ FieldDTO,
4
+ OrderByDTO,
5
+ SqlRequestRow,
6
+ } from '../../../services/sqlRequests';
7
+ import {
8
+ DataGridColumn,
9
+ DataGridFilter,
10
+ DataGridFilterType,
11
+ DataGridProps,
12
+ } from '../DataGrid/types';
13
+
14
+ export type SqlRequestDataGridFilter<
15
+ T extends DataGridFilterType = DataGridFilterType
16
+ > = DataGridFilter<T> & {
17
+ field?: FieldDTO;
18
+ };
19
+
20
+ export type SqlRequestDataGridFilters = Record<
21
+ string,
22
+ SqlRequestDataGridFilter
23
+ >;
24
+
25
+ export type SqlRequestDataGridColumn<R> = DataGridColumn<R> & {
26
+ filter?: SqlRequestDataGridFilter;
27
+ field?: FieldDTO;
28
+ filterField?: string;
29
+ sortField?: string;
30
+ };
31
+
32
+ export type SqlRequestDataGridColumns<R> = Record<
33
+ string,
34
+ SqlRequestDataGridColumn<R>
35
+ >;
36
+
37
+ export type SqlRequestDataGridProps<R> = Omit<
38
+ DataGridProps<R>,
39
+ 'rows' | 'columns'
40
+ > & {
41
+ columns: SqlRequestDataGridColumns<R>;
42
+ hiddenColumns?: string[];
43
+ type: string;
44
+ orderBy?: OrderByDTO[];
45
+ conditions?: ConditionDTO[];
46
+ parser?: (row: SqlRequestRow<R>) => R;
47
+ };
@@ -1,6 +1,8 @@
1
- export * from './DataGrid';
2
- export * from './DataGrid/helpers';
3
- export * from './AdvancedRequestDataGrid';
4
- export * from './SqlRequestDataGrid';
5
- export * from './SqlRequestDataGrid/helpers';
6
- export * from './AdvancedRequestDataGrid/helpers';
1
+ export * from './DataGrid';
2
+ export * from './DataGrid/helpers';
3
+ export * from './DataGrid/styles';
4
+ export * from './AdvancedRequestDataGrid';
5
+ export * from './SqlRequestDataGrid';
6
+ export * from './SqlRequestDataGrid/helpers';
7
+ export * from './SqlRequestDataGrid/types';
8
+ export * from './AdvancedRequestDataGrid/helpers';