@addev-be/ui 0.18.1 → 0.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (265) 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/eslint.config.js +2 -27
  87. package/package.json +4 -13
  88. package/src/Icons.tsx +134 -134
  89. package/src/components/auth/LoginForm.tsx +84 -84
  90. package/src/components/auth/LoginPage.tsx +32 -32
  91. package/src/components/auth/PasswordRecoveryForm.tsx +52 -52
  92. package/src/components/auth/PasswordResetForm.tsx +112 -112
  93. package/src/components/auth/index.ts +4 -4
  94. package/src/components/auth/styles.ts +14 -14
  95. package/src/components/data/DataGrid/DataGridCell.tsx +77 -77
  96. package/src/components/data/DataGrid/DataGridColumnsModal/helpers.ts +9 -9
  97. package/src/components/data/DataGrid/DataGridColumnsModal/hooks.tsx +59 -59
  98. package/src/components/data/DataGrid/DataGridColumnsModal/index.tsx +182 -182
  99. package/src/components/data/DataGrid/DataGridColumnsModal/styles.ts +104 -104
  100. package/src/components/data/DataGrid/DataGridEditableCell/CheckboxEditableCell.tsx +38 -38
  101. package/src/components/data/DataGrid/DataGridEditableCell/DateEditableCell.tsx +39 -39
  102. package/src/components/data/DataGrid/DataGridEditableCell/NumberEditableCell.tsx +68 -68
  103. package/src/components/data/DataGrid/DataGridEditableCell/TextEditableCell.tsx +38 -38
  104. package/src/components/data/DataGrid/DataGridEditableCell/index.tsx +106 -106
  105. package/src/components/data/DataGrid/DataGridEditableCell/styles.ts +35 -35
  106. package/src/components/data/DataGrid/DataGridEditableCell/types.ts +19 -19
  107. package/src/components/data/DataGrid/DataGridFilterMenu/FilterValuesScroller.tsx +131 -131
  108. package/src/components/data/DataGrid/DataGridFilterMenu/hooks.tsx +81 -81
  109. package/src/components/data/DataGrid/DataGridFilterMenu/index.tsx +376 -376
  110. package/src/components/data/DataGrid/DataGridFilterMenu/styles.ts +97 -97
  111. package/src/components/data/DataGrid/DataGridFooter.tsx +45 -45
  112. package/src/components/data/DataGrid/DataGridHeader.tsx +185 -185
  113. package/src/components/data/DataGrid/DataGridHeaderCell.tsx +111 -111
  114. package/src/components/data/DataGrid/DataGridRowTemplate.tsx +82 -82
  115. package/src/components/data/DataGrid/FilterModalContent/index.tsx +136 -136
  116. package/src/components/data/DataGrid/FilterModalContent/styles.ts +22 -22
  117. package/src/components/data/DataGrid/constants.ts +6 -6
  118. package/src/components/data/DataGrid/helpers/columns.tsx +386 -386
  119. package/src/components/data/DataGrid/helpers/filters.ts +287 -287
  120. package/src/components/data/DataGrid/helpers/index.ts +2 -2
  121. package/src/components/data/DataGrid/hooks/index.ts +29 -29
  122. package/src/components/data/DataGrid/hooks/useDataGrid.tsx +381 -381
  123. package/src/components/data/DataGrid/hooks/useDataGridChangedRows.ts +97 -97
  124. package/src/components/data/DataGrid/hooks/useDataGridCopy.ts +174 -174
  125. package/src/components/data/DataGrid/hooks/useDataGridSettings.ts +48 -48
  126. package/src/components/data/DataGrid/hooks/useRefreshModal.tsx +48 -48
  127. package/src/components/data/DataGrid/index.tsx +112 -112
  128. package/src/components/data/DataGrid/styles.ts +379 -379
  129. package/src/components/data/DataGrid/types.ts +369 -369
  130. package/src/components/data/SqlRequestDataGrid/SqlRequestForeignListEditableCell.tsx +16 -16
  131. package/src/components/data/SqlRequestDataGrid/helpers/columns.tsx +481 -481
  132. package/src/components/data/SqlRequestDataGrid/helpers/index.ts +2 -2
  133. package/src/components/data/SqlRequestDataGrid/helpers/sqlRequests.ts +16 -16
  134. package/src/components/data/SqlRequestDataGrid/index.tsx +414 -403
  135. package/src/components/data/SqlRequestDataGrid/styles.ts +15 -15
  136. package/src/components/data/SqlRequestDataGrid/types.ts +74 -74
  137. package/src/components/data/SqlRequestForeignList/index.tsx +259 -259
  138. package/src/components/data/SqlRequestForeignList/styles.ts +43 -43
  139. package/src/components/data/SqlRequestForeignList/types.ts +34 -34
  140. package/src/components/data/SqlRequestGrid/filters/FiltersSidebar.tsx +110 -110
  141. package/src/components/data/SqlRequestGrid/filters/styles.ts +88 -88
  142. package/src/components/data/SqlRequestGrid/helpers/index.ts +1 -1
  143. package/src/components/data/SqlRequestGrid/helpers/sqlRequests.ts +16 -16
  144. package/src/components/data/SqlRequestGrid/index.tsx +316 -316
  145. package/src/components/data/SqlRequestGrid/styles.ts +20 -20
  146. package/src/components/data/SqlRequestGrid/types.ts +75 -75
  147. package/src/components/data/VirtualScroller/hooks.ts +71 -71
  148. package/src/components/data/VirtualScroller/index.tsx +91 -91
  149. package/src/components/data/VirtualScroller/styles.ts +58 -58
  150. package/src/components/data/VirtualScroller/types.ts +12 -12
  151. package/src/components/data/index.ts +16 -16
  152. package/src/components/forms/AutoTextArea.tsx +41 -41
  153. package/src/components/forms/Button.tsx +133 -133
  154. package/src/components/forms/Form/Checkbox.tsx +12 -12
  155. package/src/components/forms/Form/FormGroup.tsx +31 -31
  156. package/src/components/forms/Form/Input.tsx +16 -16
  157. package/src/components/forms/Form/Row.tsx +32 -32
  158. package/src/components/forms/Form/Select.tsx +81 -81
  159. package/src/components/forms/Form/TextArea.tsx +17 -17
  160. package/src/components/forms/Form/index.tsx +45 -45
  161. package/src/components/forms/Form/styles.ts +180 -180
  162. package/src/components/forms/IconButton.tsx +57 -57
  163. package/src/components/forms/IndeterminateCheckbox.tsx +46 -46
  164. package/src/components/forms/NumberInput.tsx +53 -53
  165. package/src/components/forms/Select.tsx +35 -35
  166. package/src/components/forms/VerticalLabel.tsx +20 -20
  167. package/src/components/forms/index.ts +9 -9
  168. package/src/components/forms/styles.ts +29 -29
  169. package/src/components/index.ts +6 -6
  170. package/src/components/layout/Columns.ts +24 -24
  171. package/src/components/layout/Dropdown/index.tsx +113 -113
  172. package/src/components/layout/Dropdown/styles.ts +45 -45
  173. package/src/components/layout/Grid/index.tsx +8 -8
  174. package/src/components/layout/Grid/styles.ts +34 -34
  175. package/src/components/layout/Loading/index.tsx +29 -29
  176. package/src/components/layout/Loading/styles.ts +29 -29
  177. package/src/components/layout/Masonry/index.tsx +29 -29
  178. package/src/components/layout/Masonry/styles.ts +20 -20
  179. package/src/components/layout/Modal/index.tsx +51 -51
  180. package/src/components/layout/Modal/styles.ts +125 -125
  181. package/src/components/layout/index.ts +6 -6
  182. package/src/components/search/HighlightedText.tsx +41 -41
  183. package/src/components/search/QuickSearchBar.tsx +100 -100
  184. package/src/components/search/QuickSearchResults.tsx +86 -86
  185. package/src/components/search/index.ts +9 -9
  186. package/src/components/search/styles.ts +96 -96
  187. package/src/components/search/types.ts +29 -29
  188. package/src/components/ui/Avatar/index.tsx +54 -54
  189. package/src/components/ui/Avatar/styles.ts +61 -61
  190. package/src/components/ui/Card/index.tsx +14 -14
  191. package/src/components/ui/Card/styles.ts +37 -37
  192. package/src/components/ui/ContextMenu/index.tsx +79 -79
  193. package/src/components/ui/ContextMenu/styles.ts +119 -119
  194. package/src/components/ui/Ellipsis.tsx +34 -34
  195. package/src/components/ui/Message/index.tsx +57 -57
  196. package/src/components/ui/Message/styles.ts +40 -40
  197. package/src/components/ui/index.ts +6 -6
  198. package/src/config/index.ts +14 -14
  199. package/src/helpers/dates.ts +17 -17
  200. package/src/helpers/getScrollbarSize.ts +14 -14
  201. package/src/helpers/index.ts +4 -4
  202. package/src/helpers/numbers.ts +63 -63
  203. package/src/helpers/responsive.ts +83 -83
  204. package/src/helpers/text.ts +13 -13
  205. package/src/hooks/index.ts +7 -7
  206. package/src/hooks/useContainerMediaQuery.ts +7 -7
  207. package/src/hooks/useElementSize.ts +24 -24
  208. package/src/hooks/useMediaQuery.ts +9 -9
  209. package/src/hooks/useMediaQueryForWidth.ts +35 -35
  210. package/src/hooks/useMutableState.ts +19 -19
  211. package/src/hooks/useShowArchived.ts +28 -28
  212. package/src/hooks/useWindowSize.ts +20 -20
  213. package/src/index.ts +9 -9
  214. package/src/providers/AuthenticationProvider/helpers.ts +3 -3
  215. package/src/providers/AuthenticationProvider/index.tsx +303 -303
  216. package/src/providers/LoadingProvider/index.tsx +47 -47
  217. package/src/providers/PortalsProvider/index.tsx +54 -54
  218. package/src/providers/PortalsProvider/styles.ts +31 -31
  219. package/src/providers/SettingsProvider/index.tsx +70 -70
  220. package/src/providers/ThemeProvider/ThemeProvider.ts +63 -63
  221. package/src/providers/ThemeProvider/defaultTheme.ts +457 -457
  222. package/src/providers/ThemeProvider/helpers.ts +11 -11
  223. package/src/providers/ThemeProvider/index.ts +4 -4
  224. package/src/providers/ThemeProvider/types.ts +131 -131
  225. package/src/providers/TrackingProvider/hooks.ts +14 -14
  226. package/src/providers/TrackingProvider/index.tsx +71 -71
  227. package/src/providers/UiProviders/index.tsx +68 -68
  228. package/src/providers/UiProviders/styles.ts +10 -10
  229. package/src/providers/hooks.ts +12 -12
  230. package/src/providers/index.ts +8 -8
  231. package/src/services/HttpService.ts +92 -92
  232. package/src/services/WebSocketService.ts +155 -155
  233. package/src/services/advancedRequests.ts +102 -102
  234. package/src/services/base.ts +23 -23
  235. package/src/services/globalSearch.ts +32 -32
  236. package/src/services/hooks.ts +92 -92
  237. package/src/services/index.ts +21 -21
  238. package/src/services/requests/auth.ts +44 -44
  239. package/src/services/requests/generic.ts +62 -62
  240. package/src/services/requests/tracking.ts +12 -12
  241. package/src/services/requests/userProfiles.ts +35 -35
  242. package/src/services/requests/users.ts +28 -28
  243. package/src/services/smartQueries.ts +122 -122
  244. package/src/services/sqlRequests.ts +111 -111
  245. package/src/services/types/auth.ts +131 -131
  246. package/src/services/types/base.ts +10 -10
  247. package/src/services/types/generic.ts +96 -96
  248. package/src/services/types/tracking.ts +39 -39
  249. package/src/services/types/userProfiles.ts +107 -107
  250. package/src/services/types/users.ts +106 -106
  251. package/src/services/updateSqlRequests.ts +34 -34
  252. package/src/styles/animations.scss +30 -30
  253. package/src/styles/index.scss +42 -42
  254. package/src/typings.d.ts +19 -19
  255. package/tsconfig.json +18 -18
  256. package/tsconfig.tsbuildinfo +1 -1
  257. package/dist/components/forms/Form/Row.d.ts +0 -9
  258. package/dist/components/forms/Form/Row.js +0 -10
  259. package/dist/components/forms/NumberInput.d.ts +0 -9
  260. package/dist/components/forms/NumberInput.js +0 -41
  261. package/dist/components/ui/ToastNotification.d.ts +0 -14
  262. package/dist/components/ui/ToastNotification.js +0 -78
  263. package/dist/hooks/useMutableState.d.ts +0 -2
  264. package/dist/hooks/useMutableState.js +0 -16
  265. package/dist/poppins-700.woff2 +0 -0
@@ -1,369 +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
- 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>[];
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: 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>[];