@addev-be/ui 0.15.0 → 0.15.1

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 (215) 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 +134 -134
  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 +83 -77
  56. package/src/components/data/DataGrid/DataGridColumnsModal/helpers.ts +9 -9
  57. package/src/components/data/DataGrid/DataGridColumnsModal/hooks.tsx +59 -59
  58. package/src/components/data/DataGrid/DataGridColumnsModal/index.tsx +182 -182
  59. package/src/components/data/DataGrid/DataGridColumnsModal/styles.ts +104 -104
  60. package/src/components/data/DataGrid/DataGridEditableCell/CheckboxEditableCell.tsx +38 -38
  61. package/src/components/data/DataGrid/DataGridEditableCell/DateEditableCell.tsx +39 -39
  62. package/src/components/data/DataGrid/DataGridEditableCell/NumberEditableCell.tsx +68 -68
  63. package/src/components/data/DataGrid/DataGridEditableCell/TextEditableCell.tsx +38 -38
  64. package/src/components/data/DataGrid/DataGridEditableCell/index.tsx +106 -105
  65. package/src/components/data/DataGrid/DataGridEditableCell/styles.ts +35 -0
  66. package/src/components/data/DataGrid/DataGridEditableCell/types.ts +17 -15
  67. package/src/components/data/DataGrid/DataGridFilterMenu/FilterValuesScroller.tsx +131 -131
  68. package/src/components/data/DataGrid/DataGridFilterMenu/hooks.tsx +81 -81
  69. package/src/components/data/DataGrid/DataGridFilterMenu/index.tsx +376 -376
  70. package/src/components/data/DataGrid/DataGridFilterMenu/styles.ts +97 -97
  71. package/src/components/data/DataGrid/DataGridFooter.tsx +45 -45
  72. package/src/components/data/DataGrid/DataGridHeader.tsx +173 -173
  73. package/src/components/data/DataGrid/DataGridHeaderCell.tsx +115 -115
  74. package/src/components/data/DataGrid/DataGridRowTemplate.tsx +80 -78
  75. package/src/components/data/DataGrid/FilterModalContent/index.tsx +136 -136
  76. package/src/components/data/DataGrid/FilterModalContent/styles.ts +22 -22
  77. package/src/components/data/DataGrid/constants.ts +6 -6
  78. package/src/components/data/DataGrid/helpers/columns.tsx +384 -384
  79. package/src/components/data/DataGrid/helpers/filters.ts +287 -287
  80. package/src/components/data/DataGrid/helpers/index.ts +2 -2
  81. package/src/components/data/DataGrid/hooks/index.ts +29 -29
  82. package/src/components/data/DataGrid/hooks/useDataGrid.tsx +378 -378
  83. package/src/components/data/DataGrid/hooks/useDataGridChangedRows.ts +56 -56
  84. package/src/components/data/DataGrid/hooks/useDataGridCopy.ts +174 -174
  85. package/src/components/data/DataGrid/hooks/useDataGridSettings.ts +48 -48
  86. package/src/components/data/DataGrid/index.tsx +110 -110
  87. package/src/components/data/DataGrid/styles.ts +369 -390
  88. package/src/components/data/DataGrid/types.ts +367 -367
  89. package/src/components/data/SmartQueryDataGrid/helpers/columns.tsx +333 -333
  90. package/src/components/data/SmartQueryDataGrid/helpers/hooks.ts +41 -41
  91. package/src/components/data/SmartQueryDataGrid/helpers/index.ts +2 -2
  92. package/src/components/data/SmartQueryDataGrid/helpers/smartQueries.ts +17 -17
  93. package/src/components/data/SmartQueryDataGrid/hooks.ts +75 -75
  94. package/src/components/data/SmartQueryDataGrid/index.tsx +338 -338
  95. package/src/components/data/SmartQueryDataGrid/types.ts +45 -45
  96. package/src/components/data/SqlRequestDataGrid/SqlRequestForeignListEditableCell.tsx +16 -16
  97. package/src/components/data/SqlRequestDataGrid/helpers/columns.tsx +478 -407
  98. package/src/components/data/SqlRequestDataGrid/helpers/index.ts +2 -2
  99. package/src/components/data/SqlRequestDataGrid/helpers/sqlRequests.ts +16 -16
  100. package/src/components/data/SqlRequestDataGrid/index.tsx +402 -402
  101. package/src/components/data/SqlRequestDataGrid/styles.ts +15 -15
  102. package/src/components/data/SqlRequestDataGrid/types.ts +74 -71
  103. package/src/components/data/SqlRequestForeignList/index.tsx +259 -201
  104. package/src/components/data/SqlRequestForeignList/styles.ts +42 -38
  105. package/src/components/data/SqlRequestForeignList/types.ts +34 -31
  106. package/src/components/data/SqlRequestGrid/filters/FiltersSidebar.tsx +110 -110
  107. package/src/components/data/SqlRequestGrid/filters/styles.ts +88 -88
  108. package/src/components/data/SqlRequestGrid/helpers/index.ts +1 -1
  109. package/src/components/data/SqlRequestGrid/helpers/sqlRequests.ts +16 -16
  110. package/src/components/data/SqlRequestGrid/index.tsx +316 -316
  111. package/src/components/data/SqlRequestGrid/styles.ts +20 -20
  112. package/src/components/data/SqlRequestGrid/types.ts +75 -75
  113. package/src/components/data/VirtualScroller/hooks.ts +71 -71
  114. package/src/components/data/VirtualScroller/index.tsx +91 -89
  115. package/src/components/data/VirtualScroller/styles.ts +58 -58
  116. package/src/components/data/VirtualScroller/types.ts +12 -12
  117. package/src/components/data/index.ts +23 -23
  118. package/src/components/forms/AutoTextArea.tsx +41 -41
  119. package/src/components/forms/Button.tsx +133 -133
  120. package/src/components/forms/Form/Checkbox.tsx +13 -13
  121. package/src/components/forms/Form/FormGroup.tsx +27 -27
  122. package/src/components/forms/Form/Input.tsx +13 -13
  123. package/src/components/forms/Form/InputWithLabel.tsx +18 -18
  124. package/src/components/forms/Form/Select.tsx +76 -67
  125. package/src/components/forms/Form/TextArea.tsx +13 -13
  126. package/src/components/forms/Form/index.tsx +37 -37
  127. package/src/components/forms/Form/styles.ts +101 -101
  128. package/src/components/forms/Form/types.ts +7 -7
  129. package/src/components/forms/IconButton.tsx +57 -57
  130. package/src/components/forms/IndeterminateCheckbox.tsx +46 -46
  131. package/src/components/forms/Select.tsx +35 -35
  132. package/src/components/forms/VerticalLabel.tsx +20 -20
  133. package/src/components/forms/index.ts +8 -8
  134. package/src/components/forms/styles.ts +31 -31
  135. package/src/components/index.ts +6 -6
  136. package/src/components/layout/Columns.ts +20 -20
  137. package/src/components/layout/Dropdown/index.tsx +113 -113
  138. package/src/components/layout/Dropdown/styles.ts +45 -45
  139. package/src/components/layout/Grid/index.tsx +8 -8
  140. package/src/components/layout/Grid/styles.ts +34 -34
  141. package/src/components/layout/Loading/index.tsx +29 -29
  142. package/src/components/layout/Loading/styles.ts +29 -29
  143. package/src/components/layout/Masonry/index.tsx +29 -29
  144. package/src/components/layout/Masonry/styles.ts +20 -20
  145. package/src/components/layout/Modal/index.tsx +51 -51
  146. package/src/components/layout/Modal/styles.ts +121 -121
  147. package/src/components/layout/index.ts +6 -6
  148. package/src/components/search/HighlightedText.tsx +37 -37
  149. package/src/components/search/QuickSearchBar.tsx +86 -86
  150. package/src/components/search/QuickSearchResults.tsx +86 -86
  151. package/src/components/search/index.ts +9 -9
  152. package/src/components/search/styles.ts +96 -96
  153. package/src/components/search/types.ts +26 -26
  154. package/src/components/ui/Avatar/index.tsx +54 -54
  155. package/src/components/ui/Card/index.tsx +14 -14
  156. package/src/components/ui/Card/styles.ts +37 -37
  157. package/src/components/ui/ContextMenu/index.tsx +79 -79
  158. package/src/components/ui/ContextMenu/styles.ts +119 -119
  159. package/src/components/ui/Ellipsis.tsx +32 -0
  160. package/src/components/ui/Label.tsx +90 -90
  161. package/src/components/ui/Message/index.tsx +57 -57
  162. package/src/components/ui/Message/styles.ts +40 -40
  163. package/src/components/ui/index.ts +6 -5
  164. package/src/config/index.ts +14 -14
  165. package/src/helpers/dates.ts +17 -17
  166. package/src/helpers/getScrollbarSize.ts +14 -14
  167. package/src/helpers/index.ts +3 -3
  168. package/src/helpers/numbers.ts +63 -63
  169. package/src/helpers/text.ts +13 -13
  170. package/src/hooks/index.ts +3 -3
  171. package/src/hooks/useElementSize.ts +24 -24
  172. package/src/hooks/useShowArchived.ts +28 -28
  173. package/src/hooks/useWindowSize.ts +20 -20
  174. package/src/index.ts +9 -9
  175. package/src/providers/AuthenticationProvider/helpers.ts +3 -3
  176. package/src/providers/AuthenticationProvider/index.tsx +243 -243
  177. package/src/providers/LoadingProvider/index.tsx +47 -47
  178. package/src/providers/PortalsProvider/index.tsx +54 -54
  179. package/src/providers/PortalsProvider/styles.ts +31 -31
  180. package/src/providers/SettingsProvider/index.tsx +70 -70
  181. package/src/providers/ThemeProvider/ThemeProvider.ts +63 -63
  182. package/src/providers/ThemeProvider/defaultTheme.ts +457 -457
  183. package/src/providers/ThemeProvider/helpers.ts +11 -11
  184. package/src/providers/ThemeProvider/index.ts +4 -4
  185. package/src/providers/ThemeProvider/types.ts +131 -131
  186. package/src/providers/TrackingProvider/index.tsx +71 -71
  187. package/src/providers/UiProviders/index.tsx +68 -68
  188. package/src/providers/UiProviders/styles.ts +10 -10
  189. package/src/providers/hooks.ts +12 -12
  190. package/src/providers/index.ts +8 -8
  191. package/src/services/HttpService.ts +92 -92
  192. package/src/services/WebSocketService.ts +137 -137
  193. package/src/services/advancedRequests.ts +102 -102
  194. package/src/services/base.ts +23 -23
  195. package/src/services/globalSearch.ts +29 -29
  196. package/src/services/hooks.ts +44 -44
  197. package/src/services/index.ts +21 -21
  198. package/src/services/requests/auth.ts +44 -44
  199. package/src/services/requests/generic.ts +62 -62
  200. package/src/services/requests/tracking.ts +12 -12
  201. package/src/services/requests/userProfiles.ts +35 -35
  202. package/src/services/requests/users.ts +28 -28
  203. package/src/services/smartQueries.ts +122 -122
  204. package/src/services/sqlRequests.ts +111 -111
  205. package/src/services/types/auth.ts +131 -131
  206. package/src/services/types/base.ts +10 -10
  207. package/src/services/types/generic.ts +96 -96
  208. package/src/services/types/tracking.ts +39 -39
  209. package/src/services/types/userProfiles.ts +107 -107
  210. package/src/services/types/users.ts +106 -106
  211. package/src/services/updateSqlRequests.ts +34 -34
  212. package/src/styles/animations.scss +30 -30
  213. package/src/styles/index.scss +42 -42
  214. package/src/typings.d.ts +13 -13
  215. package/tsconfig.json +18 -18
