@addev-be/ui 0.1.18 → 0.1.20

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 (226) hide show
  1. package/assets/icons/arrow-down-a-z.svg +1 -1
  2. package/assets/icons/arrow-up-z-a.svg +1 -1
  3. package/assets/icons/check.svg +1 -1
  4. package/assets/icons/down.svg +1 -1
  5. package/assets/icons/filter-full.svg +1 -1
  6. package/assets/icons/filter.svg +1 -1
  7. package/assets/icons/hashtag.svg +1 -1
  8. package/assets/icons/image-slash.svg +1 -1
  9. package/assets/icons/left.svg +1 -1
  10. package/assets/icons/magnifier.svg +1 -1
  11. package/assets/icons/phone.svg +1 -1
  12. package/assets/icons/right.svg +1 -1
  13. package/assets/icons/spinner-third.svg +1 -1
  14. package/assets/icons/table-columns.svg +1 -1
  15. package/assets/icons/up.svg +1 -1
  16. package/assets/icons/user-tie.svg +1 -1
  17. package/dist/Icons.d.ts +31 -0
  18. package/dist/Icons.js +92 -0
  19. package/dist/components/data/DataGrid/AdvancedRequestDataGrid.d.ts +10 -0
  20. package/dist/components/data/DataGrid/AdvancedRequestDataGrid.js +173 -0
  21. package/dist/components/data/DataGrid/DataGridCell.d.ts +2 -0
  22. package/dist/components/data/DataGrid/DataGridCell.js +59 -0
  23. package/dist/components/data/DataGrid/DataGridColumnsModal/helpers.d.ts +2 -0
  24. package/dist/components/data/DataGrid/DataGridColumnsModal/helpers.js +24 -0
  25. package/dist/components/data/DataGrid/DataGridColumnsModal/hooks.d.ts +6 -0
  26. package/dist/components/data/DataGrid/DataGridColumnsModal/hooks.js +37 -0
  27. package/dist/components/data/DataGrid/DataGridColumnsModal/index.d.ts +15 -0
  28. package/dist/components/data/DataGrid/DataGridColumnsModal/index.js +111 -0
  29. package/dist/components/data/DataGrid/DataGridColumnsModal/styles.d.ts +22 -0
  30. package/dist/components/data/DataGrid/DataGridColumnsModal/styles.js +54 -0
  31. package/dist/components/data/DataGrid/DataGridEditableCell.d.ts +2 -0
  32. package/dist/components/data/DataGrid/DataGridEditableCell.js +32 -0
  33. package/dist/components/data/DataGrid/DataGridFilterMenu/hooks.d.ts +9 -0
  34. package/dist/components/data/DataGrid/DataGridFilterMenu/hooks.js +52 -0
  35. package/dist/components/data/DataGrid/DataGridFilterMenu/index.d.ts +9 -0
  36. package/dist/components/data/DataGrid/DataGridFilterMenu/index.js +140 -0
  37. package/dist/components/data/DataGrid/DataGridFilterMenu/styles.d.ts +15 -0
  38. package/dist/components/data/DataGrid/DataGridFilterMenu/styles.js +48 -0
  39. package/dist/components/data/DataGrid/DataGridFooter.d.ts +4 -0
  40. package/dist/components/data/DataGrid/DataGridFooter.js +31 -0
  41. package/dist/components/data/DataGrid/DataGridHeader.d.ts +4 -0
  42. package/dist/components/data/DataGrid/DataGridHeader.js +71 -0
  43. package/dist/components/data/DataGrid/DataGridHeaderCell.d.ts +2 -0
  44. package/dist/components/data/DataGrid/DataGridHeaderCell.js +99 -0
  45. package/dist/components/data/DataGrid/FilterModalContent/index.d.ts +7 -0
  46. package/dist/components/data/DataGrid/FilterModalContent/index.js +106 -0
  47. package/dist/components/data/DataGrid/FilterModalContent/styles.d.ts +3 -0
  48. package/dist/components/data/DataGrid/FilterModalContent/styles.js +15 -0
  49. package/dist/components/data/DataGrid/FilterValuesScroller.d.ts +12 -0
  50. package/dist/components/data/DataGrid/FilterValuesScroller.js +74 -0
  51. package/dist/components/data/DataGrid/VirtualScroller.d.ts +11 -0
  52. package/dist/components/data/DataGrid/VirtualScroller.js +46 -0
  53. package/dist/components/data/DataGrid/helpers/advancedRequests.d.ts +12 -0
  54. package/dist/components/data/DataGrid/helpers/advancedRequests.js +53 -0
  55. package/dist/components/data/DataGrid/helpers/columns.d.ts +13 -0
  56. package/dist/components/data/DataGrid/helpers/columns.js +167 -0
  57. package/dist/components/data/DataGrid/helpers/filters.d.ts +16 -0
  58. package/dist/components/data/DataGrid/helpers/filters.js +249 -0
  59. package/dist/components/data/DataGrid/helpers/index.d.ts +3 -0
  60. package/dist/components/data/DataGrid/helpers/index.js +19 -0
  61. package/dist/components/data/DataGrid/helpers.d.ts +28 -0
  62. package/dist/components/data/DataGrid/helpers.js +436 -0
  63. package/dist/components/data/DataGrid/hooks/index.d.ts +7 -0
  64. package/dist/components/data/DataGrid/hooks/index.js +34 -0
  65. package/dist/components/data/DataGrid/hooks/useDataGrid.d.ts +2 -0
  66. package/dist/components/data/DataGrid/hooks/useDataGrid.js +199 -0
  67. package/dist/components/data/DataGrid/hooks/useDataGridCopy.d.ts +4 -0
  68. package/dist/components/data/DataGrid/hooks/useDataGridCopy.js +160 -0
  69. package/dist/components/data/DataGrid/hooks/useDataGridSettings.d.ts +16 -0
  70. package/dist/components/data/DataGrid/hooks/useDataGridSettings.js +44 -0
  71. package/dist/components/data/DataGrid/index.d.ts +2 -0
  72. package/dist/components/data/DataGrid/index.js +91 -0
  73. package/dist/components/data/DataGrid/styles.d.ts +55 -0
  74. package/dist/components/data/DataGrid/styles.js +121 -0
  75. package/dist/components/data/DataGrid/types.d.ts +162 -0
  76. package/dist/components/data/DataGrid/types.js +34 -0
  77. package/dist/components/data/index.d.ts +3 -0
  78. package/dist/components/data/index.js +19 -0
  79. package/dist/components/forms/Button.d.ts +10 -0
  80. package/dist/components/forms/Button.js +70 -0
  81. package/dist/components/forms/IconButton.d.ts +7 -0
  82. package/dist/components/forms/IconButton.js +64 -0
  83. package/dist/components/forms/IndeterminateCheckbox.d.ts +8 -0
  84. package/dist/components/forms/IndeterminateCheckbox.js +41 -0
  85. package/dist/components/forms/Select.d.ts +10 -0
  86. package/dist/components/forms/Select.js +49 -0
  87. package/dist/components/forms/index.d.ts +5 -0
  88. package/dist/components/forms/index.js +23 -0
  89. package/dist/components/forms/styles.d.ts +2 -0
  90. package/dist/components/forms/styles.js +34 -0
  91. package/dist/components/index.d.ts +3 -0
  92. package/dist/components/index.js +19 -0
  93. package/dist/components/layout/Dropdown/index.d.ts +11 -0
  94. package/dist/components/layout/Dropdown/index.js +85 -0
  95. package/dist/components/layout/Dropdown/styles.d.ts +11 -0
  96. package/dist/components/layout/Dropdown/styles.js +45 -0
  97. package/dist/components/layout/Loading/index.d.ts +6 -0
  98. package/dist/components/layout/Loading/index.js +42 -0
  99. package/dist/components/layout/Loading/styles.d.ts +6 -0
  100. package/dist/components/layout/Loading/styles.js +18 -0
  101. package/dist/components/layout/Modal/index.d.ts +16 -0
  102. package/dist/components/layout/Modal/index.js +67 -0
  103. package/dist/components/layout/Modal/styles.d.ts +32 -0
  104. package/dist/components/layout/Modal/styles.js +52 -0
  105. package/dist/components/layout/index.d.ts +3 -0
  106. package/dist/components/layout/index.js +19 -0
  107. package/dist/config/index.d.ts +10 -0
  108. package/dist/config/index.js +2 -0
  109. package/dist/config/types.d.ts +11 -0
  110. package/dist/config/types.js +2 -0
  111. package/dist/helpers/getScrollbarSize.d.ts +1 -0
  112. package/dist/helpers/getScrollbarSize.js +17 -0
  113. package/dist/helpers/numbers.d.ts +3 -0
  114. package/dist/helpers/numbers.js +31 -0
  115. package/dist/hooks/index.d.ts +2 -0
  116. package/dist/hooks/index.js +18 -0
  117. package/dist/hooks/useElementSize.d.ts +4 -0
  118. package/dist/hooks/useElementSize.js +23 -0
  119. package/dist/hooks/useWindowSize.d.ts +4 -0
  120. package/dist/hooks/useWindowSize.js +19 -0
  121. package/dist/index.d.ts +5 -0
  122. package/dist/index.js +21 -0
  123. package/dist/providers/PortalsProvider/index.d.ts +10 -0
  124. package/dist/providers/PortalsProvider/index.js +46 -0
  125. package/dist/providers/PortalsProvider/styles.d.ts +9 -0
  126. package/dist/providers/PortalsProvider/styles.js +21 -0
  127. package/dist/providers/SettingsProvider/index.d.ts +8 -0
  128. package/dist/providers/SettingsProvider/index.js +54 -0
  129. package/dist/providers/ThemeProvider/ThemeProvider.d.ts +7 -0
  130. package/dist/providers/ThemeProvider/ThemeProvider.js +51 -0
  131. package/dist/providers/ThemeProvider/defaultTheme.d.ts +2 -0
  132. package/dist/providers/ThemeProvider/defaultTheme.js +417 -0
  133. package/dist/providers/ThemeProvider/index.d.ts +2 -0
  134. package/dist/providers/ThemeProvider/index.js +5 -0
  135. package/dist/providers/ThemeProvider/types.d.ts +24 -0
  136. package/dist/providers/ThemeProvider/types.js +2 -0
  137. package/dist/providers/UiProviders/index.d.ts +12 -0
  138. package/dist/providers/UiProviders/index.js +62 -0
  139. package/dist/providers/UiProviders/styles.d.ts +3 -0
  140. package/dist/providers/UiProviders/styles.js +13 -0
  141. package/dist/providers/hooks.d.ts +3 -0
  142. package/dist/providers/hooks.js +13 -0
  143. package/dist/providers/index.d.ts +4 -0
  144. package/dist/providers/index.js +20 -0
  145. package/dist/services/WebSocketService.d.ts +24 -0
  146. package/dist/services/WebSocketService.js +136 -0
  147. package/dist/services/advancedRequests.d.ts +41 -0
  148. package/dist/services/advancedRequests.js +13 -0
  149. package/dist/services/base.d.ts +19 -0
  150. package/dist/services/base.js +10 -0
  151. package/dist/services/hooks.d.ts +1 -0
  152. package/dist/services/hooks.js +11 -0
  153. package/dist/services/index.d.ts +2 -0
  154. package/dist/services/index.js +18 -0
  155. package/package.json +4 -3
  156. package/src/Icons.tsx +80 -80
  157. package/src/components/data/DataGrid/AdvancedRequestDataGrid.tsx +236 -236
  158. package/src/components/data/DataGrid/DataGridCell.tsx +78 -78
  159. package/src/components/data/DataGrid/DataGridColumnsModal/helpers.ts +14 -14
  160. package/src/components/data/DataGrid/DataGridColumnsModal/hooks.tsx +58 -58
  161. package/src/components/data/DataGrid/DataGridColumnsModal/index.tsx +181 -181
  162. package/src/components/data/DataGrid/DataGridColumnsModal/styles.ts +104 -104
  163. package/src/components/data/DataGrid/DataGridEditableCell.tsx +54 -54
  164. package/src/components/data/DataGrid/DataGridFilterMenu/hooks.tsx +75 -75
  165. package/src/components/data/DataGrid/DataGridFilterMenu/index.tsx +190 -190
  166. package/src/components/data/DataGrid/DataGridFilterMenu/styles.ts +100 -100
  167. package/src/components/data/DataGrid/DataGridFooter.tsx +64 -64
  168. package/src/components/data/DataGrid/DataGridHeader.tsx +129 -129
  169. package/src/components/data/DataGrid/DataGridHeaderCell.tsx +166 -166
  170. package/src/components/data/DataGrid/FilterModalContent/index.tsx +125 -125
  171. package/src/components/data/DataGrid/FilterModalContent/styles.ts +22 -22
  172. package/src/components/data/DataGrid/FilterValuesScroller.tsx +131 -131
  173. package/src/components/data/DataGrid/VirtualScroller.tsx +51 -51
  174. package/src/components/data/DataGrid/helpers/advancedRequests.tsx +61 -61
  175. package/src/components/data/DataGrid/helpers/columns.tsx +259 -259
  176. package/src/components/data/DataGrid/helpers/filters.ts +219 -219
  177. package/src/components/data/DataGrid/helpers/index.ts +3 -3
  178. package/src/components/data/DataGrid/hooks/index.ts +30 -30
  179. package/src/components/data/DataGrid/hooks/useDataGrid.tsx +225 -225
  180. package/src/components/data/DataGrid/hooks/useDataGridCopy.ts +166 -166
  181. package/src/components/data/DataGrid/hooks/useDataGridSettings.ts +49 -49
  182. package/src/components/data/DataGrid/index.tsx +145 -145
  183. package/src/components/data/DataGrid/styles.ts +284 -284
  184. package/src/components/data/DataGrid/types.ts +232 -232
  185. package/src/components/data/index.ts +3 -3
  186. package/src/components/forms/Button.tsx +99 -99
  187. package/src/components/forms/IconButton.tsx +57 -57
  188. package/src/components/forms/IndeterminateCheckbox.tsx +46 -46
  189. package/src/components/forms/Select.tsx +40 -40
  190. package/src/components/forms/index.ts +5 -5
  191. package/src/components/forms/styles.ts +20 -20
  192. package/src/components/index.ts +3 -3
  193. package/src/components/layout/Dropdown/index.tsx +79 -79
  194. package/src/components/layout/Dropdown/styles.ts +44 -44
  195. package/src/components/layout/Loading/index.tsx +29 -28
  196. package/src/components/layout/Loading/styles.ts +29 -29
  197. package/src/components/layout/Modal/index.tsx +51 -51
  198. package/src/components/layout/Modal/styles.ts +110 -110
  199. package/src/components/layout/index.ts +3 -3
  200. package/src/config/index.ts +14 -14
  201. package/src/helpers/getScrollbarSize.ts +14 -14
  202. package/src/helpers/numbers.ts +20 -20
  203. package/src/hooks/index.ts +2 -2
  204. package/src/hooks/useElementSize.ts +24 -24
  205. package/src/hooks/useWindowSize.ts +20 -20
  206. package/src/index.ts +7 -7
  207. package/src/providers/PortalsProvider/index.tsx +54 -54
  208. package/src/providers/PortalsProvider/styles.ts +27 -27
  209. package/src/providers/SettingsProvider/index.tsx +70 -70
  210. package/src/providers/ThemeProvider/ThemeProvider.ts +55 -55
  211. package/src/providers/ThemeProvider/defaultTheme.ts +444 -444
  212. package/src/providers/ThemeProvider/index.ts +3 -3
  213. package/src/providers/ThemeProvider/types.ts +123 -123
  214. package/src/providers/UiProviders/index.tsx +65 -65
  215. package/src/providers/UiProviders/styles.ts +10 -10
  216. package/src/providers/hooks.ts +8 -8
  217. package/src/providers/index.ts +5 -5
  218. package/src/services/WebSocketService.ts +147 -147
  219. package/src/services/advancedRequests.ts +100 -100
  220. package/src/services/base.ts +31 -31
  221. package/src/services/hooks.ts +13 -13
  222. package/src/services/index.ts +2 -2
  223. package/src/styles/animations.scss +30 -30
  224. package/src/styles/index.scss +42 -42
  225. package/src/typings.d.ts +6 -6
  226. package/tsconfig.tsbuildinfo +1 -0
