@addev-be/ui 0.11.7 → 0.12.0

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 (186) hide show
  1. package/assets/icons/arrow-down-1-9.svg +1 -1
  2. package/assets/icons/arrow-down-a-z.svg +1 -1
  3. package/assets/icons/arrow-up-z-a.svg +1 -1
  4. package/assets/icons/check.svg +1 -1
  5. package/assets/icons/circle-check.svg +1 -1
  6. package/assets/icons/down.svg +1 -1
  7. package/assets/icons/filter-full.svg +1 -1
  8. package/assets/icons/filter.svg +1 -1
  9. package/assets/icons/hashtag.svg +1 -1
  10. package/assets/icons/image-slash.svg +1 -1
  11. package/assets/icons/left.svg +1 -1
  12. package/assets/icons/magnifier.svg +1 -1
  13. package/assets/icons/phone.svg +1 -1
  14. package/assets/icons/right.svg +1 -1
  15. package/assets/icons/sort-calendar-ascending.svg +5 -5
  16. package/assets/icons/spinner-third.svg +1 -1
  17. package/assets/icons/table-columns.svg +1 -1
  18. package/assets/icons/table-footer-slash.svg +4 -4
  19. package/assets/icons/table-footer.svg +3 -3
  20. package/assets/icons/up.svg +1 -1
  21. package/assets/icons/user-tie.svg +1 -1
  22. package/assets/icons/x-bar.svg +3 -3
  23. package/dist/components/auth/LoginForm.js +0 -1
  24. package/dist/components/data/DataGrid/AdvancedRequestDataGrid.d.ts +10 -0
  25. package/dist/components/data/DataGrid/AdvancedRequestDataGrid.js +173 -0
  26. package/dist/components/data/DataGrid/FilterValuesScroller.d.ts +13 -0
  27. package/dist/components/data/DataGrid/FilterValuesScroller.js +73 -0
  28. package/dist/components/data/DataGrid/VirtualScroller.d.ts +11 -0
  29. package/dist/components/data/DataGrid/VirtualScroller.js +41 -0
  30. package/dist/components/data/DataGrid/helpers/advancedRequests.d.ts +12 -0
  31. package/dist/components/data/DataGrid/helpers/advancedRequests.js +53 -0
  32. package/dist/components/data/DataGrid/helpers.d.ts +28 -0
  33. package/dist/components/data/DataGrid/helpers.js +436 -0
  34. package/dist/config/types.d.ts +11 -0
  35. package/dist/config/types.js +2 -0
  36. package/dist/providers/AuthenticationProvider/index.d.ts +0 -1
  37. package/dist/providers/AuthenticationProvider/index.js +14 -28
  38. package/dist/services/advancedRequests.d.ts +1 -1
  39. package/dist/services/requests/userPermissions.d.ts +4 -0
  40. package/dist/services/requests/userPermissions.js +20 -0
  41. package/dist/services/sqlRequests.d.ts +1 -1
  42. package/package.json +1 -1
  43. package/src/Icons.tsx +128 -128
  44. package/src/components/auth/LoginForm.tsx +84 -84
  45. package/src/components/auth/LoginPage.tsx +32 -32
  46. package/src/components/auth/PasswordRecoveryForm.tsx +52 -52
  47. package/src/components/auth/PasswordResetForm.tsx +112 -112
  48. package/src/components/auth/index.ts +4 -4
  49. package/src/components/auth/styles.ts +14 -14
  50. package/src/components/data/AdvancedRequestDataGrid/helpers/advancedRequests.ts +93 -93
  51. package/src/components/data/AdvancedRequestDataGrid/helpers/columns.tsx +262 -262
  52. package/src/components/data/AdvancedRequestDataGrid/helpers/index.ts +2 -2
  53. package/src/components/data/AdvancedRequestDataGrid/index.tsx +267 -267
  54. package/src/components/data/AdvancedRequestDataGrid/types.ts +47 -47
  55. package/src/components/data/DataGrid/DataGridCell.tsx +76 -76
  56. package/src/components/data/DataGrid/DataGridColumnsModal/helpers.ts +14 -14
  57. package/src/components/data/DataGrid/DataGridColumnsModal/hooks.tsx +59 -59
  58. package/src/components/data/DataGrid/DataGridColumnsModal/index.tsx +181 -181
  59. package/src/components/data/DataGrid/DataGridColumnsModal/styles.ts +104 -104
  60. package/src/components/data/DataGrid/DataGridEditableCell.tsx +43 -43
  61. package/src/components/data/DataGrid/DataGridFilterMenu/FilterValuesScroller.tsx +131 -131
  62. package/src/components/data/DataGrid/DataGridFilterMenu/hooks.tsx +78 -78
  63. package/src/components/data/DataGrid/DataGridFilterMenu/index.tsx +378 -378
  64. package/src/components/data/DataGrid/DataGridFilterMenu/styles.ts +97 -97
  65. package/src/components/data/DataGrid/DataGridFooter.tsx +43 -43
  66. package/src/components/data/DataGrid/DataGridHeader.tsx +128 -128
  67. package/src/components/data/DataGrid/DataGridHeaderCell.tsx +101 -101
  68. package/src/components/data/DataGrid/DataGridRowTemplate.tsx +70 -70
  69. package/src/components/data/DataGrid/FilterModalContent/index.tsx +136 -136
  70. package/src/components/data/DataGrid/FilterModalContent/styles.ts +22 -22
  71. package/src/components/data/DataGrid/constants.ts +6 -6
  72. package/src/components/data/DataGrid/helpers/columns.tsx +319 -319
  73. package/src/components/data/DataGrid/helpers/filters.ts +287 -287
  74. package/src/components/data/DataGrid/helpers/index.ts +2 -2
  75. package/src/components/data/DataGrid/hooks/index.ts +30 -30
  76. package/src/components/data/DataGrid/hooks/useDataGrid.tsx +338 -338
  77. package/src/components/data/DataGrid/hooks/useDataGridCopy.ts +175 -175
  78. package/src/components/data/DataGrid/hooks/useDataGridSettings.ts +48 -48
  79. package/src/components/data/DataGrid/index.tsx +110 -110
  80. package/src/components/data/DataGrid/styles.ts +336 -336
  81. package/src/components/data/DataGrid/types.ts +283 -283
  82. package/src/components/data/SmartQueryDataGrid/helpers/columns.tsx +333 -0
  83. package/src/components/data/SmartQueryDataGrid/helpers/hooks.ts +41 -0
  84. package/src/components/data/SmartQueryDataGrid/helpers/index.ts +2 -0
  85. package/src/components/data/SmartQueryDataGrid/helpers/smartQueries.ts +17 -0
  86. package/src/components/data/SmartQueryDataGrid/hooks.ts +75 -0
  87. package/src/components/data/SmartQueryDataGrid/index.tsx +338 -0
  88. package/src/components/data/SmartQueryDataGrid/types.ts +45 -0
  89. package/src/components/data/SqlRequestDataGrid/helpers/columns.tsx +306 -306
  90. package/src/components/data/SqlRequestDataGrid/helpers/index.ts +2 -2
  91. package/src/components/data/SqlRequestDataGrid/helpers/sqlRequests.ts +16 -16
  92. package/src/components/data/SqlRequestDataGrid/index.tsx +387 -387
  93. package/src/components/data/SqlRequestDataGrid/types.ts +48 -48
  94. package/src/components/data/SqlRequestGrid/filters/FiltersSidebar.tsx +106 -106
  95. package/src/components/data/SqlRequestGrid/filters/styles.ts +88 -88
  96. package/src/components/data/SqlRequestGrid/helpers/index.ts +1 -1
  97. package/src/components/data/SqlRequestGrid/helpers/sqlRequests.ts +16 -16
  98. package/src/components/data/SqlRequestGrid/index.tsx +310 -310
  99. package/src/components/data/SqlRequestGrid/styles.ts +20 -20
  100. package/src/components/data/SqlRequestGrid/types.ts +53 -53
  101. package/src/components/data/VirtualScroller/hooks.ts +71 -71
  102. package/src/components/data/VirtualScroller/index.tsx +89 -89
  103. package/src/components/data/VirtualScroller/styles.ts +58 -58
  104. package/src/components/data/VirtualScroller/types.ts +12 -12
  105. package/src/components/data/index.ts +21 -17
  106. package/src/components/forms/AutoTextArea.tsx +41 -41
  107. package/src/components/forms/Button.tsx +133 -133
  108. package/src/components/forms/IconButton.tsx +57 -57
  109. package/src/components/forms/IndeterminateCheckbox.tsx +46 -46
  110. package/src/components/forms/Select.tsx +40 -40
  111. package/src/components/forms/VerticalLabel.tsx +20 -20
  112. package/src/components/forms/index.ts +6 -6
  113. package/src/components/forms/styles.ts +31 -31
  114. package/src/components/index.ts +6 -6
  115. package/src/components/layout/Dropdown/index.tsx +112 -112
  116. package/src/components/layout/Dropdown/styles.ts +45 -45
  117. package/src/components/layout/Loading/index.tsx +29 -29
  118. package/src/components/layout/Loading/styles.ts +29 -29
  119. package/src/components/layout/Modal/index.tsx +51 -51
  120. package/src/components/layout/Modal/styles.ts +121 -121
  121. package/src/components/layout/index.ts +3 -3
  122. package/src/components/search/HighlightedText.tsx +37 -37
  123. package/src/components/search/QuickSearchBar.tsx +86 -86
  124. package/src/components/search/QuickSearchResults.tsx +86 -86
  125. package/src/components/search/index.ts +9 -9
  126. package/src/components/search/styles.ts +96 -96
  127. package/src/components/search/types.ts +26 -26
  128. package/src/components/ui/Avatar/index.tsx +54 -54
  129. package/src/components/ui/Card/index.tsx +14 -14
  130. package/src/components/ui/Card/styles.ts +37 -37
  131. package/src/components/ui/ContextMenu/index.tsx +79 -79
  132. package/src/components/ui/ContextMenu/styles.ts +119 -119
  133. package/src/components/ui/Label.tsx +90 -90
  134. package/src/components/ui/Message/index.tsx +57 -57
  135. package/src/components/ui/Message/styles.ts +40 -40
  136. package/src/components/ui/index.ts +5 -5
  137. package/src/config/index.ts +14 -14
  138. package/src/helpers/dates.ts +17 -17
  139. package/src/helpers/getScrollbarSize.ts +14 -14
  140. package/src/helpers/index.ts +3 -3
  141. package/src/helpers/numbers.ts +26 -26
  142. package/src/helpers/text.ts +13 -13
  143. package/src/hooks/index.ts +3 -3
  144. package/src/hooks/useElementSize.ts +24 -24
  145. package/src/hooks/useShowArchived.ts +28 -28
  146. package/src/hooks/useWindowSize.ts +20 -20
  147. package/src/index.ts +9 -9
  148. package/src/providers/AuthenticationProvider/helpers.ts +3 -3
  149. package/src/providers/AuthenticationProvider/index.tsx +243 -243
  150. package/src/providers/LoadingProvider/index.tsx +47 -47
  151. package/src/providers/PortalsProvider/index.tsx +54 -54
  152. package/src/providers/PortalsProvider/styles.ts +31 -31
  153. package/src/providers/SettingsProvider/index.tsx +70 -70
  154. package/src/providers/ThemeProvider/ThemeProvider.ts +63 -63
  155. package/src/providers/ThemeProvider/defaultTheme.ts +457 -457
  156. package/src/providers/ThemeProvider/index.ts +4 -4
  157. package/src/providers/ThemeProvider/types.ts +131 -131
  158. package/src/providers/TrackingProvider/index.tsx +71 -71
  159. package/src/providers/UiProviders/index.tsx +68 -68
  160. package/src/providers/UiProviders/styles.ts +10 -10
  161. package/src/providers/hooks.ts +12 -12
  162. package/src/providers/index.ts +8 -8
  163. package/src/services/HttpService.ts +92 -92
  164. package/src/services/WebSocketService.ts +137 -137
  165. package/src/services/advancedRequests.ts +102 -102
  166. package/src/services/base.ts +23 -23
  167. package/src/services/globalSearch.ts +29 -29
  168. package/src/services/hooks.ts +44 -44
  169. package/src/services/index.ts +20 -19
  170. package/src/services/requests/auth.ts +44 -44
  171. package/src/services/requests/generic.ts +62 -62
  172. package/src/services/requests/tracking.ts +12 -12
  173. package/src/services/requests/userProfiles.ts +35 -35
  174. package/src/services/requests/users.ts +28 -28
  175. package/src/services/smartQueries.ts +122 -0
  176. package/src/services/sqlRequests.ts +111 -111
  177. package/src/services/types/auth.ts +131 -131
  178. package/src/services/types/base.ts +10 -10
  179. package/src/services/types/generic.ts +92 -92
  180. package/src/services/types/tracking.ts +39 -39
  181. package/src/services/types/userProfiles.ts +107 -107
  182. package/src/services/types/users.ts +106 -106
  183. package/src/styles/animations.scss +30 -30
  184. package/src/styles/index.scss +42 -42
  185. package/src/typings.d.ts +13 -13
  186. package/tsconfig.json +18 -18
