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