@@ -1,232 +1,232 @@
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
- MouseEvent,
10
- ReactNode,
11
- SetStateAction,
12
- } from 'react';
13
-
14
- import { FieldDTO } from '../../../services/advancedRequests';
15
- import { SettingsContextProps } from '../../../providers/SettingsProvider';
16
- import { ThemeColor } from '../../../providers/ThemeProvider/types';
17
-
18
- export type DataGridColumn<
19
- R,
20
- T extends DataGridFilterType | undefined = DataGridFilterType
21
- > = {
22
- bodyClassName?: string;
23
- className?: string;
24
- editable?: boolean;
25
- excelFormatter?: (value: any) => string;
26
- excelValue?: (value: any) => string;
27
- field?: FieldDTO;
28
- filter?: T extends undefined ? never : AnyDataGridFilter<R>;
29
- footer?: (allRows: R[], filteredRows: R[], selectedRows: R[]) => ReactNode;
30
- footerClassName?: string;
31
- getter?: (row: R) => string | number;
32
- headerClassName?: string;
33
- name: string;
34
- order?: number;
35
- propertyName?: keyof R;
36
- render?: (column: DataGridColumn<R, T>, row: R) => ReactNode | string;
37
- resizable?: boolean;
38
- sortGetter?: (row: R) => string | number;
39
- type?: 'text' | 'number' | 'date';
40
- width?: number;
41
- settingsContext?: Context<SettingsContextProps>;
42
- };
43
-
44
- export type DataGridColumns<R> = Record<
45
- string,
46
- DataGridColumn<R, DataGridFilterType | undefined>
47
- >;
48
-
49
- export type DataGridFilters<R> = Record<
50
- string,
51
- DataGridFilter<R, DataGridFilterType>
52
- >;
53
-
54
- export type DataGridProps<R> = {
55
- name?: string;
56
- className?: string;
57
- rows: R[];
58
- columns: DataGridColumns<R>;
59
- rowKey: keyof R | ((row: R) => string);
60
- selectable?: boolean;
61
- editable?: boolean;
62
- onRowDoubleClick?: (row: R, e: MouseEvent) => void;
63
- onSelectionChange?: (selectedRows: R[]) => void;
64
- onFiltersChanged?: (filters: DataGridFilters<R>) => void;
65
- onSortsChanged?: (sorts: Record<string, DataGridSort>) => void;
66
- onVisibleRowsChange?: (startIndex: number, length: number) => void;
67
- onCellEdited?: (row: R, columnKey: string, value: any) => void;
68
- rowClassNameGetter?: (row: R | null) => {
69
- className?: string;
70
- style?: CSSProperties;
71
- };
72
- headerRowHeight?: number;
73
- rowHeight?: number;
74
- filter?: boolean;
75
- sort?: boolean;
76
- filterValuesLoader?: (
77
- columnKey: string
78
- ) => Promise<(string | number | null)[]>;
79
- // copyTableHandler?: (
80
- // includeHeaders?: boolean,
81
- // includeFooters?: boolean
82
- // ) => Promise<void>;
83
- loadCopyRows?: () => Promise<R[]>;
84
- refresh?: () => void;
85
- headerColor?: ThemeColor;
86
- };
87
-
88
- export type DataGridContextProps<R> = DataGridProps<R> & {
89
- editingCell?: [number, number];
90
- setEditingCell: Dispatch<SetStateAction<[number, number]>>;
91
- sortedRows: R[];
92
- selectedRows: R[];
93
- setSelectedRows: (selection: R[]) => void;
94
- sorts?: Record<string, DataGridSort>;
95
- setSorts: (sorts: Record<string, DataGridSort>) => void;
96
- filters?: DataGridFilters<R>;
97
- setFilters: Dispatch<SetStateAction<DataGridFilters<R>>>;
98
- visibleColumns: DataGridColumnKeyValuePair<R>[];
99
- copyTable: (
100
- includeHeaders?: boolean,
101
- includeFooters?: boolean
102
- ) => Promise<void>;
103
- setColumnWidth: (key: string, width: number) => void;
104
- saveSettings: (newSettings?: DataGridSettings) => void;
105
- settings: DataGridSettings;
106
- setSettings: Dispatch<SetStateAction<DataGridSettings>>;
107
- visibleRows: R[];
108
- scrollableRef: React.RefObject<HTMLDivElement>;
109
- onScroll: (e: React.UIEvent<HTMLDivElement>) => void;
110
- index: number;
111
- length: number;
112
- };
113
-
114
- export type DataGridContext<R> = Context<DataGridContextProps<R>>;
115
-
116
- export const dataGridSettingCodec = t.partial(
117
- {
118
- width: t.number,
119
- order: t.number,
120
- },
121
- 'DataGridSetting'
122
- );
123
- export const dataGridSettingsCodec = t.record(
124
- t.string,
125
- dataGridSettingCodec,
126
- 'DataGridSettings'
127
- );
128
- export const dataGridSettingsByNameCodec = t.record(
129
- t.string,
130
- dataGridSettingsCodec,
131
- 'DataGridSettingsByName'
132
- );
133
-
134
- export type DataGridSetting = t.TypeOf<typeof dataGridSettingCodec>;
135
- export type DataGridSettings = t.TypeOf<typeof dataGridSettingsCodec>;
136
- export type DataGridSettingsByName = t.TypeOf<
137
- typeof dataGridSettingsByNameCodec
138
- >;
139
- export type DataGridSettingsTuple = [string, DataGridSetting];
140
- export type DataGridSettingsArray = DataGridSettingsTuple[];
141
- export type DataGridColumnKeyValuePair<R> = [string, DataGridColumn<R, any>];
142
-
143
- export type DataGridCellProps<R> = {
144
- row: R;
145
- rowIndex: number;
146
- columnKey: string;
147
- columnIndex: number;
148
- column: DataGridColumn<R>;
149
- context: DataGridContext<R>;
150
- className?: string;
151
- style?: CSSProperties;
152
- };
153
-
154
- export type DataGridHeaderCellProps<R> = {
155
- columnKey: string;
156
- columnIndex: number;
157
- column: DataGridColumn<R>;
158
- context: DataGridContext<R>;
159
- onFilterButtonClicked?: (columnKey: string) => void;
160
- isFilterOpen?: boolean;
161
- };
162
-
163
- export type DataGridSort = 'asc' | 'desc';
164
-
165
- export type DataGridFilterType = 'text' | 'number';
166
- export type DataGridFilterDataType<T extends DataGridFilterType> =
167
- T extends 'text' ? string : number;
168
-
169
- export type DataGridFilterPredicate<T> = (valueToVerify: T) => boolean;
170
- export type DataGridFilterPredicateBuilder<T> = (
171
- row: any,
172
- ...filterValues: T[]
173
- ) => DataGridFilterPredicate<T>;
174
-
175
- export type DataGridFilterGetter<R, T extends DataGridFilterType> = (
176
- row: R
177
- ) => DataGridFilterDataType<T> | null;
178
- export type DataGridFilterFormatter = (
179
- value: string | number | null
180
- ) => string | null;
181
-
182
- export type DataGridFilterPredicates = {
183
- text: {
184
- contains: DataGridFilterPredicateBuilder<string>;
185
- notContains: DataGridFilterPredicateBuilder<string>;
186
- equals: DataGridFilterPredicateBuilder<string>;
187
- notEquals: DataGridFilterPredicateBuilder<string>;
188
- startsWith: DataGridFilterPredicateBuilder<string>;
189
- endsWith: DataGridFilterPredicateBuilder<string>;
190
- inArray: DataGridFilterPredicateBuilder<string>;
191
- };
192
- number: {
193
- equals: DataGridFilterPredicateBuilder<number>;
194
- notEquals: DataGridFilterPredicateBuilder<number>;
195
- lessThan: DataGridFilterPredicateBuilder<number>;
196
- lessThanOrEqual: DataGridFilterPredicateBuilder<number>;
197
- greaterThan: DataGridFilterPredicateBuilder<number>;
198
- greaterThanOrEqual: DataGridFilterPredicateBuilder<number>;
199
- inRange: DataGridFilterPredicateBuilder<number>;
200
- inArray: DataGridFilterPredicateBuilder<number>;
201
- };
202
- };
203
-
204
- export type DataGridFilterOperator<T extends DataGridFilterType> =
205
- keyof DataGridFilterPredicates[T];
206
-
207
- export type DataGridFilter<
208
- R,
209
- T extends DataGridFilterType = DataGridFilterType
210
- > = {
211
- type: T;
212
- operator: keyof DataGridFilterPredicates[T];
213
- getter: DataGridFilterGetter<R, T>;
214
- formatter?: DataGridFilterFormatter;
215
- values: (DataGridFilterDataType<T> | null)[];
216
- };
217
-
218
- export type AnyDataGridFilter<R> =
219
- | DataGridFilter<R, 'text'>
220
- | DataGridFilter<R, 'number'>;
221
-
222
- export type DataGridFilterGroup<R> = {
223
- name: string;
224
- values?: R[];
225
- groups?: DataGridFilterGroup<R>[];
226
- };
227
-
228
- export type DataGridFilterCheckbox<R extends string | number | null> = {
229
- displayValue: string | null;
230
- values: R[];
231
- level: number;
232
- };
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
+ MouseEvent,
10
+ ReactNode,
11
+ SetStateAction,
12
+ } from 'react';
13
+
14
+ import { FieldDTO } from '../../../services/advancedRequests';
15
+ import { SettingsContextProps } from '../../../providers/SettingsProvider';
16
+ import { ThemeColor } from '../../../providers/ThemeProvider/types';
17
+
18
+ export type DataGridColumn<
19
+ R,
20
+ T extends DataGridFilterType | undefined = DataGridFilterType
21
+ > = {
22
+ bodyClassName?: string;
23
+ className?: string;
24
+ editable?: boolean;
25
+ excelFormatter?: (value: any) => string;
26
+ excelValue?: (value: any) => string;
27
+ field?: FieldDTO;
28
+ filter?: T extends undefined ? never : AnyDataGridFilter<R>;
29
+ footer?: (allRows: R[], filteredRows: R[], selectedRows: R[]) => ReactNode;
30
+ footerClassName?: string;
31
+ getter?: (row: R) => string | number;
32
+ headerClassName?: string;
33
+ name: string;
34
+ order?: number;
35
+ propertyName?: keyof R;
36
+ render?: (column: DataGridColumn<R, T>, row: R) => ReactNode | string;
37
+ resizable?: boolean;
38
+ sortGetter?: (row: R) => string | number;
39
+ type?: 'text' | 'number' | 'date';
40
+ width?: number;
41
+ settingsContext?: Context<SettingsContextProps>;
42
+ };
43
+
44
+ export type DataGridColumns<R> = Record<
45
+ string,
46
+ DataGridColumn<R, DataGridFilterType | undefined>
47
+ >;
48
+
49
+ export type DataGridFilters<R> = Record<
50
+ string,
51
+ DataGridFilter<R, DataGridFilterType>
52
+ >;
53
+
54
+ export type DataGridProps<R> = {
55
+ name?: string;
56
+ className?: string;
57
+ rows: R[];
58
+ columns: DataGridColumns<R>;
59
+ rowKey: keyof R | ((row: R) => string);
60
+ selectable?: boolean;
61
+ editable?: boolean;
62
+ onRowDoubleClick?: (row: R, e: MouseEvent) => void;
63
+ onSelectionChange?: (selectedRows: R[]) => void;
64
+ onFiltersChanged?: (filters: DataGridFilters<R>) => void;
65
+ onSortsChanged?: (sorts: Record<string, DataGridSort>) => void;
66
+ onVisibleRowsChange?: (startIndex: number, length: number) => void;
67
+ onCellEdited?: (row: R, columnKey: string, value: any) => void;
68
+ rowClassNameGetter?: (row: R | null) => {
69
+ className?: string;
70
+ style?: CSSProperties;
71
+ };
72
+ headerRowHeight?: number;
73
+ rowHeight?: number;
74
+ filter?: boolean;
75
+ sort?: boolean;
76
+ filterValuesLoader?: (
77
+ columnKey: string
78
+ ) => Promise<(string | number | null)[]>;
79
+ // copyTableHandler?: (
80
+ // includeHeaders?: boolean,
81
+ // includeFooters?: boolean
82
+ // ) => Promise<void>;
83
+ loadCopyRows?: () => Promise<R[]>;
84
+ refresh?: () => void;
85
+ headerColor?: ThemeColor;
86
+ };
87
+
88
+ export type DataGridContextProps<R> = DataGridProps<R> & {
89
+ editingCell?: [number, number];
90
+ setEditingCell: Dispatch<SetStateAction<[number, number]>>;
91
+ sortedRows: R[];
92
+ selectedRows: R[];
93
+ setSelectedRows: (selection: R[]) => void;
94
+ sorts?: Record<string, DataGridSort>;
95
+ setSorts: (sorts: Record<string, DataGridSort>) => void;
96
+ filters?: DataGridFilters<R>;
97
+ setFilters: Dispatch<SetStateAction<DataGridFilters<R>>>;
98
+ visibleColumns: DataGridColumnKeyValuePair<R>[];
99
+ copyTable: (
100
+ includeHeaders?: boolean,
101
+ includeFooters?: boolean
102
+ ) => Promise<void>;
103
+ setColumnWidth: (key: string, width: number) => void;
104
+ saveSettings: (newSettings?: DataGridSettings) => void;
105
+ settings: DataGridSettings;
106
+ setSettings: Dispatch<SetStateAction<DataGridSettings>>;
107
+ visibleRows: R[];
108
+ scrollableRef: React.RefObject<HTMLDivElement>;
109
+ onScroll: (e: React.UIEvent<HTMLDivElement>) => void;
110
+ index: number;
111
+ length: number;
112
+ };
113
+
114
+ export type DataGridContext<R> = Context<DataGridContextProps<R>>;
115
+
116
+ export const dataGridSettingCodec = t.partial(
117
+ {
118
+ width: t.number,
119
+ order: t.number,
120
+ },
121
+ 'DataGridSetting'
122
+ );
123
+ export const dataGridSettingsCodec = t.record(
124
+ t.string,
125
+ dataGridSettingCodec,
126
+ 'DataGridSettings'
127
+ );
128
+ export const dataGridSettingsByNameCodec = t.record(
129
+ t.string,
130
+ dataGridSettingsCodec,
131
+ 'DataGridSettingsByName'
132
+ );
133
+
134
+ export type DataGridSetting = t.TypeOf<typeof dataGridSettingCodec>;
135
+ export type DataGridSettings = t.TypeOf<typeof dataGridSettingsCodec>;
136
+ export type DataGridSettingsByName = t.TypeOf<
137
+ typeof dataGridSettingsByNameCodec
138
+ >;
139
+ export type DataGridSettingsTuple = [string, DataGridSetting];
140
+ export type DataGridSettingsArray = DataGridSettingsTuple[];
141
+ export type DataGridColumnKeyValuePair<R> = [string, DataGridColumn<R, any>];
142
+
143
+ export type DataGridCellProps<R> = {
144
+ row: R;
145
+ rowIndex: number;
146
+ columnKey: string;
147
+ columnIndex: number;
148
+ column: DataGridColumn<R>;
149
+ context: DataGridContext<R>;
150
+ className?: string;
151
+ style?: CSSProperties;
152
+ };
153
+
154
+ export type DataGridHeaderCellProps<R> = {
155
+ columnKey: string;
156
+ columnIndex: number;
157
+ column: DataGridColumn<R>;
158
+ context: DataGridContext<R>;
159
+ onFilterButtonClicked?: (columnKey: string) => void;
160
+ isFilterOpen?: boolean;
161
+ };
162
+
163
+ export type DataGridSort = 'asc' | 'desc';
164
+
165
+ export type DataGridFilterType = 'text' | 'number';
166
+ export type DataGridFilterDataType<T extends DataGridFilterType> =
167
+ T extends 'text' ? string : number;
168
+
169
+ export type DataGridFilterPredicate<T> = (valueToVerify: T) => boolean;
170
+ export type DataGridFilterPredicateBuilder<T> = (
171
+ row: any,
172
+ ...filterValues: T[]
173
+ ) => DataGridFilterPredicate<T>;
174
+
175
+ export type DataGridFilterGetter<R, T extends DataGridFilterType> = (
176
+ row: R
177
+ ) => DataGridFilterDataType<T> | null;
178
+ export type DataGridFilterFormatter = (
179
+ value: string | number | null
180
+ ) => string | null;
181
+
182
+ export type DataGridFilterPredicates = {
183
+ text: {
184
+ contains: DataGridFilterPredicateBuilder<string>;
185
+ notContains: DataGridFilterPredicateBuilder<string>;
186
+ equals: DataGridFilterPredicateBuilder<string>;
187
+ notEquals: DataGridFilterPredicateBuilder<string>;
188
+ startsWith: DataGridFilterPredicateBuilder<string>;
189
+ endsWith: DataGridFilterPredicateBuilder<string>;
190
+ inArray: DataGridFilterPredicateBuilder<string>;
191
+ };
192
+ number: {
193
+ equals: DataGridFilterPredicateBuilder<number>;
194
+ notEquals: DataGridFilterPredicateBuilder<number>;
195
+ lessThan: DataGridFilterPredicateBuilder<number>;
196
+ lessThanOrEqual: DataGridFilterPredicateBuilder<number>;
197
+ greaterThan: DataGridFilterPredicateBuilder<number>;
198
+ greaterThanOrEqual: DataGridFilterPredicateBuilder<number>;
199
+ inRange: DataGridFilterPredicateBuilder<number>;
200
+ inArray: DataGridFilterPredicateBuilder<number>;
201
+ };
202
+ };
203
+
204
+ export type DataGridFilterOperator<T extends DataGridFilterType> =
205
+ keyof DataGridFilterPredicates[T];
206
+
207
+ export type DataGridFilter<
208
+ R,
209
+ T extends DataGridFilterType = DataGridFilterType
210
+ > = {
211
+ type: T;
212
+ operator: keyof DataGridFilterPredicates[T];
213
+ getter: DataGridFilterGetter<R, T>;
214
+ formatter?: DataGridFilterFormatter;
215
+ values: (DataGridFilterDataType<T> | null)[];
216
+ };
217
+
218
+ export type AnyDataGridFilter<R> =
219
+ | DataGridFilter<R, 'text'>
220
+ | DataGridFilter<R, 'number'>;
221
+
222
+ export type DataGridFilterGroup<R> = {
223
+ name: string;
224
+ values?: R[];
225
+ groups?: DataGridFilterGroup<R>[];
226
+ };
227
+
228
+ export type DataGridFilterCheckbox<R extends string | number | null> = {
229
+ displayValue: string | null;
230
+ values: R[];
231
+ level: number;
232
+ };
@@ -1,3 +1,3 @@
1
- export * from './DataGrid';
2
- export * from './DataGrid/AdvancedRequestDataGrid';
3
- export * from './DataGrid/helpers/columns';
1
+ export * from './DataGrid';
2
+ export * from './DataGrid/AdvancedRequestDataGrid';
3
+ export * from './DataGrid/helpers/columns';
@@ -1,99 +1,99 @@
1
- import { ComponentProps, forwardRef } from 'react';
2
- import styled, { css } from 'styled-components';
3
-
4
- import { IconFC } from '../../Icons';
5
- import { ThemeColor } from '../../providers/ThemeProvider/types';
6
-
7
- export const StyledButton = styled.button.withConfig({
8
- shouldForwardProp: () => true,
9
- })<ButtonProps>`
10
- display: inline-flex;
11
- vertical-align: middle;
12
- align-items: center;
13
- justify-content: center;
14
- box-shadow: var(--shadow-sm);
15
- /* font-weight: bold; */
16
- border-radius: var(--rounded-md);
17
- font-family: var(--font-sans);
18
- cursor: pointer;
19
-
20
- ${({ color }) =>
21
- color
22
- ? css`
23
- background-color: var(--color-${color}-400);
24
- border: 1px solid var(--color-${color}-500);
25
- &:hover {
26
- background-color: var(--color-${color}-300);
27
- border: 1px solid var(--color-${color}-400);
28
- }
29
- color: var(--color-${color}-950);
30
- svg {
31
- fill: var(--color-${color}-950);
32
- }
33
- `
34
- : css`
35
- background-color: var(--color-neutral-100);
36
- border: 1px solid var(--color-neutral-300);
37
- &:hover {
38
- background-color: var(--color-neutral-200);
39
- border: 1px solid var(--color-neutral-400);
40
- }
41
- color: var(--color-neutral-900);
42
- svg {
43
- fill: var(--color-neutral-900);
44
- }
45
- `}
46
-
47
- ${({ rounded }) => rounded && 'border-radius: var(--rounded-full);'}
48
-
49
- &.small {
50
- padding: var(--space-1) var(--space-1_5);
51
- font-size: var(--text-sm);
52
- height: var(--space-6);
53
- box-shadow: var(--shadow-sm);
54
- svg {
55
- margin-right: var(--space-1);
56
- width: var(--space-3);
57
- height: var(--space-3);
58
- }
59
- }
60
- &.medium {
61
- padding: var(--space-2) var(--space-3);
62
- font-size: var(--text-base);
63
- height: var(--space-8);
64
- box-shadow: var(--shadow-sm);
65
- svg {
66
- margin-right: var(--space-1);
67
- width: var(--space-4);
68
- height: var(--space-4);
69
- }
70
- }
71
- &.large {
72
- padding: var(--space-3) var(--space-4);
73
- font-size: var(--text-lg);
74
- height: var(--space-10);
75
- box-shadow: var(--shadow-sm);
76
- svg {
77
- margin-right: var(--space-1);
78
- width: var(--space-5);
79
- height: var(--space-5);
80
- }
81
- }
82
- `;
83
-
84
- export type ButtonProps = {
85
- color?: ThemeColor;
86
- size?: 'small' | 'medium' | 'large';
87
- icon?: IconFC;
88
- rounded?: boolean;
89
- };
90
-
91
- export const Button = forwardRef<
92
- HTMLButtonElement,
93
- ComponentProps<typeof StyledButton> & ButtonProps
94
- >(({ children, size = 'medium', icon: Icon, className, ...props }, ref) => (
95
- <StyledButton ref={ref} className={`${size} ${className}`} {...props}>
96
- {Icon && <Icon />}
97
- {children}
98
- </StyledButton>
99
- ));
1
+ import { ComponentProps, forwardRef } from 'react';
2
+ import styled, { css } from 'styled-components';
3
+
4
+ import { IconFC } from '../../Icons';
5
+ import { ThemeColor } from '../../providers/ThemeProvider/types';
6
+
7
+ export const StyledButton = styled.button.withConfig({
8
+ shouldForwardProp: () => true,
9
+ })<ButtonProps>`
10
+ display: inline-flex;
11
+ vertical-align: middle;
12
+ align-items: center;
13
+ justify-content: center;
14
+ box-shadow: var(--shadow-sm);
15
+ /* font-weight: bold; */
16
+ border-radius: var(--rounded-md);
17
+ font-family: var(--font-sans);
18
+ cursor: pointer;
19
+
20
+ ${({ color }) =>
21
+ color
22
+ ? css`
23
+ background-color: var(--color-${color}-400);
24
+ border: 1px solid var(--color-${color}-500);
25
+ &:hover {
26
+ background-color: var(--color-${color}-300);
27
+ border: 1px solid var(--color-${color}-400);
28
+ }
29
+ color: var(--color-${color}-950);
30
+ svg {
31
+ fill: var(--color-${color}-950);
32
+ }
33
+ `
34
+ : css`
35
+ background-color: var(--color-neutral-100);
36
+ border: 1px solid var(--color-neutral-300);
37
+ &:hover {
38
+ background-color: var(--color-neutral-200);
39
+ border: 1px solid var(--color-neutral-400);
40
+ }
41
+ color: var(--color-neutral-900);
42
+ svg {
43
+ fill: var(--color-neutral-900);
44
+ }
45
+ `}
46
+
47
+ ${({ rounded }) => rounded && 'border-radius: var(--rounded-full);'}
48
+
49
+ &.small {
50
+ padding: var(--space-1) var(--space-1_5);
51
+ font-size: var(--text-sm);
52
+ height: var(--space-6);
53
+ box-shadow: var(--shadow-sm);
54
+ svg {
55
+ margin-right: var(--space-1);
56
+ width: var(--space-3);
57
+ height: var(--space-3);
58
+ }
59
+ }
60
+ &.medium {
61
+ padding: var(--space-2) var(--space-3);
62
+ font-size: var(--text-base);
63
+ height: var(--space-8);
64
+ box-shadow: var(--shadow-sm);
65
+ svg {
66
+ margin-right: var(--space-1);
67
+ width: var(--space-4);
68
+ height: var(--space-4);
69
+ }
70
+ }
71
+ &.large {
72
+ padding: var(--space-3) var(--space-4);
73
+ font-size: var(--text-lg);
74
+ height: var(--space-10);
75
+ box-shadow: var(--shadow-sm);
76
+ svg {
77
+ margin-right: var(--space-1);
78
+ width: var(--space-5);
79
+ height: var(--space-5);
80
+ }
81
+ }
82
+ `;
83
+
84
+ export type ButtonProps = {
85
+ color?: ThemeColor;
86
+ size?: 'small' | 'medium' | 'large';
87
+ icon?: IconFC;
88
+ rounded?: boolean;
89
+ };
90
+
91
+ export const Button = forwardRef<
92
+ HTMLButtonElement,
93
+ ComponentProps<typeof StyledButton> & ButtonProps
94
+ >(({ children, size = 'medium', icon: Icon, className, ...props }, ref) => (
95
+ <StyledButton ref={ref} className={`${size} ${className}`} {...props}>
96
+ {Icon && <Icon />}
97
+ {children}
98
+ </StyledButton>
99
+ ));