@@ -1,367 +1,367 @@
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 { DataGridEditableCellFC } from './DataGridEditableCell/types';
17
- import { ThemeColor } from '../../../providers/ThemeProvider/types';
18
-
19
- export type DataGridCellFCProps = {
20
- onDoubleClick?: MouseEventHandler;
21
- style?: CSSProperties;
22
- $color?: ThemeColor;
23
- $textAlign?: 'left' | 'right' | 'center';
24
- $userSelect?: boolean;
25
- };
26
-
27
- export type DataGridCellFC = FC<DataGridCellFCProps>;
28
-
29
- export type DataGridFooterPredefinedFunction =
30
- | 'average'
31
- | 'avg'
32
- | 'count'
33
- | 'max'
34
- | 'min'
35
- | 'sum';
36
- export type DataGridFooterFunction<R> = (
37
- allRows: R[],
38
- filteredRows: R[],
39
- selectedRows: R[]
40
- ) => ReactNode;
41
-
42
- type ExcelOptions = {
43
- formatter?: (value: any) => string;
44
- colorGetter?: (value: any) => string;
45
- valueGetter?: (value: any) => string;
46
- };
47
-
48
- type CommonGridColumnProps<R, T> = {
49
- key: string;
50
- component?: DataGridCellFC;
51
- color?: ThemeColor;
52
- excelOptions?: ExcelOptions;
53
- textAlign?: 'left' | 'right' | 'center';
54
- filter?: DataGridFilter;
55
- footer?:
56
- | DataGridFooterFunction<R>
57
- | Record<string, DataGridFooterFunction<R> | null>;
58
- name: ReactNode;
59
- order?: number;
60
- getter: (row: R) => T;
61
- render?: (row: R, column: DataGridColumn<R>) => ReactNode | string;
62
- resizable?: boolean;
63
- sortGetter?: (row: R) => string | number;
64
- width?: number;
65
- };
66
-
67
- export type EditableDataGridColumn<R, T> = CommonGridColumnProps<R, T> & {
68
- editable?: boolean;
69
- editComponent?: DataGridEditableCellFC<R, T>;
70
- partialRowGetter?: (row: R, value: T) => Partial<R>;
71
- };
72
-
73
- export type DataGridTextColumn<R> = EditableDataGridColumn<R, string> & {
74
- type: 'text';
75
- };
76
-
77
- export type DataGridNumberColumn<R> = EditableDataGridColumn<R, number> & {
78
- type: 'number';
79
- decimals?: number;
80
- currency?: string | ((row: R) => string);
81
- };
82
-
83
- export type DataGridDateColumn<R> = EditableDataGridColumn<R, Date> & {
84
- type: 'date';
85
- };
86
-
87
- export type DataGridCheckboxColumn<R> = EditableDataGridColumn<R, boolean> & {
88
- type: 'checkbox';
89
- };
90
-
91
- export type DataGridSelectColumn<R, T = any> = EditableDataGridColumn<
92
- R,
93
- T | null
94
- > & {
95
- type: 'select';
96
- items: T[];
97
- itemKey: (item: T) => string;
98
- itemLabel: (item: T) => string;
99
- };
100
-
101
- export type DataGridForeignListColumn<R> = EditableDataGridColumn<
102
- R,
103
- string | null
104
- > & {
105
- type: 'foreignList';
106
- };
107
-
108
- export type DataGridColorColumn<R> = EditableDataGridColumn<R, string> & {
109
- type: 'color';
110
- };
111
-
112
- export type DataGridColumn<R> =
113
- | DataGridTextColumn<R>
114
- | DataGridNumberColumn<R>
115
- | DataGridDateColumn<R>
116
- | DataGridCheckboxColumn<R>
117
- | DataGridSelectColumn<R>
118
- | DataGridForeignListColumn<R>
119
- | DataGridColorColumn<R>;
120
-
121
- export type DataGridColumnWithFilter<R> = DataGridColumn<R> & {
122
- filter: DataGridFilter;
123
- };
124
-
125
- export type DataGridColumns<R> = DataGridColumn<R>[];
126
-
127
- export type DataGridFilters = Record<
128
- string,
129
- DataGridFilter<DataGridFilterType>
130
- >;
131
-
132
- export type DataGridProps<R> = {
133
- name?: string;
134
- className?: string;
135
- rows: R[];
136
- setRows?: Dispatch<SetStateAction<R[]>>;
137
- columns: DataGridColumns<R>;
138
- rowKey: keyof R | ((row: R) => string);
139
- selectable?: boolean;
140
- userSelect?: boolean;
141
- editable?: boolean;
142
- onRowDoubleClick?: (row: R, e: MouseEvent) => void;
143
- onSelectionChange?: (keys: string[]) => void;
144
- onSelectedRowsChanged?: (rows: R[]) => void;
145
- getAllIds?: () => Promise<string[]>;
146
- onFiltersChanged?: (filters: DataGridFilters) => void;
147
- onSortsChanged?: (sorts: Record<string, DataGridSort>) => void;
148
- onVisibleRowsChange?: (startIndex: number, length: number) => void;
149
- onCellEdited?: (row: R, columnKey: string, value: any) => void;
150
- rowClassNameGetter?: (row: R | null) => {
151
- className?: string;
152
- style?: CSSProperties;
153
- };
154
- headerRowHeight?: number;
155
- rowHeight?: number;
156
- filter?: boolean;
157
- sort?: boolean;
158
- initialSorts?: Record<string, DataGridSort>;
159
- initialFooters?: Record<string, string>;
160
- onFootersChanged?: (footers: Record<string, string>) => void;
161
- filterValuesLoader?: (
162
- columnKey: string
163
- ) => Promise<(string | number | null)[]>;
164
- loadCopyRows?: () => Promise<R[]>;
165
- refresh?: () => void;
166
- headerColor?: ThemeColor;
167
- fixedColumnsCount?: number;
168
- onRowEdited?: (row: R, columnKey: keyof R, value: any) => void;
169
- onSaveClicked?: (
170
- addedRows: DataGridEditedRows<R>,
171
- editedRows: DataGridEditedRows<R>
172
- ) => Promise<string[]>;
173
- onAddClicked?: () => Promise<R>;
174
- };
175
-
176
- export type DataGridContextProps<R> = DataGridProps<R> & {
177
- setRows: Dispatch<SetStateAction<R[]>>;
178
- editingCell?: [number, number];
179
- setEditingCell: Dispatch<SetStateAction<[number, number]>>;
180
- sortedRows: R[];
181
- selectedRows: R[];
182
- selectedKeys: string[];
183
- setSelectedKeys: (selection: string[]) => void;
184
- sorts?: Record<string, DataGridSort>;
185
- setSorts: (sorts: Record<string, DataGridSort>) => void;
186
- filters?: DataGridFilters;
187
- setFilters: Dispatch<SetStateAction<DataGridFilters>>;
188
- footers?: Record<string, string>;
189
- setFooters: Dispatch<SetStateAction<Record<string, string>>>;
190
- footerFunctions?: Record<string, DataGridFooterFunction<R>>;
191
- visibleColumns: DataGridColumns<R>;
192
- copyTable: (
193
- includeHeaders?: boolean,
194
- includeFooters?: boolean
195
- ) => Promise<void>;
196
- setColumnWidth: (key: string, width: number) => void;
197
- saveSettings: (newSettings?: DataGridSettings) => void;
198
- settings: DataGridSettings;
199
- setSettings: Dispatch<SetStateAction<DataGridSettings>>;
200
- length: number;
201
- rowKeyGetter: (row: R) => string;
202
- gridTemplateColumns: string;
203
- resizingColumnKey: string | null;
204
- startResizing: (e: MouseEvent, columnKey: string) => void;
205
- moveResizing: (e: MouseEvent) => void;
206
- endResizing: () => void;
207
- toggleSelection: (key: string) => void;
208
-
209
- addedRows: DataGridEditedRows<R>;
210
- updatedRows: DataGridEditedRows<R>;
211
- editRow: (key: string, row: Partial<R>) => void;
212
- addRow: (key: string, row: R) => void;
213
- updateRow: (key: string, row: Partial<R>) => void;
214
- clearChangedRows: (keys?: string[]) => void;
215
- };
216
-
217
- export type DataGridContext<R> = Context<DataGridContextProps<R>>;
218
-
219
- export const dataGridSettingCodec = t.partial(
220
- {
221
- width: t.number,
222
- order: t.number,
223
- },
224
- 'DataGridSetting'
225
- );
226
- export const dataGridSettingsCodec = t.record(
227
- t.string,
228
- dataGridSettingCodec,
229
- 'DataGridSettings'
230
- );
231
- export const dataGridSettingsByNameCodec = t.record(
232
- t.string,
233
- dataGridSettingsCodec,
234
- 'DataGridSettingsByName'
235
- );
236
-
237
- export type DataGridSetting = t.TypeOf<typeof dataGridSettingCodec>;
238
- export type DataGridSettings = t.TypeOf<typeof dataGridSettingsCodec>;
239
- export type DataGridSettingsByName = t.TypeOf<
240
- typeof dataGridSettingsByNameCodec
241
- >;
242
- export type DataGridSettingsTuple = [string, DataGridSetting];
243
- export type DataGridSettingsArray = DataGridSettingsTuple[];
244
- export type DataGridColumnKeyValuePair<R> = [string, DataGridColumn<R>];
245
-
246
- export type DataGridCellProps<R> = {
247
- row: R;
248
- rowIndex: number;
249
- columnKey: string;
250
- columnIndex: number;
251
- column: DataGridColumn<R>;
252
- context: DataGridContext<R>;
253
- className?: string;
254
- style?: CSSProperties;
255
- userSelect?: boolean;
256
- color?: ThemeColor;
257
- };
258
- export type EditableDataGridCellProps<R, T> = DataGridCellProps<R> & {
259
- column: EditableDataGridColumn<R, T>;
260
- };
261
-
262
- export type DataGridHeaderCellProps<R> = {
263
- columnKey: string;
264
- columnIndex: number;
265
- column: DataGridColumn<R>;
266
- context: DataGridContext<R>;
267
- onFilterButtonClicked?: (columnKey: string) => void;
268
- isFilterOpen?: boolean;
269
- color?: ThemeColor;
270
- };
271
-
272
- export type DataGridSort = 'asc' | 'desc';
273
-
274
- export type DataGridFilterPredicate<T> = (valueToVerify: T) => boolean;
275
- export type DataGridFilterPredicateBuilder<T> = (
276
- ...filterValues: T[]
277
- ) => DataGridFilterPredicate<T>;
278
-
279
- export type DataGridFilterOperators<K extends string, T> = {
280
- [key in K]: DataGridFilterPredicateBuilder<T>;
281
- };
282
-
283
- export type DataGridFilterPredicates = {
284
- date: DataGridFilterOperators<
285
- 'before' | 'after' | 'equals' | 'notEquals' | 'inRange' | 'inArray',
286
- string
287
- >;
288
- text: DataGridFilterOperators<
289
- | 'contains'
290
- | 'notContains'
291
- | 'equals'
292
- | 'notEquals'
293
- | 'startsWith'
294
- | 'endsWith'
295
- | 'inArray',
296
- string
297
- >;
298
- number: DataGridFilterOperators<
299
- | 'equals'
300
- | 'notEquals'
301
- | 'lessThan'
302
- | 'lessThanOrEqual'
303
- | 'greaterThan'
304
- | 'greaterThanOrEqual'
305
- | 'inRange'
306
- | 'inArray',
307
- number
308
- >;
309
- };
310
-
311
- export type DataGridFilterType = keyof DataGridFilterPredicates;
312
- export type DataGridFilterDataType<T extends DataGridFilterType> =
313
- DataGridFilterPredicates[T] extends DataGridFilterOperators<string, infer U>
314
- ? U
315
- : never;
316
-
317
- export type DataGridFilterGetter<T extends DataGridFilterType> = (
318
- value: any
319
- ) => DataGridFilterDataType<T> | null;
320
- export type DataGridFilterRenderer = (value: any) => ReactNode;
321
- export type DataGridFilterFormatter = (value: any) => string;
322
-
323
- export type DataGridFilterOperator<T extends DataGridFilterType> =
324
- DataGridFilterPredicates[T] extends DataGridFilterOperators<infer K, any>
325
- ? K
326
- : never;
327
-
328
- export type DataGridFilter<T extends string = DataGridFilterType> =
329
- T extends DataGridFilterType
330
- ? {
331
- type: T;
332
- operator: DataGridFilterOperator<T>;
333
- getter: DataGridFilterGetter<T>;
334
- renderer?: DataGridFilterRenderer;
335
- formatter?: DataGridFilterFormatter;
336
- values: (DataGridFilterDataType<T> | null)[];
337
- }
338
- : never;
339
-
340
- export type DataGridFilterGroup = {
341
- name: string;
342
- displayValue: DataGridFilterValue;
343
- values?: DataGridFilterValue[];
344
- groups?: DataGridFilterGroup[];
345
- };
346
-
347
- export type DataGridFilterValue = string | number | null;
348
-
349
- export type DataGridFilterCheckbox = {
350
- displayValue: ReactNode;
351
- title: string;
352
- values: DataGridFilterValue[];
353
- level: number;
354
- };
355
-
356
- export type DataGridRowTemplateProps<R> = {
357
- selected?: boolean;
358
- toggleSelection?: () => void;
359
- context: DataGridContext<R>;
360
- };
361
-
362
- export type DataGridRefProps = {
363
- refresh: () => void;
364
- setSelectedKeys: (keys: string[]) => void;
365
- };
366
-
367
- export type DataGridEditedRows<R> = Record<string, Partial<R>>;
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 { DataGridEditableCellFC } from './DataGridEditableCell/types';
17
+ import { ThemeColor } from '../../../providers/ThemeProvider/types';
18
+
19
+ export type DataGridCellFCProps = {
20
+ onDoubleClick?: MouseEventHandler;
21
+ style?: CSSProperties;
22
+ $color?: ThemeColor;
23
+ $textAlign?: 'left' | 'right' | 'center';
24
+ $userSelect?: boolean;
25
+ };
26
+
27
+ export type DataGridCellFC = FC<DataGridCellFCProps>;
28
+
29
+ export type DataGridFooterPredefinedFunction =
30
+ | 'average'
31
+ | 'avg'
32
+ | 'count'
33
+ | 'max'
34
+ | 'min'
35
+ | 'sum';
36
+ export type DataGridFooterFunction<R> = (
37
+ allRows: R[],
38
+ filteredRows: R[],
39
+ selectedRows: R[]
40
+ ) => ReactNode;
41
+
42
+ type ExcelOptions = {
43
+ formatter?: (value: any) => string;
44
+ colorGetter?: (value: any) => string;
45
+ valueGetter?: (value: any) => string;
46
+ };
47
+
48
+ type CommonGridColumnProps<R, T> = {
49
+ key: string;
50
+ component?: DataGridCellFC;
51
+ color?: ThemeColor;
52
+ excelOptions?: ExcelOptions;
53
+ textAlign?: 'left' | 'right' | 'center';
54
+ filter?: DataGridFilter;
55
+ footer?:
56
+ | DataGridFooterFunction<R>
57
+ | Record<string, DataGridFooterFunction<R> | null>;
58
+ name: ReactNode;
59
+ order?: number;
60
+ getter: (row: R) => T;
61
+ render?: (row: R, column: DataGridColumn<R>) => ReactNode | string;
62
+ resizable?: boolean;
63
+ sortGetter?: (row: R) => string | number;
64
+ width?: number;
65
+ };
66
+
67
+ export type EditableDataGridColumn<R, T> = CommonGridColumnProps<R, T> & {
68
+ editable?: boolean;
69
+ editComponent?: DataGridEditableCellFC<R, T>;
70
+ itemToPartialRow?: (row: R, value: T) => Partial<R>;
71
+ };
72
+
73
+ export type DataGridTextColumn<R> = EditableDataGridColumn<R, string> & {
74
+ type: 'text';
75
+ };
76
+
77
+ export type DataGridNumberColumn<R> = EditableDataGridColumn<R, number> & {
78
+ type: 'number';
79
+ decimals?: number;
80
+ currency?: string | ((row: R) => string);
81
+ };
82
+
83
+ export type DataGridDateColumn<R> = EditableDataGridColumn<R, string> & {
84
+ type: 'date';
85
+ };
86
+
87
+ export type DataGridCheckboxColumn<R> = EditableDataGridColumn<R, boolean> & {
88
+ type: 'checkbox';
89
+ };
90
+
91
+ export type DataGridSelectColumn<R, T = any> = EditableDataGridColumn<
92
+ R,
93
+ T | null
94
+ > & {
95
+ type: 'select';
96
+ items: T[];
97
+ itemKey: (item: T) => string;
98
+ itemLabel: (item: T) => string;
99
+ };
100
+
101
+ export type DataGridForeignListColumn<R> = EditableDataGridColumn<
102
+ R,
103
+ string | null
104
+ > & {
105
+ type: 'foreignList';
106
+ };
107
+
108
+ export type DataGridColorColumn<R> = EditableDataGridColumn<R, string> & {
109
+ type: 'color';
110
+ };
111
+
112
+ export type DataGridColumn<R> =
113
+ | DataGridTextColumn<R>
114
+ | DataGridNumberColumn<R>
115
+ | DataGridDateColumn<R>
116
+ | DataGridCheckboxColumn<R>
117
+ | DataGridSelectColumn<R>
118
+ | DataGridForeignListColumn<R>
119
+ | DataGridColorColumn<R>;
120
+
121
+ export type DataGridColumnWithFilter<R> = DataGridColumn<R> & {
122
+ filter: DataGridFilter;
123
+ };
124
+
125
+ export type DataGridColumns<R> = DataGridColumn<R>[];
126
+
127
+ export type DataGridFilters = Record<
128
+ string,
129
+ DataGridFilter<DataGridFilterType>
130
+ >;
131
+
132
+ export type DataGridProps<R> = {
133
+ name?: string;
134
+ className?: string;
135
+ rows: R[];
136
+ setRows?: Dispatch<SetStateAction<R[]>>;
137
+ columns: DataGridColumns<R>;
138
+ rowKey: keyof R | ((row: R) => string);
139
+ selectable?: boolean;
140
+ userSelect?: boolean;
141
+ editable?: boolean;
142
+ onRowDoubleClick?: (row: R, e: MouseEvent) => void;
143
+ onSelectionChange?: (keys: string[]) => void;
144
+ onSelectedRowsChanged?: (rows: R[]) => void;
145
+ getAllIds?: () => Promise<string[]>;
146
+ onFiltersChanged?: (filters: DataGridFilters) => void;
147
+ onSortsChanged?: (sorts: Record<string, DataGridSort>) => void;
148
+ onVisibleRowsChange?: (startIndex: number, length: number) => void;
149
+ onCellEdited?: (row: R, columnKey: string, value: any) => void;
150
+ rowClassNameGetter?: (row: R | null) => {
151
+ className?: string;
152
+ style?: CSSProperties;
153
+ };
154
+ headerRowHeight?: number;
155
+ rowHeight?: number;
156
+ filter?: boolean;
157
+ sort?: boolean;
158
+ initialSorts?: Record<string, DataGridSort>;
159
+ initialFooters?: Record<string, string>;
160
+ onFootersChanged?: (footers: Record<string, string>) => void;
161
+ filterValuesLoader?: (
162
+ columnKey: string
163
+ ) => Promise<(string | number | null)[]>;
164
+ loadCopyRows?: () => Promise<R[]>;
165
+ refresh?: () => void;
166
+ headerColor?: ThemeColor;
167
+ fixedColumnsCount?: number;
168
+ onRowEdited?: (row: R, columnKey: keyof R, value: any) => void;
169
+ onSaveClicked?: (
170
+ addedRows: DataGridEditedRows<R>,
171
+ editedRows: DataGridEditedRows<R>
172
+ ) => Promise<string[]>;
173
+ onAddClicked?: () => Promise<R>;
174
+ };
175
+
176
+ export type DataGridContextProps<R> = DataGridProps<R> & {
177
+ setRows: Dispatch<SetStateAction<R[]>>;
178
+ editingCell?: [number, number];
179
+ setEditingCell: Dispatch<SetStateAction<[number, number]>>;
180
+ sortedRows: R[];
181
+ selectedRows: R[];
182
+ selectedKeys: string[];
183
+ setSelectedKeys: (selection: string[]) => void;
184
+ sorts?: Record<string, DataGridSort>;
185
+ setSorts: (sorts: Record<string, DataGridSort>) => void;
186
+ filters?: DataGridFilters;
187
+ setFilters: Dispatch<SetStateAction<DataGridFilters>>;
188
+ footers?: Record<string, string>;
189
+ setFooters: Dispatch<SetStateAction<Record<string, string>>>;
190
+ footerFunctions?: Record<string, DataGridFooterFunction<R>>;
191
+ visibleColumns: DataGridColumns<R>;
192
+ copyTable: (
193
+ includeHeaders?: boolean,
194
+ includeFooters?: boolean
195
+ ) => Promise<void>;
196
+ setColumnWidth: (key: string, width: number) => void;
197
+ saveSettings: (newSettings?: DataGridSettings) => void;
198
+ settings: DataGridSettings;
199
+ setSettings: Dispatch<SetStateAction<DataGridSettings>>;
200
+ length: number;
201
+ rowKeyGetter: (row: R) => string;
202
+ gridTemplateColumns: string;
203
+ resizingColumnKey: string | null;
204
+ startResizing: (e: MouseEvent, columnKey: string) => void;
205
+ moveResizing: (e: MouseEvent) => void;
206
+ endResizing: () => void;
207
+ toggleSelection: (key: string) => void;
208
+
209
+ addedRows: DataGridEditedRows<R>;
210
+ updatedRows: DataGridEditedRows<R>;
211
+ editRow: (key: string, row: Partial<R>) => void;
212
+ addRow: (key: string, row: R) => void;
213
+ updateRow: (key: string, row: Partial<R>) => void;
214
+ clearChangedRows: (keys?: string[]) => void;
215
+ };
216
+
217
+ export type DataGridContext<R> = Context<DataGridContextProps<R>>;
218
+
219
+ export const dataGridSettingCodec = t.partial(
220
+ {
221
+ width: t.number,
222
+ order: t.number,
223
+ },
224
+ 'DataGridSetting'
225
+ );
226
+ export const dataGridSettingsCodec = t.record(
227
+ t.string,
228
+ dataGridSettingCodec,
229
+ 'DataGridSettings'
230
+ );
231
+ export const dataGridSettingsByNameCodec = t.record(
232
+ t.string,
233
+ dataGridSettingsCodec,
234
+ 'DataGridSettingsByName'
235
+ );
236
+
237
+ export type DataGridSetting = t.TypeOf<typeof dataGridSettingCodec>;
238
+ export type DataGridSettings = t.TypeOf<typeof dataGridSettingsCodec>;
239
+ export type DataGridSettingsByName = t.TypeOf<
240
+ typeof dataGridSettingsByNameCodec
241
+ >;
242
+ export type DataGridSettingsTuple = [string, DataGridSetting];
243
+ export type DataGridSettingsArray = DataGridSettingsTuple[];
244
+ export type DataGridColumnKeyValuePair<R> = [string, DataGridColumn<R>];
245
+
246
+ export type DataGridCellProps<R> = {
247
+ row: R;
248
+ rowIndex: number;
249
+ columnKey: string;
250
+ columnIndex: number;
251
+ column: DataGridColumn<R>;
252
+ context: DataGridContext<R>;
253
+ className?: string;
254
+ style?: CSSProperties;
255
+ userSelect?: boolean;
256
+ color?: ThemeColor;
257
+ };
258
+ export type EditableDataGridCellProps<R, T> = DataGridCellProps<R> & {
259
+ column: EditableDataGridColumn<R, T>;
260
+ };
261
+
262
+ export type DataGridHeaderCellProps<R> = {
263
+ columnKey: string;
264
+ columnIndex: number;
265
+ column: DataGridColumn<R>;
266
+ context: DataGridContext<R>;
267
+ onFilterButtonClicked?: (columnKey: string) => void;
268
+ isFilterOpen?: boolean;
269
+ color?: ThemeColor;
270
+ };
271
+
272
+ export type DataGridSort = 'asc' | 'desc';
273
+
274
+ export type DataGridFilterPredicate<T> = (valueToVerify: T) => boolean;
275
+ export type DataGridFilterPredicateBuilder<T> = (
276
+ ...filterValues: T[]
277
+ ) => DataGridFilterPredicate<T>;
278
+
279
+ export type DataGridFilterOperators<K extends string, T> = {
280
+ [key in K]: DataGridFilterPredicateBuilder<T>;
281
+ };
282
+
283
+ export type DataGridFilterPredicates = {
284
+ date: DataGridFilterOperators<
285
+ 'before' | 'after' | 'equals' | 'notEquals' | 'inRange' | 'inArray',
286
+ string
287
+ >;
288
+ text: DataGridFilterOperators<
289
+ | 'contains'
290
+ | 'notContains'
291
+ | 'equals'
292
+ | 'notEquals'
293
+ | 'startsWith'
294
+ | 'endsWith'
295
+ | 'inArray',
296
+ string
297
+ >;
298
+ number: DataGridFilterOperators<
299
+ | 'equals'
300
+ | 'notEquals'
301
+ | 'lessThan'
302
+ | 'lessThanOrEqual'
303
+ | 'greaterThan'
304
+ | 'greaterThanOrEqual'
305
+ | 'inRange'
306
+ | 'inArray',
307
+ number
308
+ >;
309
+ };
310
+
311
+ export type DataGridFilterType = keyof DataGridFilterPredicates;
312
+ export type DataGridFilterDataType<T extends DataGridFilterType> =
313
+ DataGridFilterPredicates[T] extends DataGridFilterOperators<string, infer U>
314
+ ? U
315
+ : never;
316
+
317
+ export type DataGridFilterGetter<T extends DataGridFilterType> = (
318
+ value: any
319
+ ) => DataGridFilterDataType<T> | null;
320
+ export type DataGridFilterRenderer = (value: any) => ReactNode;
321
+ export type DataGridFilterFormatter = (value: any) => string;
322
+
323
+ export type DataGridFilterOperator<T extends DataGridFilterType> =
324
+ DataGridFilterPredicates[T] extends DataGridFilterOperators<infer K, any>
325
+ ? K
326
+ : never;
327
+
328
+ export type DataGridFilter<T extends string = DataGridFilterType> =
329
+ T extends DataGridFilterType
330
+ ? {
331
+ type: T;
332
+ operator: DataGridFilterOperator<T>;
333
+ getter: DataGridFilterGetter<T>;
334
+ renderer?: DataGridFilterRenderer;
335
+ formatter?: DataGridFilterFormatter;
336
+ values: (DataGridFilterDataType<T> | null)[];
337
+ }
338
+ : never;
339
+
340
+ export type DataGridFilterGroup = {
341
+ name: string;
342
+ displayValue: DataGridFilterValue;
343
+ values?: DataGridFilterValue[];
344
+ groups?: DataGridFilterGroup[];
345
+ };
346
+
347
+ export type DataGridFilterValue = string | number | null;
348
+
349
+ export type DataGridFilterCheckbox = {
350
+ displayValue: ReactNode;
351
+ title: string;
352
+ values: DataGridFilterValue[];
353
+ level: number;
354
+ };
355
+
356
+ export type DataGridRowTemplateProps<R> = {
357
+ selected?: boolean;
358
+ toggleSelection?: () => void;
359
+ context: DataGridContext<R>;
360
+ };
361
+
362
+ export type DataGridRefProps = {
363
+ refresh: () => void;
364
+ setSelectedKeys: (keys: string[]) => void;
365
+ };
366
+
367
+ export type DataGridEditedRows<R> = Record<string, Partial<R>>;