@addev-be/ui 0.16.7 → 0.16.8

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 (263) 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/table.svg +1 -1
  21. package/assets/icons/up.svg +1 -1
  22. package/assets/icons/user-tie.svg +1 -1
  23. package/assets/icons/x-bar.svg +3 -3
  24. package/dist/components/data/AdvancedRequestDataGrid/helpers/advancedRequests.d.ts +14 -0
  25. package/dist/components/data/AdvancedRequestDataGrid/helpers/advancedRequests.js +77 -0
  26. package/dist/components/data/AdvancedRequestDataGrid/helpers/columns.d.ts +22 -0
  27. package/dist/components/data/AdvancedRequestDataGrid/helpers/columns.js +105 -0
  28. package/dist/components/data/AdvancedRequestDataGrid/helpers/index.d.ts +2 -0
  29. package/dist/components/data/AdvancedRequestDataGrid/helpers/index.js +18 -0
  30. package/dist/components/data/AdvancedRequestDataGrid/index.d.ts +2 -0
  31. package/dist/components/data/AdvancedRequestDataGrid/index.js +215 -0
  32. package/dist/components/data/AdvancedRequestDataGrid/types.d.ts +21 -0
  33. package/dist/components/data/AdvancedRequestDataGrid/types.js +2 -0
  34. package/dist/components/data/DataGrid/AdvancedRequestDataGrid.d.ts +10 -0
  35. package/dist/components/data/DataGrid/AdvancedRequestDataGrid.js +173 -0
  36. package/dist/components/data/DataGrid/DataGridEditableCell.d.ts +2 -0
  37. package/dist/components/data/DataGrid/DataGridEditableCell.js +27 -0
  38. package/dist/components/data/DataGrid/FilterValuesScroller.d.ts +13 -0
  39. package/dist/components/data/DataGrid/FilterValuesScroller.js +73 -0
  40. package/dist/components/data/DataGrid/VirtualScroller.d.ts +11 -0
  41. package/dist/components/data/DataGrid/VirtualScroller.js +41 -0
  42. package/dist/components/data/DataGrid/helpers/advancedRequests.d.ts +12 -0
  43. package/dist/components/data/DataGrid/helpers/advancedRequests.js +53 -0
  44. package/dist/components/data/DataGrid/helpers.d.ts +28 -0
  45. package/dist/components/data/DataGrid/helpers.js +436 -0
  46. package/dist/components/data/DataGrid/styles.d.ts +1 -1
  47. package/dist/components/data/DataGrid/styles.js +4 -4
  48. package/dist/components/data/SmartQueryDataGrid/helpers/columns.d.ts +20 -0
  49. package/dist/components/data/SmartQueryDataGrid/helpers/columns.js +160 -0
  50. package/dist/components/data/SmartQueryDataGrid/helpers/hooks.d.ts +5 -0
  51. package/dist/components/data/SmartQueryDataGrid/helpers/hooks.js +41 -0
  52. package/dist/components/data/SmartQueryDataGrid/helpers/index.d.ts +2 -0
  53. package/dist/components/data/SmartQueryDataGrid/helpers/index.js +18 -0
  54. package/dist/components/data/SmartQueryDataGrid/helpers/smartQueries.d.ts +3 -0
  55. package/dist/components/data/SmartQueryDataGrid/helpers/smartQueries.js +15 -0
  56. package/dist/components/data/SmartQueryDataGrid/hooks.d.ts +9 -0
  57. package/dist/components/data/SmartQueryDataGrid/hooks.js +63 -0
  58. package/dist/components/data/SmartQueryDataGrid/index.d.ts +12 -0
  59. package/dist/components/data/SmartQueryDataGrid/index.js +242 -0
  60. package/dist/components/data/SmartQueryDataGrid/types.d.ts +22 -0
  61. package/dist/components/data/SmartQueryDataGrid/types.js +2 -0
  62. package/dist/components/forms/Form/Checkbox.d.ts +2 -2
  63. package/dist/components/forms/Form/Checkbox.js +2 -2
  64. package/dist/components/forms/Form/Input.d.ts +2 -2
  65. package/dist/components/forms/Form/Input.js +2 -3
  66. package/dist/components/forms/Form/InputWithLabel.d.ts +2 -0
  67. package/dist/components/forms/Form/InputWithLabel.js +10 -0
  68. package/dist/components/forms/Form/Select.d.ts +0 -1
  69. package/dist/components/forms/Form/Select.js +4 -5
  70. package/dist/components/forms/Form/TextArea.d.ts +2 -2
  71. package/dist/components/forms/Form/TextArea.js +2 -3
  72. package/dist/components/forms/Form/index.d.ts +8 -22
  73. package/dist/components/forms/Form/index.js +1 -6
  74. package/dist/components/forms/Form/styles.d.ts +4 -9
  75. package/dist/components/forms/Form/styles.js +11 -13
  76. package/dist/components/forms/Form/types.d.ts +7 -0
  77. package/dist/components/forms/Form/types.js +2 -0
  78. package/dist/components/forms/index.d.ts +1 -2
  79. package/dist/components/forms/index.js +1 -2
  80. package/dist/config/types.d.ts +11 -0
  81. package/dist/config/types.js +2 -0
  82. package/dist/hooks/index.d.ts +0 -1
  83. package/dist/hooks/index.js +0 -1
  84. package/dist/services/requests/userPermissions.d.ts +4 -0
  85. package/dist/services/requests/userPermissions.js +20 -0
  86. package/package.json +1 -1
  87. package/src/Icons.tsx +134 -134
  88. package/src/components/auth/LoginForm.tsx +84 -84
  89. package/src/components/auth/LoginPage.tsx +32 -32
  90. package/src/components/auth/PasswordRecoveryForm.tsx +52 -52
  91. package/src/components/auth/PasswordResetForm.tsx +112 -112
  92. package/src/components/auth/index.ts +4 -4
  93. package/src/components/auth/styles.ts +14 -14
  94. package/src/components/data/DataGrid/DataGridCell.tsx +77 -77
  95. package/src/components/data/DataGrid/DataGridColumnsModal/helpers.ts +9 -9
  96. package/src/components/data/DataGrid/DataGridColumnsModal/hooks.tsx +59 -59
  97. package/src/components/data/DataGrid/DataGridColumnsModal/index.tsx +182 -182
  98. package/src/components/data/DataGrid/DataGridColumnsModal/styles.ts +104 -104
  99. package/src/components/data/DataGrid/DataGridEditableCell/CheckboxEditableCell.tsx +38 -38
  100. package/src/components/data/DataGrid/DataGridEditableCell/DateEditableCell.tsx +39 -39
  101. package/src/components/data/DataGrid/DataGridEditableCell/NumberEditableCell.tsx +68 -68
  102. package/src/components/data/DataGrid/DataGridEditableCell/TextEditableCell.tsx +38 -38
  103. package/src/components/data/DataGrid/DataGridEditableCell/index.tsx +106 -108
  104. package/src/components/data/DataGrid/DataGridEditableCell/styles.ts +35 -35
  105. package/src/components/data/DataGrid/DataGridEditableCell/types.ts +19 -19
  106. package/src/components/data/DataGrid/DataGridFilterMenu/FilterValuesScroller.tsx +131 -131
  107. package/src/components/data/DataGrid/DataGridFilterMenu/hooks.tsx +81 -81
  108. package/src/components/data/DataGrid/DataGridFilterMenu/index.tsx +376 -376
  109. package/src/components/data/DataGrid/DataGridFilterMenu/styles.ts +97 -97
  110. package/src/components/data/DataGrid/DataGridFooter.tsx +45 -45
  111. package/src/components/data/DataGrid/DataGridHeader.tsx +185 -173
  112. package/src/components/data/DataGrid/DataGridHeaderCell.tsx +111 -111
  113. package/src/components/data/DataGrid/DataGridRowTemplate.tsx +82 -80
  114. package/src/components/data/DataGrid/FilterModalContent/index.tsx +136 -136
  115. package/src/components/data/DataGrid/FilterModalContent/styles.ts +22 -22
  116. package/src/components/data/DataGrid/constants.ts +6 -6
  117. package/src/components/data/DataGrid/helpers/columns.tsx +386 -386
  118. package/src/components/data/DataGrid/helpers/filters.ts +287 -287
  119. package/src/components/data/DataGrid/helpers/index.ts +2 -2
  120. package/src/components/data/DataGrid/hooks/index.ts +29 -29
  121. package/src/components/data/DataGrid/hooks/useDataGrid.tsx +377 -377
  122. package/src/components/data/DataGrid/hooks/useDataGridChangedRows.ts +89 -56
  123. package/src/components/data/DataGrid/hooks/useDataGridCopy.ts +174 -174
  124. package/src/components/data/DataGrid/hooks/useDataGridSettings.ts +48 -48
  125. package/src/components/data/DataGrid/hooks/useRefreshModal.tsx +48 -0
  126. package/src/components/data/DataGrid/index.tsx +110 -110
  127. package/src/components/data/DataGrid/styles.ts +379 -379
  128. package/src/components/data/DataGrid/types.ts +367 -367
  129. package/src/components/data/SqlRequestDataGrid/SqlRequestForeignListEditableCell.tsx +16 -16
  130. package/src/components/data/SqlRequestDataGrid/helpers/columns.tsx +481 -480
  131. package/src/components/data/SqlRequestDataGrid/helpers/index.ts +2 -2
  132. package/src/components/data/SqlRequestDataGrid/helpers/sqlRequests.ts +16 -16
  133. package/src/components/data/SqlRequestDataGrid/index.tsx +402 -402
  134. package/src/components/data/SqlRequestDataGrid/styles.ts +15 -15
  135. package/src/components/data/SqlRequestDataGrid/types.ts +74 -74
  136. package/src/components/data/SqlRequestForeignList/index.tsx +259 -259
  137. package/src/components/data/SqlRequestForeignList/styles.ts +43 -43
  138. package/src/components/data/SqlRequestForeignList/types.ts +34 -34
  139. package/src/components/data/SqlRequestGrid/filters/FiltersSidebar.tsx +110 -110
  140. package/src/components/data/SqlRequestGrid/filters/styles.ts +88 -88
  141. package/src/components/data/SqlRequestGrid/helpers/index.ts +1 -1
  142. package/src/components/data/SqlRequestGrid/helpers/sqlRequests.ts +16 -16
  143. package/src/components/data/SqlRequestGrid/index.tsx +316 -316
  144. package/src/components/data/SqlRequestGrid/styles.ts +20 -20
  145. package/src/components/data/SqlRequestGrid/types.ts +75 -75
  146. package/src/components/data/VirtualScroller/hooks.ts +71 -71
  147. package/src/components/data/VirtualScroller/index.tsx +91 -91
  148. package/src/components/data/VirtualScroller/styles.ts +58 -58
  149. package/src/components/data/VirtualScroller/types.ts +12 -12
  150. package/src/components/data/index.ts +16 -16
  151. package/src/components/forms/AutoTextArea.tsx +41 -41
  152. package/src/components/forms/Button.tsx +133 -133
  153. package/src/components/forms/Form/Checkbox.tsx +12 -12
  154. package/src/components/forms/Form/FormGroup.tsx +27 -27
  155. package/src/components/forms/Form/Input.tsx +16 -16
  156. package/src/components/forms/Form/Row.tsx +32 -32
  157. package/src/components/forms/Form/Select.tsx +81 -81
  158. package/src/components/forms/Form/TextArea.tsx +17 -17
  159. package/src/components/forms/Form/index.tsx +45 -45
  160. package/src/components/forms/Form/styles.ts +171 -171
  161. package/src/components/forms/IconButton.tsx +57 -57
  162. package/src/components/forms/IndeterminateCheckbox.tsx +46 -46
  163. package/src/components/forms/NumberInput.tsx +53 -53
  164. package/src/components/forms/Select.tsx +35 -35
  165. package/src/components/forms/VerticalLabel.tsx +20 -20
  166. package/src/components/forms/index.ts +9 -9
  167. package/src/components/forms/styles.ts +31 -31
  168. package/src/components/index.ts +6 -6
  169. package/src/components/layout/Columns.ts +20 -20
  170. package/src/components/layout/Dropdown/index.tsx +113 -113
  171. package/src/components/layout/Dropdown/styles.ts +45 -45
  172. package/src/components/layout/Grid/index.tsx +8 -8
  173. package/src/components/layout/Grid/styles.ts +34 -34
  174. package/src/components/layout/Loading/index.tsx +29 -29
  175. package/src/components/layout/Loading/styles.ts +29 -29
  176. package/src/components/layout/Masonry/index.tsx +29 -29
  177. package/src/components/layout/Masonry/styles.ts +20 -20
  178. package/src/components/layout/Modal/index.tsx +51 -51
  179. package/src/components/layout/Modal/styles.ts +125 -121
  180. package/src/components/layout/index.ts +6 -6
  181. package/src/components/search/HighlightedText.tsx +37 -37
  182. package/src/components/search/QuickSearchBar.tsx +90 -86
  183. package/src/components/search/QuickSearchResults.tsx +86 -86
  184. package/src/components/search/index.ts +9 -9
  185. package/src/components/search/styles.ts +96 -96
  186. package/src/components/search/types.ts +26 -26
  187. package/src/components/ui/Avatar/index.tsx +54 -54
  188. package/src/components/ui/Avatar/styles.ts +61 -61
  189. package/src/components/ui/Card/index.tsx +14 -14
  190. package/src/components/ui/Card/styles.ts +37 -37
  191. package/src/components/ui/ContextMenu/index.tsx +79 -79
  192. package/src/components/ui/ContextMenu/styles.ts +119 -119
  193. package/src/components/ui/Ellipsis.tsx +34 -34
  194. package/src/components/ui/Message/index.tsx +57 -57
  195. package/src/components/ui/Message/styles.ts +40 -40
  196. package/src/components/ui/index.ts +6 -6
  197. package/src/config/index.ts +14 -14
  198. package/src/helpers/dates.ts +17 -17
  199. package/src/helpers/getScrollbarSize.ts +14 -14
  200. package/src/helpers/index.ts +4 -4
  201. package/src/helpers/numbers.ts +63 -63
  202. package/src/helpers/responsive.ts +83 -83
  203. package/src/helpers/text.ts +13 -13
  204. package/src/hooks/index.ts +7 -7
  205. package/src/hooks/useContainerMediaQuery.ts +7 -7
  206. package/src/hooks/useElementSize.ts +24 -24
  207. package/src/hooks/useMediaQuery.ts +9 -9
  208. package/src/hooks/useMediaQueryForWidth.ts +35 -35
  209. package/src/hooks/useMutableState.ts +19 -19
  210. package/src/hooks/useShowArchived.ts +28 -28
  211. package/src/hooks/useWindowSize.ts +20 -20
  212. package/src/index.ts +9 -9
  213. package/src/providers/AuthenticationProvider/helpers.ts +3 -3
  214. package/src/providers/AuthenticationProvider/index.tsx +243 -243
  215. package/src/providers/LoadingProvider/index.tsx +47 -47
  216. package/src/providers/PortalsProvider/index.tsx +54 -54
  217. package/src/providers/PortalsProvider/styles.ts +31 -31
  218. package/src/providers/SettingsProvider/index.tsx +70 -70
  219. package/src/providers/ThemeProvider/ThemeProvider.ts +63 -63
  220. package/src/providers/ThemeProvider/defaultTheme.ts +457 -457
  221. package/src/providers/ThemeProvider/helpers.ts +11 -11
  222. package/src/providers/ThemeProvider/index.ts +4 -4
  223. package/src/providers/ThemeProvider/types.ts +131 -131
  224. package/src/providers/TrackingProvider/hooks.ts +14 -14
  225. package/src/providers/TrackingProvider/index.tsx +71 -71
  226. package/src/providers/UiProviders/index.tsx +68 -68
  227. package/src/providers/UiProviders/styles.ts +10 -10
  228. package/src/providers/hooks.ts +12 -12
  229. package/src/providers/index.ts +8 -8
  230. package/src/services/HttpService.ts +92 -92
  231. package/src/services/WebSocketService.ts +137 -137
  232. package/src/services/advancedRequests.ts +102 -102
  233. package/src/services/base.ts +23 -23
  234. package/src/services/globalSearch.ts +29 -29
  235. package/src/services/hooks.ts +44 -44
  236. package/src/services/index.ts +21 -21
  237. package/src/services/requests/auth.ts +44 -44
  238. package/src/services/requests/generic.ts +62 -62
  239. package/src/services/requests/tracking.ts +12 -12
  240. package/src/services/requests/userProfiles.ts +35 -35
  241. package/src/services/requests/users.ts +28 -28
  242. package/src/services/smartQueries.ts +122 -122
  243. package/src/services/sqlRequests.ts +111 -111
  244. package/src/services/types/auth.ts +131 -131
  245. package/src/services/types/base.ts +10 -10
  246. package/src/services/types/generic.ts +96 -96
  247. package/src/services/types/tracking.ts +39 -39
  248. package/src/services/types/userProfiles.ts +107 -107
  249. package/src/services/types/users.ts +106 -106
  250. package/src/services/updateSqlRequests.ts +34 -34
  251. package/src/styles/animations.scss +30 -30
  252. package/src/styles/index.scss +42 -42
  253. package/src/typings.d.ts +19 -19
  254. package/tsconfig.json +18 -18
  255. package/tsconfig.tsbuildinfo +1 -1
  256. package/dist/components/forms/Form/Row.d.ts +0 -9
  257. package/dist/components/forms/Form/Row.js +0 -10
  258. package/dist/components/forms/NumberInput.d.ts +0 -9
  259. package/dist/components/forms/NumberInput.js +0 -41
  260. package/dist/components/ui/ToastNotification.d.ts +0 -14
  261. package/dist/components/ui/ToastNotification.js +0 -78
  262. package/dist/hooks/useMutableState.d.ts +0 -2
  263. package/dist/hooks/useMutableState.js +0 -16
@@ -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
- 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>>;
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?: (key: string, 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: (row: Partial<R>) => void;
212
+ addRow: (row: R) => void;
213
+ updateRow: (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> = Partial<R>[];