@addev-be/ui 0.17.1 → 0.17.3

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 (264) 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/DataGrid/styles.d.ts +1 -1
  25. package/dist/components/data/DataGrid/styles.js +4 -4
  26. package/dist/components/forms/Form/Checkbox.d.ts +2 -2
  27. package/dist/components/forms/Form/Checkbox.js +2 -2
  28. package/dist/components/forms/Form/Input.d.ts +2 -2
  29. package/dist/components/forms/Form/Input.js +3 -2
  30. package/dist/components/forms/Form/Row.d.ts +9 -0
  31. package/dist/components/forms/Form/Row.js +10 -0
  32. package/dist/components/forms/Form/Select.d.ts +1 -0
  33. package/dist/components/forms/Form/Select.js +5 -4
  34. package/dist/components/forms/Form/TextArea.d.ts +2 -2
  35. package/dist/components/forms/Form/TextArea.js +3 -2
  36. package/dist/components/forms/Form/index.d.ts +22 -8
  37. package/dist/components/forms/Form/index.js +6 -1
  38. package/dist/components/forms/Form/styles.d.ts +9 -4
  39. package/dist/components/forms/Form/styles.js +13 -11
  40. package/dist/components/forms/NumberInput.d.ts +9 -0
  41. package/dist/components/forms/NumberInput.js +41 -0
  42. package/dist/components/forms/index.d.ts +2 -1
  43. package/dist/components/forms/index.js +2 -1
  44. package/dist/components/ui/ToastNotification.d.ts +14 -0
  45. package/dist/components/ui/ToastNotification.js +78 -0
  46. package/dist/hooks/index.d.ts +1 -0
  47. package/dist/hooks/index.js +1 -0
  48. package/dist/hooks/useMutableState.d.ts +2 -0
  49. package/dist/hooks/useMutableState.js +16 -0
  50. package/dist/poppins-700.woff2 +0 -0
  51. package/package.json +1 -1
  52. package/src/Icons.tsx +134 -134
  53. package/src/components/auth/LoginForm.tsx +84 -84
  54. package/src/components/auth/LoginPage.tsx +32 -32
  55. package/src/components/auth/PasswordRecoveryForm.tsx +52 -52
  56. package/src/components/auth/PasswordResetForm.tsx +112 -112
  57. package/src/components/auth/index.ts +4 -4
  58. package/src/components/auth/styles.ts +14 -14
  59. package/src/components/data/DataGrid/DataGridCell.tsx +77 -77
  60. package/src/components/data/DataGrid/DataGridColumnsModal/helpers.ts +9 -9
  61. package/src/components/data/DataGrid/DataGridColumnsModal/hooks.tsx +59 -59
  62. package/src/components/data/DataGrid/DataGridColumnsModal/index.tsx +182 -182
  63. package/src/components/data/DataGrid/DataGridColumnsModal/styles.ts +104 -104
  64. package/src/components/data/DataGrid/DataGridEditableCell/CheckboxEditableCell.tsx +38 -38
  65. package/src/components/data/DataGrid/DataGridEditableCell/DateEditableCell.tsx +39 -39
  66. package/src/components/data/DataGrid/DataGridEditableCell/NumberEditableCell.tsx +68 -68
  67. package/src/components/data/DataGrid/DataGridEditableCell/TextEditableCell.tsx +38 -38
  68. package/src/components/data/DataGrid/DataGridEditableCell/index.tsx +106 -106
  69. package/src/components/data/DataGrid/DataGridEditableCell/styles.ts +35 -35
  70. package/src/components/data/DataGrid/DataGridEditableCell/types.ts +19 -19
  71. package/src/components/data/DataGrid/DataGridFilterMenu/FilterValuesScroller.tsx +131 -131
  72. package/src/components/data/DataGrid/DataGridFilterMenu/hooks.tsx +81 -81
  73. package/src/components/data/DataGrid/DataGridFilterMenu/index.tsx +376 -376
  74. package/src/components/data/DataGrid/DataGridFilterMenu/styles.ts +97 -97
  75. package/src/components/data/DataGrid/DataGridFooter.tsx +45 -45
  76. package/src/components/data/DataGrid/DataGridHeader.tsx +185 -185
  77. package/src/components/data/DataGrid/DataGridHeaderCell.tsx +111 -111
  78. package/src/components/data/DataGrid/DataGridRowTemplate.tsx +82 -82
  79. package/src/components/data/DataGrid/FilterModalContent/index.tsx +136 -136
  80. package/src/components/data/DataGrid/FilterModalContent/styles.ts +22 -22
  81. package/src/components/data/DataGrid/constants.ts +6 -6
  82. package/src/components/data/DataGrid/helpers/columns.tsx +386 -386
  83. package/src/components/data/DataGrid/helpers/filters.ts +287 -287
  84. package/src/components/data/DataGrid/helpers/index.ts +2 -2
  85. package/src/components/data/DataGrid/hooks/index.ts +29 -29
  86. package/src/components/data/DataGrid/hooks/useDataGrid.tsx +381 -377
  87. package/src/components/data/DataGrid/hooks/useDataGridChangedRows.ts +97 -89
  88. package/src/components/data/DataGrid/hooks/useDataGridCopy.ts +174 -174
  89. package/src/components/data/DataGrid/hooks/useDataGridSettings.ts +48 -48
  90. package/src/components/data/DataGrid/hooks/useRefreshModal.tsx +48 -48
  91. package/src/components/data/DataGrid/index.tsx +112 -110
  92. package/src/components/data/DataGrid/styles.ts +379 -379
  93. package/src/components/data/DataGrid/types.ts +369 -367
  94. package/src/components/data/SqlRequestDataGrid/SqlRequestForeignListEditableCell.tsx +16 -16
  95. package/src/components/data/SqlRequestDataGrid/helpers/columns.tsx +481 -481
  96. package/src/components/data/SqlRequestDataGrid/helpers/index.ts +2 -2
  97. package/src/components/data/SqlRequestDataGrid/helpers/sqlRequests.ts +16 -16
  98. package/src/components/data/SqlRequestDataGrid/index.tsx +403 -402
  99. package/src/components/data/SqlRequestDataGrid/styles.ts +15 -15
  100. package/src/components/data/SqlRequestDataGrid/types.ts +74 -74
  101. package/src/components/data/SqlRequestForeignList/index.tsx +259 -259
  102. package/src/components/data/SqlRequestForeignList/styles.ts +43 -43
  103. package/src/components/data/SqlRequestForeignList/types.ts +34 -34
  104. package/src/components/data/SqlRequestGrid/filters/FiltersSidebar.tsx +110 -110
  105. package/src/components/data/SqlRequestGrid/filters/styles.ts +88 -88
  106. package/src/components/data/SqlRequestGrid/helpers/index.ts +1 -1
  107. package/src/components/data/SqlRequestGrid/helpers/sqlRequests.ts +16 -16
  108. package/src/components/data/SqlRequestGrid/index.tsx +316 -316
  109. package/src/components/data/SqlRequestGrid/styles.ts +20 -20
  110. package/src/components/data/SqlRequestGrid/types.ts +75 -75
  111. package/src/components/data/VirtualScroller/hooks.ts +71 -71
  112. package/src/components/data/VirtualScroller/index.tsx +91 -91
  113. package/src/components/data/VirtualScroller/styles.ts +58 -58
  114. package/src/components/data/VirtualScroller/types.ts +12 -12
  115. package/src/components/data/index.ts +16 -16
  116. package/src/components/forms/AutoTextArea.tsx +41 -41
  117. package/src/components/forms/Button.tsx +133 -133
  118. package/src/components/forms/Form/Checkbox.tsx +12 -12
  119. package/src/components/forms/Form/FormGroup.tsx +31 -27
  120. package/src/components/forms/Form/Input.tsx +16 -16
  121. package/src/components/forms/Form/Row.tsx +32 -32
  122. package/src/components/forms/Form/Select.tsx +81 -81
  123. package/src/components/forms/Form/TextArea.tsx +17 -17
  124. package/src/components/forms/Form/index.tsx +45 -45
  125. package/src/components/forms/Form/styles.ts +180 -171
  126. package/src/components/forms/IconButton.tsx +57 -57
  127. package/src/components/forms/IndeterminateCheckbox.tsx +46 -46
  128. package/src/components/forms/NumberInput.tsx +53 -53
  129. package/src/components/forms/Select.tsx +35 -35
  130. package/src/components/forms/VerticalLabel.tsx +20 -20
  131. package/src/components/forms/index.ts +9 -9
  132. package/src/components/forms/styles.ts +29 -31
  133. package/src/components/index.ts +6 -6
  134. package/src/components/layout/Columns.ts +24 -20
  135. package/src/components/layout/Dropdown/index.tsx +113 -113
  136. package/src/components/layout/Dropdown/styles.ts +45 -45
  137. package/src/components/layout/Grid/index.tsx +8 -8
  138. package/src/components/layout/Grid/styles.ts +34 -34
  139. package/src/components/layout/Loading/index.tsx +29 -29
  140. package/src/components/layout/Loading/styles.ts +29 -29
  141. package/src/components/layout/Masonry/index.tsx +29 -29
  142. package/src/components/layout/Masonry/styles.ts +20 -20
  143. package/src/components/layout/Modal/index.tsx +51 -51
  144. package/src/components/layout/Modal/styles.ts +125 -125
  145. package/src/components/layout/index.ts +6 -6
  146. package/src/components/search/HighlightedText.tsx +41 -41
  147. package/src/components/search/QuickSearchBar.tsx +109 -90
  148. package/src/components/search/QuickSearchResults.tsx +86 -86
  149. package/src/components/search/index.ts +9 -9
  150. package/src/components/search/styles.ts +96 -96
  151. package/src/components/search/types.ts +26 -26
  152. package/src/components/ui/Avatar/index.tsx +54 -54
  153. package/src/components/ui/Avatar/styles.ts +61 -61
  154. package/src/components/ui/Card/index.tsx +14 -14
  155. package/src/components/ui/Card/styles.ts +37 -37
  156. package/src/components/ui/ContextMenu/index.tsx +79 -79
  157. package/src/components/ui/ContextMenu/styles.ts +119 -119
  158. package/src/components/ui/Ellipsis.tsx +34 -34
  159. package/src/components/ui/Message/index.tsx +57 -57
  160. package/src/components/ui/Message/styles.ts +40 -40
  161. package/src/components/ui/index.ts +6 -6
  162. package/src/config/index.ts +14 -14
  163. package/src/helpers/dates.ts +17 -17
  164. package/src/helpers/getScrollbarSize.ts +14 -14
  165. package/src/helpers/index.ts +4 -4
  166. package/src/helpers/numbers.ts +63 -63
  167. package/src/helpers/responsive.ts +83 -83
  168. package/src/helpers/text.ts +13 -13
  169. package/src/hooks/index.ts +7 -7
  170. package/src/hooks/useContainerMediaQuery.ts +7 -7
  171. package/src/hooks/useElementSize.ts +24 -24
  172. package/src/hooks/useMediaQuery.ts +9 -9
  173. package/src/hooks/useMediaQueryForWidth.ts +35 -35
  174. package/src/hooks/useMutableState.ts +19 -19
  175. package/src/hooks/useShowArchived.ts +28 -28
  176. package/src/hooks/useWindowSize.ts +20 -20
  177. package/src/index.ts +9 -9
  178. package/src/providers/AuthenticationProvider/helpers.ts +3 -3
  179. package/src/providers/AuthenticationProvider/index.tsx +243 -243
  180. package/src/providers/LoadingProvider/index.tsx +47 -47
  181. package/src/providers/PortalsProvider/index.tsx +54 -54
  182. package/src/providers/PortalsProvider/styles.ts +31 -31
  183. package/src/providers/SettingsProvider/index.tsx +70 -70
  184. package/src/providers/ThemeProvider/ThemeProvider.ts +63 -63
  185. package/src/providers/ThemeProvider/defaultTheme.ts +457 -457
  186. package/src/providers/ThemeProvider/helpers.ts +11 -11
  187. package/src/providers/ThemeProvider/index.ts +4 -4
  188. package/src/providers/ThemeProvider/types.ts +131 -131
  189. package/src/providers/TrackingProvider/hooks.ts +14 -14
  190. package/src/providers/TrackingProvider/index.tsx +71 -71
  191. package/src/providers/UiProviders/index.tsx +68 -68
  192. package/src/providers/UiProviders/styles.ts +10 -10
  193. package/src/providers/hooks.ts +12 -12
  194. package/src/providers/index.ts +8 -8
  195. package/src/services/HttpService.ts +92 -92
  196. package/src/services/WebSocketService.ts +137 -137
  197. package/src/services/advancedRequests.ts +102 -102
  198. package/src/services/base.ts +23 -23
  199. package/src/services/globalSearch.ts +29 -29
  200. package/src/services/hooks.ts +44 -44
  201. package/src/services/index.ts +21 -21
  202. package/src/services/requests/auth.ts +44 -44
  203. package/src/services/requests/generic.ts +62 -62
  204. package/src/services/requests/tracking.ts +12 -12
  205. package/src/services/requests/userProfiles.ts +35 -35
  206. package/src/services/requests/users.ts +28 -28
  207. package/src/services/smartQueries.ts +122 -122
  208. package/src/services/sqlRequests.ts +111 -111
  209. package/src/services/types/auth.ts +131 -131
  210. package/src/services/types/base.ts +10 -10
  211. package/src/services/types/generic.ts +96 -96
  212. package/src/services/types/tracking.ts +39 -39
  213. package/src/services/types/userProfiles.ts +107 -107
  214. package/src/services/types/users.ts +106 -106
  215. package/src/services/updateSqlRequests.ts +34 -34
  216. package/src/styles/animations.scss +30 -30
  217. package/src/styles/index.scss +42 -42
  218. package/src/typings.d.ts +19 -19
  219. package/tsconfig.json +18 -18
  220. package/tsconfig.tsbuildinfo +1 -1
  221. package/dist/components/data/AdvancedRequestDataGrid/helpers/advancedRequests.d.ts +0 -14
  222. package/dist/components/data/AdvancedRequestDataGrid/helpers/advancedRequests.js +0 -77
  223. package/dist/components/data/AdvancedRequestDataGrid/helpers/columns.d.ts +0 -22
  224. package/dist/components/data/AdvancedRequestDataGrid/helpers/columns.js +0 -105
  225. package/dist/components/data/AdvancedRequestDataGrid/helpers/index.d.ts +0 -2
  226. package/dist/components/data/AdvancedRequestDataGrid/helpers/index.js +0 -18
  227. package/dist/components/data/AdvancedRequestDataGrid/index.d.ts +0 -2
  228. package/dist/components/data/AdvancedRequestDataGrid/index.js +0 -215
  229. package/dist/components/data/AdvancedRequestDataGrid/types.d.ts +0 -21
  230. package/dist/components/data/AdvancedRequestDataGrid/types.js +0 -2
  231. package/dist/components/data/DataGrid/AdvancedRequestDataGrid.d.ts +0 -10
  232. package/dist/components/data/DataGrid/AdvancedRequestDataGrid.js +0 -173
  233. package/dist/components/data/DataGrid/DataGridEditableCell.d.ts +0 -2
  234. package/dist/components/data/DataGrid/DataGridEditableCell.js +0 -27
  235. package/dist/components/data/DataGrid/FilterValuesScroller.d.ts +0 -13
  236. package/dist/components/data/DataGrid/FilterValuesScroller.js +0 -73
  237. package/dist/components/data/DataGrid/VirtualScroller.d.ts +0 -11
  238. package/dist/components/data/DataGrid/VirtualScroller.js +0 -41
  239. package/dist/components/data/DataGrid/helpers/advancedRequests.d.ts +0 -12
  240. package/dist/components/data/DataGrid/helpers/advancedRequests.js +0 -53
  241. package/dist/components/data/DataGrid/helpers.d.ts +0 -28
  242. package/dist/components/data/DataGrid/helpers.js +0 -436
  243. package/dist/components/data/SmartQueryDataGrid/helpers/columns.d.ts +0 -20
  244. package/dist/components/data/SmartQueryDataGrid/helpers/columns.js +0 -160
  245. package/dist/components/data/SmartQueryDataGrid/helpers/hooks.d.ts +0 -5
  246. package/dist/components/data/SmartQueryDataGrid/helpers/hooks.js +0 -41
  247. package/dist/components/data/SmartQueryDataGrid/helpers/index.d.ts +0 -2
  248. package/dist/components/data/SmartQueryDataGrid/helpers/index.js +0 -18
  249. package/dist/components/data/SmartQueryDataGrid/helpers/smartQueries.d.ts +0 -3
  250. package/dist/components/data/SmartQueryDataGrid/helpers/smartQueries.js +0 -15
  251. package/dist/components/data/SmartQueryDataGrid/hooks.d.ts +0 -9
  252. package/dist/components/data/SmartQueryDataGrid/hooks.js +0 -63
  253. package/dist/components/data/SmartQueryDataGrid/index.d.ts +0 -12
  254. package/dist/components/data/SmartQueryDataGrid/index.js +0 -242
  255. package/dist/components/data/SmartQueryDataGrid/types.d.ts +0 -22
  256. package/dist/components/data/SmartQueryDataGrid/types.js +0 -2
  257. package/dist/components/forms/Form/InputWithLabel.d.ts +0 -2
  258. package/dist/components/forms/Form/InputWithLabel.js +0 -10
  259. package/dist/components/forms/Form/types.d.ts +0 -7
  260. package/dist/components/forms/Form/types.js +0 -2
  261. package/dist/config/types.d.ts +0 -11
  262. package/dist/config/types.js +0 -2
  263. package/dist/services/requests/userPermissions.d.ts +0 -4
  264. package/dist/services/requests/userPermissions.js +0 -20