@@ -1,283 +1,283 @@
1
- /* eslint-disable @typescript-eslint/no-explicit-any */
2
-
3
- import * as t from 'io-ts';
4
-
5
- import {
6
- CSSProperties,
7
- Context,
8
- Dispatch,
9
- FC,
10
- MouseEvent,
11
- MouseEventHandler,
12
- ReactNode,
13
- SetStateAction,
14
- } from 'react';
15
-
16
- import { SettingsContextProps } from '../../../providers/SettingsProvider';
17
- import { ThemeColor } from '../../../providers/ThemeProvider/types';
18
-
19
- export type DataGridCellFC = FC<{
20
- onDoubleClick?: MouseEventHandler;
21
- style?: CSSProperties;
22
- }>;
23
-
24
- export type DataGridFooterPredefinedFunction =
25
- | 'average'
26
- | 'avg'
27
- | 'count'
28
- | 'max'
29
- | 'min'
30
- | 'sum';
31
- export type DataGridFooterFunction<R> = (
32
- allRows: R[],
33
- filteredRows: R[],
34
- selectedRows: R[]
35
- ) => ReactNode;
36
-
37
- export type DataGridColumn<R> = {
38
- component?: DataGridCellFC;
39
- editable?: boolean;
40
- excelFormatter?: (value: any) => string;
41
- excelBackgroundColor?: (value: any) => string;
42
- excelValue?: (value: any) => string;
43
- filter?: DataGridFilter;
44
- footer?:
45
- | DataGridFooterFunction<R>
46
- | Record<string, DataGridFooterFunction<R> | null>;
47
- getter?: (row: R) => string | number;
48
- name: string;
49
- order?: number;
50
- propertyName?: keyof R;
51
- render?: (row: R, column: DataGridColumn<R>) => ReactNode | string;
52
- resizable?: boolean;
53
- sortGetter?: (row: R) => string | number;
54
- type?: 'text' | 'number' | 'date';
55
- width?: number;
56
- settingsContext?: Context<SettingsContextProps>;
57
- };
58
-
59
- export type DataGridColumns<R> = Record<string, DataGridColumn<R>>;
60
-
61
- export type DataGridFilters = Record<
62
- string,
63
- DataGridFilter<DataGridFilterType>
64
- >;
65
-
66
- export type DataGridProps<R> = {
67
- name?: string;
68
- className?: string;
69
- rows: R[];
70
- columns: DataGridColumns<R>;
71
- rowKey: keyof R | ((row: R) => string);
72
- selectable?: boolean;
73
- userSelect?: boolean;
74
- editable?: boolean;
75
- onRowDoubleClick?: (row: R, e: MouseEvent) => void;
76
- onSelectionChange?: (keys: string[]) => void;
77
- onSelectedRowsChanged?: (rows: R[]) => void;
78
- getAllIds?: () => Promise<string[]>;
79
- onFiltersChanged?: (filters: DataGridFilters) => void;
80
- onSortsChanged?: (sorts: Record<string, DataGridSort>) => void;
81
- onVisibleRowsChange?: (startIndex: number, length: number) => void;
82
- onCellEdited?: (row: R, columnKey: string, value: any) => void;
83
- rowClassNameGetter?: (row: R | null) => {
84
- className?: string;
85
- style?: CSSProperties;
86
- };
87
- headerRowHeight?: number;
88
- rowHeight?: number;
89
- filter?: boolean;
90
- sort?: boolean;
91
- initialSorts?: Record<string, DataGridSort>;
92
- initialFooters?: Record<string, string>;
93
- onFootersChanged?: (footers: Record<string, string>) => void;
94
- filterValuesLoader?: (
95
- columnKey: string
96
- ) => Promise<(string | number | null)[]>;
97
- // copyTableHandler?: (
98
- // includeHeaders?: boolean,
99
- // includeFooters?: boolean
100
- // ) => Promise<void>;
101
- loadCopyRows?: () => Promise<R[]>;
102
- refresh?: () => void;
103
- headerColor?: ThemeColor;
104
- fixedColumnsCount?: number;
105
- };
106
-
107
- export type DataGridContextProps<R> = DataGridProps<R> & {
108
- editingCell?: [number, number];
109
- setEditingCell: Dispatch<SetStateAction<[number, number]>>;
110
- sortedRows: R[];
111
- selectedRows: R[];
112
- selectedKeys: string[];
113
- setSelectedKeys: (selection: string[]) => void;
114
- sorts?: Record<string, DataGridSort>;
115
- setSorts: (sorts: Record<string, DataGridSort>) => void;
116
- filters?: DataGridFilters;
117
- setFilters: Dispatch<SetStateAction<DataGridFilters>>;
118
- footers?: Record<string, string>;
119
- setFooters: Dispatch<SetStateAction<Record<string, string>>>;
120
- footerFunctions?: Record<string, DataGridFooterFunction<R>>;
121
- visibleColumns: DataGridColumnKeyValuePair<R>[];
122
- copyTable: (
123
- includeHeaders?: boolean,
124
- includeFooters?: boolean
125
- ) => Promise<void>;
126
- setColumnWidth: (key: string, width: number) => void;
127
- saveSettings: (newSettings?: DataGridSettings) => void;
128
- settings: DataGridSettings;
129
- setSettings: Dispatch<SetStateAction<DataGridSettings>>;
130
- length: number;
131
- rowKeyGetter: (row: R) => string;
132
- gridTemplateColumns: string;
133
- resizingColumnKey: string | null;
134
- startResizing: (e: MouseEvent, columnKey: string) => void;
135
- moveResizing: (e: MouseEvent) => void;
136
- endResizing: () => void;
137
- toggleSelection: (key: string) => void;
138
- };
139
-
140
- export type DataGridContext<R> = Context<DataGridContextProps<R>>;
141
-
142
- export const dataGridSettingCodec = t.partial(
143
- {
144
- width: t.number,
145
- order: t.number,
146
- },
147
- 'DataGridSetting'
148
- );
149
- export const dataGridSettingsCodec = t.record(
150
- t.string,
151
- dataGridSettingCodec,
152
- 'DataGridSettings'
153
- );
154
- export const dataGridSettingsByNameCodec = t.record(
155
- t.string,
156
- dataGridSettingsCodec,
157
- 'DataGridSettingsByName'
158
- );
159
-
160
- export type DataGridSetting = t.TypeOf<typeof dataGridSettingCodec>;
161
- export type DataGridSettings = t.TypeOf<typeof dataGridSettingsCodec>;
162
- export type DataGridSettingsByName = t.TypeOf<
163
- typeof dataGridSettingsByNameCodec
164
- >;
165
- export type DataGridSettingsTuple = [string, DataGridSetting];
166
- export type DataGridSettingsArray = DataGridSettingsTuple[];
167
- export type DataGridColumnKeyValuePair<R> = [string, DataGridColumn<R>];
168
-
169
- export type DataGridCellProps<R> = {
170
- row: R;
171
- rowIndex: number;
172
- columnKey: string;
173
- columnIndex: number;
174
- column: DataGridColumn<R>;
175
- context: DataGridContext<R>;
176
- className?: string;
177
- style?: CSSProperties;
178
- userSelect?: boolean;
179
- };
180
-
181
- export type DataGridHeaderCellProps<R> = {
182
- columnKey: string;
183
- columnIndex: number;
184
- column: DataGridColumn<R>;
185
- context: DataGridContext<R>;
186
- onFilterButtonClicked?: (columnKey: string) => void;
187
- isFilterOpen?: boolean;
188
- };
189
-
190
- export type DataGridSort = 'asc' | 'desc';
191
-
192
- export type DataGridFilterPredicate<T> = (valueToVerify: T) => boolean;
193
- export type DataGridFilterPredicateBuilder<T> = (
194
- ...filterValues: T[]
195
- ) => DataGridFilterPredicate<T>;
196
-
197
- export type DataGridFilterOperators<K extends string, T> = {
198
- [key in K]: DataGridFilterPredicateBuilder<T>;
199
- };
200
-
201
- export type DataGridFilterPredicates = {
202
- date: DataGridFilterOperators<
203
- 'before' | 'after' | 'equals' | 'notEquals' | 'inRange' | 'inArray',
204
- string
205
- >;
206
- text: DataGridFilterOperators<
207
- | 'contains'
208
- | 'notContains'
209
- | 'equals'
210
- | 'notEquals'
211
- | 'startsWith'
212
- | 'endsWith'
213
- | 'inArray',
214
- string
215
- >;
216
- number: DataGridFilterOperators<
217
- | 'equals'
218
- | 'notEquals'
219
- | 'lessThan'
220
- | 'lessThanOrEqual'
221
- | 'greaterThan'
222
- | 'greaterThanOrEqual'
223
- | 'inRange'
224
- | 'inArray',
225
- number
226
- >;
227
- };
228
-
229
- export type DataGridFilterType = keyof DataGridFilterPredicates;
230
- export type DataGridFilterDataType<T extends DataGridFilterType> =
231
- DataGridFilterPredicates[T] extends DataGridFilterOperators<string, infer U>
232
- ? U
233
- : never;
234
-
235
- export type DataGridFilterGetter<T extends DataGridFilterType> = (
236
- value: any
237
- ) => DataGridFilterDataType<T> | null;
238
- export type DataGridFilterRenderer = (value: any) => ReactNode;
239
- export type DataGridFilterFormatter = (value: any) => string;
240
-
241
- export type DataGridFilterOperator<T extends DataGridFilterType> =
242
- DataGridFilterPredicates[T] extends DataGridFilterOperators<infer K, any>
243
- ? K
244
- : never;
245
-
246
- export type DataGridFilter<T extends string = DataGridFilterType> =
247
- T extends DataGridFilterType
248
- ? {
249
- type: T;
250
- operator: DataGridFilterOperator<T>;
251
- getter: DataGridFilterGetter<T>;
252
- renderer?: DataGridFilterRenderer;
253
- formatter?: DataGridFilterFormatter;
254
- values: (DataGridFilterDataType<T> | null)[];
255
- }
256
- : never;
257
-
258
- export type DataGridFilterGroup = {
259
- name: string;
260
- displayValue: DataGridFilterValue;
261
- values?: DataGridFilterValue[];
262
- groups?: DataGridFilterGroup[];
263
- };
264
-
265
- export type DataGridFilterValue = string | number | null;
266
-
267
- export type DataGridFilterCheckbox = {
268
- displayValue: ReactNode;
269
- title: string;
270
- values: DataGridFilterValue[];
271
- level: number;
272
- };
273
-
274
- export type DataGridRowTemplateProps<R> = {
275
- selected?: boolean;
276
- toggleSelection?: () => void;
277
- context: DataGridContext<R>;
278
- };
279
-
280
- export type DataGridRefProps = {
281
- refresh: () => void;
282
- setSelectedKeys: (keys: string[]) => void;
283
- };
1
+ /* eslint-disable @typescript-eslint/no-explicit-any */
2
+
3
+ import * as t from 'io-ts';
4
+
5
+ import {
6
+ CSSProperties,
7
+ Context,
8
+ Dispatch,
9
+ FC,
10
+ MouseEvent,
11
+ MouseEventHandler,
12
+ ReactNode,
13
+ SetStateAction,
14
+ } from 'react';
15
+
16
+ import { SettingsContextProps } from '../../../providers/SettingsProvider';
17
+ import { ThemeColor } from '../../../providers/ThemeProvider/types';
18
+
19
+ export type DataGridCellFC = FC<{
20
+ onDoubleClick?: MouseEventHandler;
21
+ style?: CSSProperties;
22
+ }>;
23
+
24
+ export type DataGridFooterPredefinedFunction =
25
+ | 'average'
26
+ | 'avg'
27
+ | 'count'
28
+ | 'max'
29
+ | 'min'
30
+ | 'sum';
31
+ export type DataGridFooterFunction<R> = (
32
+ allRows: R[],
33
+ filteredRows: R[],
34
+ selectedRows: R[]
35
+ ) => ReactNode;
36
+
37
+ export type DataGridColumn<R> = {
38
+ component?: DataGridCellFC;
39
+ editable?: boolean;
40
+ excelFormatter?: (value: any) => string;
41
+ excelBackgroundColor?: (value: any) => string;
42
+ excelValue?: (value: any) => string;
43
+ filter?: DataGridFilter;
44
+ footer?:
45
+ | DataGridFooterFunction<R>
46
+ | Record<string, DataGridFooterFunction<R> | null>;
47
+ getter?: (row: R) => string | number;
48
+ name: string;
49
+ order?: number;
50
+ propertyName?: keyof R;
51
+ render?: (row: R, column: DataGridColumn<R>) => ReactNode | string;
52
+ resizable?: boolean;
53
+ sortGetter?: (row: R) => string | number;
54
+ type?: 'text' | 'number' | 'date';
55
+ width?: number;
56
+ settingsContext?: Context<SettingsContextProps>;
57
+ };
58
+
59
+ export type DataGridColumns<R> = Record<string, DataGridColumn<R>>;
60
+
61
+ export type DataGridFilters = Record<
62
+ string,
63
+ DataGridFilter<DataGridFilterType>
64
+ >;
65
+
66
+ export type DataGridProps<R> = {
67
+ name?: string;
68
+ className?: string;
69
+ rows: R[];
70
+ columns: DataGridColumns<R>;
71
+ rowKey: keyof R | ((row: R) => string);
72
+ selectable?: boolean;
73
+ userSelect?: boolean;
74
+ editable?: boolean;
75
+ onRowDoubleClick?: (row: R, e: MouseEvent) => void;
76
+ onSelectionChange?: (keys: string[]) => void;
77
+ onSelectedRowsChanged?: (rows: R[]) => void;
78
+ getAllIds?: () => Promise<string[]>;
79
+ onFiltersChanged?: (filters: DataGridFilters) => void;
80
+ onSortsChanged?: (sorts: Record<string, DataGridSort>) => void;
81
+ onVisibleRowsChange?: (startIndex: number, length: number) => void;
82
+ onCellEdited?: (row: R, columnKey: string, value: any) => void;
83
+ rowClassNameGetter?: (row: R | null) => {
84
+ className?: string;
85
+ style?: CSSProperties;
86
+ };
87
+ headerRowHeight?: number;
88
+ rowHeight?: number;
89
+ filter?: boolean;
90
+ sort?: boolean;
91
+ initialSorts?: Record<string, DataGridSort>;
92
+ initialFooters?: Record<string, string>;
93
+ onFootersChanged?: (footers: Record<string, string>) => void;
94
+ filterValuesLoader?: (
95
+ columnKey: string
96
+ ) => Promise<(string | number | null)[]>;
97
+ // copyTableHandler?: (
98
+ // includeHeaders?: boolean,
99
+ // includeFooters?: boolean
100
+ // ) => Promise<void>;
101
+ loadCopyRows?: () => Promise<R[]>;
102
+ refresh?: () => void;
103
+ headerColor?: ThemeColor;
104
+ fixedColumnsCount?: number;
105
+ };
106
+
107
+ export type DataGridContextProps<R> = DataGridProps<R> & {
108
+ editingCell?: [number, number];
109
+ setEditingCell: Dispatch<SetStateAction<[number, number]>>;
110
+ sortedRows: R[];
111
+ selectedRows: R[];
112
+ selectedKeys: string[];
113
+ setSelectedKeys: (selection: string[]) => void;
114
+ sorts?: Record<string, DataGridSort>;
115
+ setSorts: (sorts: Record<string, DataGridSort>) => void;
116
+ filters?: DataGridFilters;
117
+ setFilters: Dispatch<SetStateAction<DataGridFilters>>;
118
+ footers?: Record<string, string>;
119
+ setFooters: Dispatch<SetStateAction<Record<string, string>>>;
120
+ footerFunctions?: Record<string, DataGridFooterFunction<R>>;
121
+ visibleColumns: DataGridColumnKeyValuePair<R>[];
122
+ copyTable: (
123
+ includeHeaders?: boolean,
124
+ includeFooters?: boolean
125
+ ) => Promise<void>;
126
+ setColumnWidth: (key: string, width: number) => void;
127
+ saveSettings: (newSettings?: DataGridSettings) => void;
128
+ settings: DataGridSettings;
129
+ setSettings: Dispatch<SetStateAction<DataGridSettings>>;
130
+ length: number;
131
+ rowKeyGetter: (row: R) => string;
132
+ gridTemplateColumns: string;
133
+ resizingColumnKey: string | null;
134
+ startResizing: (e: MouseEvent, columnKey: string) => void;
135
+ moveResizing: (e: MouseEvent) => void;
136
+ endResizing: () => void;
137
+ toggleSelection: (key: string) => void;
138
+ };
139
+
140
+ export type DataGridContext<R> = Context<DataGridContextProps<R>>;
141
+
142
+ export const dataGridSettingCodec = t.partial(
143
+ {
144
+ width: t.number,
145
+ order: t.number,
146
+ },
147
+ 'DataGridSetting'
148
+ );
149
+ export const dataGridSettingsCodec = t.record(
150
+ t.string,
151
+ dataGridSettingCodec,
152
+ 'DataGridSettings'
153
+ );
154
+ export const dataGridSettingsByNameCodec = t.record(
155
+ t.string,
156
+ dataGridSettingsCodec,
157
+ 'DataGridSettingsByName'
158
+ );
159
+
160
+ export type DataGridSetting = t.TypeOf<typeof dataGridSettingCodec>;
161
+ export type DataGridSettings = t.TypeOf<typeof dataGridSettingsCodec>;
162
+ export type DataGridSettingsByName = t.TypeOf<
163
+ typeof dataGridSettingsByNameCodec
164
+ >;
165
+ export type DataGridSettingsTuple = [string, DataGridSetting];
166
+ export type DataGridSettingsArray = DataGridSettingsTuple[];
167
+ export type DataGridColumnKeyValuePair<R> = [string, DataGridColumn<R>];
168
+
169
+ export type DataGridCellProps<R> = {
170
+ row: R;
171
+ rowIndex: number;
172
+ columnKey: string;
173
+ columnIndex: number;
174
+ column: DataGridColumn<R>;
175
+ context: DataGridContext<R>;
176
+ className?: string;
177
+ style?: CSSProperties;
178
+ userSelect?: boolean;
179
+ };
180
+
181
+ export type DataGridHeaderCellProps<R> = {
182
+ columnKey: string;
183
+ columnIndex: number;
184
+ column: DataGridColumn<R>;
185
+ context: DataGridContext<R>;
186
+ onFilterButtonClicked?: (columnKey: string) => void;
187
+ isFilterOpen?: boolean;
188
+ };
189
+
190
+ export type DataGridSort = 'asc' | 'desc';
191
+
192
+ export type DataGridFilterPredicate<T> = (valueToVerify: T) => boolean;
193
+ export type DataGridFilterPredicateBuilder<T> = (
194
+ ...filterValues: T[]
195
+ ) => DataGridFilterPredicate<T>;
196
+
197
+ export type DataGridFilterOperators<K extends string, T> = {
198
+ [key in K]: DataGridFilterPredicateBuilder<T>;
199
+ };
200
+
201
+ export type DataGridFilterPredicates = {
202
+ date: DataGridFilterOperators<
203
+ 'before' | 'after' | 'equals' | 'notEquals' | 'inRange' | 'inArray',
204
+ string
205
+ >;
206
+ text: DataGridFilterOperators<
207
+ | 'contains'
208
+ | 'notContains'
209
+ | 'equals'
210
+ | 'notEquals'
211
+ | 'startsWith'
212
+ | 'endsWith'
213
+ | 'inArray',
214
+ string
215
+ >;
216
+ number: DataGridFilterOperators<
217
+ | 'equals'
218
+ | 'notEquals'
219
+ | 'lessThan'
220
+ | 'lessThanOrEqual'
221
+ | 'greaterThan'
222
+ | 'greaterThanOrEqual'
223
+ | 'inRange'
224
+ | 'inArray',
225
+ number
226
+ >;
227
+ };
228
+
229
+ export type DataGridFilterType = keyof DataGridFilterPredicates;
230
+ export type DataGridFilterDataType<T extends DataGridFilterType> =
231
+ DataGridFilterPredicates[T] extends DataGridFilterOperators<string, infer U>
232
+ ? U
233
+ : never;
234
+
235
+ export type DataGridFilterGetter<T extends DataGridFilterType> = (
236
+ value: any
237
+ ) => DataGridFilterDataType<T> | null;
238
+ export type DataGridFilterRenderer = (value: any) => ReactNode;
239
+ export type DataGridFilterFormatter = (value: any) => string;
240
+
241
+ export type DataGridFilterOperator<T extends DataGridFilterType> =
242
+ DataGridFilterPredicates[T] extends DataGridFilterOperators<infer K, any>
243
+ ? K
244
+ : never;
245
+
246
+ export type DataGridFilter<T extends string = DataGridFilterType> =
247
+ T extends DataGridFilterType
248
+ ? {
249
+ type: T;
250
+ operator: DataGridFilterOperator<T>;
251
+ getter: DataGridFilterGetter<T>;
252
+ renderer?: DataGridFilterRenderer;
253
+ formatter?: DataGridFilterFormatter;
254
+ values: (DataGridFilterDataType<T> | null)[];
255
+ }
256
+ : never;
257
+
258
+ export type DataGridFilterGroup = {
259
+ name: string;
260
+ displayValue: DataGridFilterValue;
261
+ values?: DataGridFilterValue[];
262
+ groups?: DataGridFilterGroup[];
263
+ };
264
+
265
+ export type DataGridFilterValue = string | number | null;
266
+
267
+ export type DataGridFilterCheckbox = {
268
+ displayValue: ReactNode;
269
+ title: string;
270
+ values: DataGridFilterValue[];
271
+ level: number;
272
+ };
273
+
274
+ export type DataGridRowTemplateProps<R> = {
275
+ selected?: boolean;
276
+ toggleSelection?: () => void;
277
+ context: DataGridContext<R>;
278
+ };
279
+
280
+ export type DataGridRefProps = {
281
+ refresh: () => void;
282
+ setSelectedKeys: (keys: string[]) => void;
283
+ };