@@ -1,367 +1,369 @@
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>[];
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
+ addRows: (rows: R[]) => void;
214
+ updateRow: (row: Partial<R>) => void;
215
+ clearChangedRows: (keys?: string[]) => void;
216
+ };
217
+
218
+ export type DataGridContext<R> = Context<DataGridContextProps<R>>;
219
+
220
+ export const dataGridSettingCodec = t.partial(
221
+ {
222
+ width: t.number,
223
+ order: t.number,
224
+ },
225
+ 'DataGridSetting'
226
+ );
227
+ export const dataGridSettingsCodec = t.record(
228
+ t.string,
229
+ dataGridSettingCodec,
230
+ 'DataGridSettings'
231
+ );
232
+ export const dataGridSettingsByNameCodec = t.record(
233
+ t.string,
234
+ dataGridSettingsCodec,
235
+ 'DataGridSettingsByName'
236
+ );
237
+
238
+ export type DataGridSetting = t.TypeOf<typeof dataGridSettingCodec>;
239
+ export type DataGridSettings = t.TypeOf<typeof dataGridSettingsCodec>;
240
+ export type DataGridSettingsByName = t.TypeOf<
241
+ typeof dataGridSettingsByNameCodec
242
+ >;
243
+ export type DataGridSettingsTuple = [string, DataGridSetting];
244
+ export type DataGridSettingsArray = DataGridSettingsTuple[];
245
+ export type DataGridColumnKeyValuePair<R> = [string, DataGridColumn<R>];
246
+
247
+ export type DataGridCellProps<R> = {
248
+ row: R;
249
+ rowIndex: number;
250
+ columnKey: string;
251
+ columnIndex: number;
252
+ column: DataGridColumn<R>;
253
+ context: DataGridContext<R>;
254
+ className?: string;
255
+ style?: CSSProperties;
256
+ userSelect?: boolean;
257
+ color?: ThemeColor;
258
+ };
259
+ export type EditableDataGridCellProps<R, T> = DataGridCellProps<R> & {
260
+ column: EditableDataGridColumn<R, T>;
261
+ };
262
+
263
+ export type DataGridHeaderCellProps<R> = {
264
+ columnKey: string;
265
+ columnIndex: number;
266
+ column: DataGridColumn<R>;
267
+ context: DataGridContext<R>;
268
+ onFilterButtonClicked?: (columnKey: string) => void;
269
+ isFilterOpen?: boolean;
270
+ color?: ThemeColor;
271
+ };
272
+
273
+ export type DataGridSort = 'asc' | 'desc';
274
+
275
+ export type DataGridFilterPredicate<T> = (valueToVerify: T) => boolean;
276
+ export type DataGridFilterPredicateBuilder<T> = (
277
+ ...filterValues: T[]
278
+ ) => DataGridFilterPredicate<T>;
279
+
280
+ export type DataGridFilterOperators<K extends string, T> = {
281
+ [key in K]: DataGridFilterPredicateBuilder<T>;
282
+ };
283
+
284
+ export type DataGridFilterPredicates = {
285
+ date: DataGridFilterOperators<
286
+ 'before' | 'after' | 'equals' | 'notEquals' | 'inRange' | 'inArray',
287
+ string
288
+ >;
289
+ text: DataGridFilterOperators<
290
+ | 'contains'
291
+ | 'notContains'
292
+ | 'equals'
293
+ | 'notEquals'
294
+ | 'startsWith'
295
+ | 'endsWith'
296
+ | 'inArray',
297
+ string
298
+ >;
299
+ number: DataGridFilterOperators<
300
+ | 'equals'
301
+ | 'notEquals'
302
+ | 'lessThan'
303
+ | 'lessThanOrEqual'
304
+ | 'greaterThan'
305
+ | 'greaterThanOrEqual'
306
+ | 'inRange'
307
+ | 'inArray',
308
+ number
309
+ >;
310
+ };
311
+
312
+ export type DataGridFilterType = keyof DataGridFilterPredicates;
313
+ export type DataGridFilterDataType<T extends DataGridFilterType> =
314
+ DataGridFilterPredicates[T] extends DataGridFilterOperators<string, infer U>
315
+ ? U
316
+ : never;
317
+
318
+ export type DataGridFilterGetter<T extends DataGridFilterType> = (
319
+ value: any
320
+ ) => DataGridFilterDataType<T> | null;
321
+ export type DataGridFilterRenderer = (value: any) => ReactNode;
322
+ export type DataGridFilterFormatter = (value: any) => string;
323
+
324
+ export type DataGridFilterOperator<T extends DataGridFilterType> =
325
+ DataGridFilterPredicates[T] extends DataGridFilterOperators<infer K, any>
326
+ ? K
327
+ : never;
328
+
329
+ export type DataGridFilter<T extends string = DataGridFilterType> =
330
+ T extends DataGridFilterType
331
+ ? {
332
+ type: T;
333
+ operator: DataGridFilterOperator<T>;
334
+ getter: DataGridFilterGetter<T>;
335
+ renderer?: DataGridFilterRenderer;
336
+ formatter?: DataGridFilterFormatter;
337
+ values: (DataGridFilterDataType<T> | null)[];
338
+ }
339
+ : never;
340
+
341
+ export type DataGridFilterGroup = {
342
+ name: string;
343
+ displayValue: DataGridFilterValue;
344
+ values?: DataGridFilterValue[];
345
+ groups?: DataGridFilterGroup[];
346
+ };
347
+
348
+ export type DataGridFilterValue = string | number | null;
349
+
350
+ export type DataGridFilterCheckbox = {
351
+ displayValue: ReactNode;
352
+ title: string;
353
+ values: DataGridFilterValue[];
354
+ level: number;
355
+ };
356
+
357
+ export type DataGridRowTemplateProps<R> = {
358
+ selected?: boolean;
359
+ toggleSelection?: () => void;
360
+ context: DataGridContext<R>;
361
+ };
362
+
363
+ export type DataGridRefProps<R> = {
364
+ refresh: () => void;
365
+ setSelectedKeys: (keys: string[]) => void;
366
+ addRows: (rows: R[]) => void;
367
+ };
368
+
369
+ export type DataGridEditedRows<R> = Partial<R>[];