@addev-be/ui 2.5.20 → 2.6.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 (267) 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/SmartQueryDataGrid/helpers/columns.d.ts +20 -0
  38. package/dist/components/data/SmartQueryDataGrid/helpers/columns.js +160 -0
  39. package/dist/components/data/SmartQueryDataGrid/helpers/hooks.d.ts +5 -0
  40. package/dist/components/data/SmartQueryDataGrid/helpers/hooks.js +41 -0
  41. package/dist/components/data/SmartQueryDataGrid/helpers/index.d.ts +2 -0
  42. package/dist/components/data/SmartQueryDataGrid/helpers/index.js +18 -0
  43. package/dist/components/data/SmartQueryDataGrid/helpers/smartQueries.d.ts +3 -0
  44. package/dist/components/data/SmartQueryDataGrid/helpers/smartQueries.js +15 -0
  45. package/dist/components/data/SmartQueryDataGrid/hooks.d.ts +9 -0
  46. package/dist/components/data/SmartQueryDataGrid/hooks.js +63 -0
  47. package/dist/components/data/SmartQueryDataGrid/index.d.ts +12 -0
  48. package/dist/components/data/SmartQueryDataGrid/index.js +242 -0
  49. package/dist/components/data/SmartQueryDataGrid/types.d.ts +22 -0
  50. package/dist/components/data/SmartQueryDataGrid/types.js +2 -0
  51. package/dist/components/data/SqlRequestDataGrid/SqlRequestForeignListEditableCell.d.ts +2 -1
  52. package/dist/components/data/SqlRequestDataGrid/SqlRequestForeignListEditableCell.js +2 -3
  53. package/dist/components/forms/BillitIdentifier/index.d.ts +6 -0
  54. package/dist/components/forms/BillitIdentifier/index.js +71 -0
  55. package/dist/components/forms/BillitIdentifier/styles.d.ts +2 -0
  56. package/dist/components/forms/BillitIdentifier/styles.js +15 -0
  57. package/dist/components/forms/Form/FormGroup.d.ts +1 -0
  58. package/dist/components/forms/Form/FormGroup.js +2 -2
  59. package/dist/components/forms/Form/InputWithLabel.d.ts +2 -0
  60. package/dist/components/forms/Form/InputWithLabel.js +10 -0
  61. package/dist/components/forms/Form/Row.js +1 -1
  62. package/dist/components/forms/Form/Select.d.ts +3 -1
  63. package/dist/components/forms/Form/Select.js +19 -10
  64. package/dist/components/forms/Form/index.d.ts +4 -1
  65. package/dist/components/forms/Form/styles.d.ts +5 -3
  66. package/dist/components/forms/Form/styles.js +19 -14
  67. package/dist/components/forms/Form/types.d.ts +7 -0
  68. package/dist/components/forms/Form/types.js +2 -0
  69. package/dist/components/forms/styles.js +1 -1
  70. package/dist/components/ui/Card/index.d.ts +2 -1
  71. package/dist/components/ui/Card/styles.d.ts +2 -1
  72. package/dist/components/ui/Card/styles.js +2 -1
  73. package/dist/components/ui/TabsView/TabsList.d.ts +1 -0
  74. package/dist/components/ui/TabsView/TabsList.js +4 -2
  75. package/dist/components/ui/TabsView/TabsView.d.ts +3 -1
  76. package/dist/components/ui/TabsView/TabsView.js +2 -2
  77. package/dist/components/ui/TabsView/styles.js +4 -4
  78. package/dist/config/types.d.ts +11 -0
  79. package/dist/config/types.js +2 -0
  80. package/dist/helpers/react.d.ts +2 -0
  81. package/dist/helpers/react.js +8 -0
  82. package/dist/index.d.ts +1 -0
  83. package/dist/index.js +1 -0
  84. package/dist/providers/ThemeProvider/defaultTheme.js +1 -0
  85. package/dist/providers/ThemeProvider/helpers.d.ts +1 -1
  86. package/dist/providers/ThemeProvider/index.js +1 -1
  87. package/dist/providers/ThemeProvider/types.d.ts +1 -1
  88. package/dist/services/index.js +17 -7
  89. package/dist/services/requests/userPermissions.d.ts +4 -0
  90. package/dist/services/requests/userPermissions.js +20 -0
  91. package/dist/services/sqlRequests.d.ts +1 -1
  92. package/eslint.config.js +3 -3
  93. package/package.json +2 -2
  94. package/src/Icons.tsx +138 -138
  95. package/src/components/auth/LoginForm.tsx +86 -86
  96. package/src/components/auth/LoginPage.tsx +32 -32
  97. package/src/components/auth/PasswordRecoveryForm.tsx +53 -53
  98. package/src/components/auth/PasswordResetForm.tsx +112 -112
  99. package/src/components/auth/styles.ts +14 -14
  100. package/src/components/data/DataGrid/DataGridCell.tsx +81 -81
  101. package/src/components/data/DataGrid/DataGridColumnsModal/helpers.ts +9 -9
  102. package/src/components/data/DataGrid/DataGridColumnsModal/hooks.tsx +59 -59
  103. package/src/components/data/DataGrid/DataGridColumnsModal/index.tsx +182 -182
  104. package/src/components/data/DataGrid/DataGridColumnsModal/styles.ts +104 -104
  105. package/src/components/data/DataGrid/DataGridEditableCell/CheckboxEditableCell.tsx +37 -37
  106. package/src/components/data/DataGrid/DataGridEditableCell/DateEditableCell.tsx +38 -38
  107. package/src/components/data/DataGrid/DataGridEditableCell/NumberEditableCell.tsx +71 -71
  108. package/src/components/data/DataGrid/DataGridEditableCell/TextEditableCell.tsx +37 -37
  109. package/src/components/data/DataGrid/DataGridEditableCell/index.tsx +106 -106
  110. package/src/components/data/DataGrid/DataGridEditableCell/styles.ts +35 -35
  111. package/src/components/data/DataGrid/DataGridEditableCell/types.ts +18 -18
  112. package/src/components/data/DataGrid/DataGridFilterMenu/FilterValuesScroller.tsx +129 -129
  113. package/src/components/data/DataGrid/DataGridFilterMenu/hooks.tsx +81 -81
  114. package/src/components/data/DataGrid/DataGridFilterMenu/index.tsx +370 -370
  115. package/src/components/data/DataGrid/DataGridFilterMenu/styles.ts +97 -97
  116. package/src/components/data/DataGrid/DataGridFooter.tsx +47 -47
  117. package/src/components/data/DataGrid/DataGridHeader.tsx +74 -74
  118. package/src/components/data/DataGrid/DataGridHeaderCell.tsx +112 -112
  119. package/src/components/data/DataGrid/DataGridRowTemplate.tsx +83 -83
  120. package/src/components/data/DataGrid/DataGridToolbar.tsx +134 -134
  121. package/src/components/data/DataGrid/FilterModalContent/index.tsx +137 -137
  122. package/src/components/data/DataGrid/FilterModalContent/styles.ts +22 -22
  123. package/src/components/data/DataGrid/constants.ts +6 -6
  124. package/src/components/data/DataGrid/helpers/columns.tsx +449 -449
  125. package/src/components/data/DataGrid/helpers/filters.ts +287 -287
  126. package/src/components/data/DataGrid/helpers/index.ts +2 -2
  127. package/src/components/data/DataGrid/hooks/index.ts +29 -29
  128. package/src/components/data/DataGrid/hooks/useDataGrid.tsx +383 -383
  129. package/src/components/data/DataGrid/hooks/useDataGridChangedRows.ts +97 -97
  130. package/src/components/data/DataGrid/hooks/useDataGridCopy.ts +174 -174
  131. package/src/components/data/DataGrid/hooks/useDataGridSettings.ts +48 -48
  132. package/src/components/data/DataGrid/hooks/useRefreshModal.tsx +48 -48
  133. package/src/components/data/DataGrid/index.tsx +111 -111
  134. package/src/components/data/DataGrid/styles.ts +434 -434
  135. package/src/components/data/DataGrid/types.ts +380 -380
  136. package/src/components/data/SqlRequestDataGrid/helpers/columns.tsx +526 -526
  137. package/src/components/data/SqlRequestDataGrid/helpers/index.ts +2 -2
  138. package/src/components/data/SqlRequestDataGrid/helpers/rows.ts +24 -24
  139. package/src/components/data/SqlRequestDataGrid/helpers/sqlRequests.ts +17 -17
  140. package/src/components/data/SqlRequestDataGrid/index.tsx +417 -417
  141. package/src/components/data/SqlRequestDataGrid/styles.ts +15 -15
  142. package/src/components/data/SqlRequestDataGrid/types.ts +74 -74
  143. package/src/components/data/SqlRequestForeignList/index.tsx +254 -254
  144. package/src/components/data/SqlRequestForeignList/styles.ts +43 -43
  145. package/src/components/data/SqlRequestForeignList/types.ts +32 -32
  146. package/src/components/data/SqlRequestGrid/filters/FiltersSidebar.tsx +108 -108
  147. package/src/components/data/SqlRequestGrid/filters/styles.ts +88 -88
  148. package/src/components/data/SqlRequestGrid/helpers/index.ts +1 -1
  149. package/src/components/data/SqlRequestGrid/helpers/sqlRequests.ts +16 -16
  150. package/src/components/data/SqlRequestGrid/index.tsx +304 -304
  151. package/src/components/data/SqlRequestGrid/styles.ts +20 -20
  152. package/src/components/data/SqlRequestGrid/types.ts +73 -73
  153. package/src/components/data/VirtualScroller/hooks.ts +71 -71
  154. package/src/components/data/VirtualScroller/index.tsx +89 -89
  155. package/src/components/data/VirtualScroller/styles.ts +57 -57
  156. package/src/components/data/VirtualScroller/types.ts +10 -10
  157. package/src/components/forms/AutoTextArea.tsx +48 -48
  158. package/src/components/forms/BillitIdentifier/index.tsx +78 -0
  159. package/src/components/forms/BillitIdentifier/styles.tsx +43 -0
  160. package/src/components/forms/Button.tsx +132 -132
  161. package/src/components/forms/Form/Checkbox.tsx +12 -12
  162. package/src/components/forms/Form/CustomSelect.tsx +86 -86
  163. package/src/components/forms/Form/FormGroup.tsx +33 -31
  164. package/src/components/forms/Form/Input.tsx +16 -16
  165. package/src/components/forms/Form/Row.tsx +28 -32
  166. package/src/components/forms/Form/Select.tsx +99 -82
  167. package/src/components/forms/Form/TextArea.tsx +17 -17
  168. package/src/components/forms/Form/index.tsx +48 -48
  169. package/src/components/forms/Form/styles.ts +148 -184
  170. package/src/components/forms/IconButton.tsx +61 -61
  171. package/src/components/forms/IndeterminateCheckbox.tsx +46 -46
  172. package/src/components/forms/NumberInput.tsx +53 -53
  173. package/src/components/forms/Select.tsx +34 -34
  174. package/src/components/forms/VerticalLabel.tsx +20 -20
  175. package/src/components/forms/styles.ts +42 -42
  176. package/src/components/layout/Columns.ts +28 -28
  177. package/src/components/layout/Dropdown/index.tsx +113 -113
  178. package/src/components/layout/Dropdown/styles.ts +53 -53
  179. package/src/components/layout/Flexbox.ts +21 -21
  180. package/src/components/layout/Grid/index.tsx +8 -8
  181. package/src/components/layout/Grid/styles.ts +34 -34
  182. package/src/components/layout/Loading/index.tsx +29 -29
  183. package/src/components/layout/Loading/styles.ts +29 -29
  184. package/src/components/layout/Masonry/index.tsx +29 -29
  185. package/src/components/layout/Masonry/styles.ts +20 -20
  186. package/src/components/layout/Modal/index.tsx +51 -51
  187. package/src/components/layout/Modal/styles.ts +125 -125
  188. package/src/components/search/HighlightedText.tsx +41 -41
  189. package/src/components/search/QuickSearchBar.tsx +102 -102
  190. package/src/components/search/QuickSearchResults.tsx +86 -86
  191. package/src/components/search/styles.ts +96 -96
  192. package/src/components/search/types.ts +29 -29
  193. package/src/components/ui/Avatar/index.tsx +54 -54
  194. package/src/components/ui/Card/index.tsx +16 -14
  195. package/src/components/ui/Card/styles.ts +41 -37
  196. package/src/components/ui/ContextMenu/index.tsx +79 -79
  197. package/src/components/ui/ContextMenu/styles.ts +119 -119
  198. package/src/components/ui/Ellipsis.tsx +33 -33
  199. package/src/components/ui/Label.tsx +93 -93
  200. package/src/components/ui/Message/index.tsx +57 -57
  201. package/src/components/ui/Message/styles.ts +44 -44
  202. package/src/components/ui/TabsView/TabsList.tsx +49 -44
  203. package/src/components/ui/TabsView/TabsView.tsx +42 -38
  204. package/src/components/ui/TabsView/styles.ts +84 -76
  205. package/src/components/ui/TabsView/types.ts +15 -15
  206. package/src/config/index.ts +10 -10
  207. package/src/helpers/components.ts +9 -9
  208. package/src/helpers/dates.ts +17 -17
  209. package/src/helpers/getScrollbarSize.ts +14 -14
  210. package/src/helpers/numbers.ts +63 -63
  211. package/src/helpers/responsive.ts +83 -83
  212. package/src/helpers/styled/space.ts +114 -114
  213. package/src/helpers/styled/typography.ts +25 -25
  214. package/src/helpers/text.ts +13 -13
  215. package/src/helpers/types.ts +9 -9
  216. package/src/hooks/useContainerMediaQuery.ts +7 -7
  217. package/src/hooks/useElementSize.ts +24 -24
  218. package/src/hooks/useMediaQuery.ts +9 -9
  219. package/src/hooks/useMediaQueryForWidth.ts +35 -35
  220. package/src/hooks/useMutableState.test.ts +410 -410
  221. package/src/hooks/useMutableState.ts +39 -39
  222. package/src/hooks/useShowArchived.ts +28 -28
  223. package/src/hooks/useWindowSize.ts +20 -20
  224. package/src/index.ts +103 -102
  225. package/src/providers/AuthenticationProvider/helpers.ts +3 -3
  226. package/src/providers/AuthenticationProvider/index.tsx +303 -303
  227. package/src/providers/LoadingProvider/index.tsx +47 -47
  228. package/src/providers/PortalsProvider/index.tsx +54 -54
  229. package/src/providers/PortalsProvider/styles.ts +31 -31
  230. package/src/providers/SettingsProvider/index.tsx +70 -70
  231. package/src/providers/ThemeProvider/defaultTheme.ts +471 -470
  232. package/src/providers/ThemeProvider/helpers.ts +84 -84
  233. package/src/providers/ThemeProvider/index.ts +73 -66
  234. package/src/providers/ThemeProvider/types.ts +134 -134
  235. package/src/providers/ToastProvider/index.tsx +93 -93
  236. package/src/providers/TrackingProvider/index.tsx +71 -71
  237. package/src/providers/UiProviders/index.tsx +76 -76
  238. package/src/providers/UiProviders/styles.ts +10 -10
  239. package/src/providers/hooks.ts +14 -14
  240. package/src/services/HttpService.ts +92 -92
  241. package/src/services/WebSocketService.ts +155 -155
  242. package/src/services/advancedRequests.ts +102 -102
  243. package/src/services/base.ts +23 -23
  244. package/src/services/globalSearch.ts +32 -32
  245. package/src/services/hooks.ts +92 -92
  246. package/src/services/requests/auth.ts +44 -44
  247. package/src/services/requests/generic.ts +62 -62
  248. package/src/services/requests/printing.ts +12 -12
  249. package/src/services/requests/tracking.ts +12 -12
  250. package/src/services/requests/userProfiles.ts +35 -35
  251. package/src/services/requests/users.ts +28 -28
  252. package/src/services/smartQueries.ts +122 -122
  253. package/src/services/sqlRequests.ts +119 -113
  254. package/src/services/types/auth.ts +98 -98
  255. package/src/services/types/base.ts +10 -10
  256. package/src/services/types/generic.ts +82 -82
  257. package/src/services/types/printing.ts +10 -10
  258. package/src/services/types/tracking.ts +29 -29
  259. package/src/services/types/userProfiles.ts +79 -79
  260. package/src/services/types/users.ts +74 -74
  261. package/src/services/updateSqlRequests.ts +32 -32
  262. package/src/styles/animations.scss +30 -30
  263. package/src/styles/index.scss +42 -42
  264. package/src/types.ts +8 -8
  265. package/src/typings.d.ts +2 -2
  266. package/tsconfig.json +18 -18
  267. package/tsconfig.tsbuildinfo +1 -1
@@ -1,73 +1,73 @@
1
- import {
2
- ConditionDTO,
3
- FieldDTO,
4
- OrderByDTO,
5
- SqlRequestRow,
6
- } from '../../../services/sqlRequests';
7
- import {
8
- DataGridCheckboxColumn,
9
- DataGridDateColumn,
10
- DataGridFilter,
11
- DataGridFilterType,
12
- DataGridNumberColumn,
13
- DataGridSort,
14
- DataGridTextColumn,
15
- } from '../DataGrid/types';
16
-
17
- import { VirtualScrollerTemplateFC } from '../VirtualScroller/types';
18
-
19
- export type SqlRequestGridFilter<
20
- T extends DataGridFilterType = DataGridFilterType
21
- > = DataGridFilter<T> & {
22
- field?: FieldDTO;
23
- };
24
-
25
- export type SqlRequestGridFilters = Record<string, SqlRequestGridFilter>;
26
-
27
- export type SqlRequestGridCommonProps = {
28
- filter?: SqlRequestGridFilter;
29
- field?: FieldDTO;
30
- filterField?: string;
31
- sortField?: string;
32
- ignore?: boolean;
33
- };
34
-
35
- export type SqlRequestGridTextColumn<R> = DataGridTextColumn<R> &
36
- SqlRequestGridCommonProps;
37
- export type SqlRequestGridNumberColumn<R> = DataGridNumberColumn<R> &
38
- SqlRequestGridCommonProps;
39
- export type SqlRequestGridCheckboxColumn<R> = DataGridCheckboxColumn<R> &
40
- SqlRequestGridCommonProps;
41
- export type SqlRequestGridDateColumn<R> = DataGridDateColumn<R> &
42
- SqlRequestGridCommonProps;
43
-
44
- export type SqlRequestGridColumn<R> =
45
- | SqlRequestGridTextColumn<R>
46
- | SqlRequestGridNumberColumn<R>
47
- | SqlRequestGridCheckboxColumn<R>
48
- | SqlRequestGridDateColumn<R>;
49
-
50
- export type SqlRequestGridColumnWithFilter<R> = SqlRequestGridColumn<R> & {
51
- filter: SqlRequestGridFilter;
52
- };
53
-
54
- export type SqlRequestGridColumns<R> = SqlRequestGridColumn<R>[];
55
-
56
- export type SqlRequestGridProps<R, P extends object = {}> = {
57
- itemTemplate: VirtualScrollerTemplateFC<R, P>;
58
- itemsPerRow?: number;
59
- rowHeight?: number;
60
- gap?: string;
61
- fields: SqlRequestGridColumns<R>;
62
- additionalFields?: string[];
63
- type: string;
64
- orderBy?: OrderByDTO[];
65
- conditions?: ConditionDTO[];
66
- parser?: (row: SqlRequestRow<R>) => R;
67
- itemProps: P | ((item: R) => P);
68
- initialSorts?: Record<string, DataGridSort>;
69
- };
70
-
71
- export type SqlRequestGridRefProps = {
72
- refresh: () => void;
73
- };
1
+ import {
2
+ ConditionDTO,
3
+ FieldDTO,
4
+ OrderByDTO,
5
+ SqlRequestRow,
6
+ } from '../../../services/sqlRequests';
7
+ import {
8
+ DataGridCheckboxColumn,
9
+ DataGridDateColumn,
10
+ DataGridFilter,
11
+ DataGridFilterType,
12
+ DataGridNumberColumn,
13
+ DataGridSort,
14
+ DataGridTextColumn,
15
+ } from '../DataGrid/types';
16
+
17
+ import { VirtualScrollerTemplateFC } from '../VirtualScroller/types';
18
+
19
+ export type SqlRequestGridFilter<
20
+ T extends DataGridFilterType = DataGridFilterType
21
+ > = DataGridFilter<T> & {
22
+ field?: FieldDTO;
23
+ };
24
+
25
+ export type SqlRequestGridFilters = Record<string, SqlRequestGridFilter>;
26
+
27
+ export type SqlRequestGridCommonProps = {
28
+ filter?: SqlRequestGridFilter;
29
+ field?: FieldDTO;
30
+ filterField?: string;
31
+ sortField?: string;
32
+ ignore?: boolean;
33
+ };
34
+
35
+ export type SqlRequestGridTextColumn<R> = DataGridTextColumn<R> &
36
+ SqlRequestGridCommonProps;
37
+ export type SqlRequestGridNumberColumn<R> = DataGridNumberColumn<R> &
38
+ SqlRequestGridCommonProps;
39
+ export type SqlRequestGridCheckboxColumn<R> = DataGridCheckboxColumn<R> &
40
+ SqlRequestGridCommonProps;
41
+ export type SqlRequestGridDateColumn<R> = DataGridDateColumn<R> &
42
+ SqlRequestGridCommonProps;
43
+
44
+ export type SqlRequestGridColumn<R> =
45
+ | SqlRequestGridTextColumn<R>
46
+ | SqlRequestGridNumberColumn<R>
47
+ | SqlRequestGridCheckboxColumn<R>
48
+ | SqlRequestGridDateColumn<R>;
49
+
50
+ export type SqlRequestGridColumnWithFilter<R> = SqlRequestGridColumn<R> & {
51
+ filter: SqlRequestGridFilter;
52
+ };
53
+
54
+ export type SqlRequestGridColumns<R> = SqlRequestGridColumn<R>[];
55
+
56
+ export type SqlRequestGridProps<R, P extends object = {}> = {
57
+ itemTemplate: VirtualScrollerTemplateFC<R, P>;
58
+ itemsPerRow?: number;
59
+ rowHeight?: number;
60
+ gap?: string;
61
+ fields: SqlRequestGridColumns<R>;
62
+ additionalFields?: string[];
63
+ type: string;
64
+ orderBy?: OrderByDTO[];
65
+ conditions?: ConditionDTO[];
66
+ parser?: (row: SqlRequestRow<R>) => R;
67
+ itemProps: P | ((item: R) => P);
68
+ initialSorts?: Record<string, DataGridSort>;
69
+ };
70
+
71
+ export type SqlRequestGridRefProps = {
72
+ refresh: () => void;
73
+ };
@@ -1,71 +1,71 @@
1
- import { useCallback, useEffect, useState } from 'react';
2
-
3
- import { useElementSize } from '../../../hooks/useElementSize';
4
-
5
- export const VIRTUAL_SCROLL_TOLERANCE = 20;
6
-
7
- type VirtualScrollingProps<R> = {
8
- scrollableElement: HTMLElement | null;
9
- rowHeightInPx: number;
10
- items: R[];
11
- itemsPerRow?: number;
12
- tolerance?: number;
13
- };
14
-
15
- export const useVirtualScrolling = <R>({
16
- scrollableElement,
17
- rowHeightInPx,
18
- items,
19
- itemsPerRow = 1,
20
- tolerance = VIRTUAL_SCROLL_TOLERANCE,
21
- }: VirtualScrollingProps<R>) => {
22
- const { height } = useElementSize(scrollableElement);
23
-
24
- const [scrollTop, setScrollTop] = useState(0);
25
- const [rowIndex, rowLength] = [
26
- Math.floor(scrollTop / rowHeightInPx),
27
- Math.ceil(height / rowHeightInPx),
28
- ];
29
- const [index, length] = [rowIndex * itemsPerRow, rowLength * itemsPerRow];
30
- const rowTolerance = Math.ceil(tolerance / itemsPerRow);
31
-
32
- const totalRows = Math.ceil((items?.length ?? 0) / itemsPerRow);
33
- const totalHeight = totalRows * rowHeightInPx;
34
- const topPadding = Math.max(0, rowIndex - rowTolerance) * rowHeightInPx;
35
-
36
- const onScroll = useCallback(() => {
37
- if (scrollableElement) {
38
- setScrollTop(scrollableElement.scrollTop);
39
- }
40
- }, [scrollableElement]);
41
-
42
- useEffect(() => {
43
- const scrollable = scrollableElement;
44
- if (scrollable) {
45
- scrollable.addEventListener('scroll', onScroll);
46
- return () => {
47
- scrollable.removeEventListener('scroll', onScroll);
48
- };
49
- }
50
- }, [onScroll, scrollableElement]);
51
-
52
- const rowIndexWithTolerance = Math.max(0, rowIndex - rowTolerance);
53
- const rowLengthWithTolerance = rowLength + 2 * rowTolerance;
54
- const indexWithTolerance = rowIndexWithTolerance * itemsPerRow;
55
- const lengthWithTolerance = rowLengthWithTolerance * itemsPerRow;
56
-
57
- const visibleItems = items.slice(
58
- indexWithTolerance,
59
- indexWithTolerance + lengthWithTolerance
60
- );
61
-
62
- return {
63
- index,
64
- length,
65
- indexWithTolerance,
66
- lengthWithTolerance,
67
- visibleItems,
68
- totalHeight,
69
- topPadding,
70
- };
71
- };
1
+ import { useCallback, useEffect, useState } from 'react';
2
+
3
+ import { useElementSize } from '../../../hooks/useElementSize';
4
+
5
+ export const VIRTUAL_SCROLL_TOLERANCE = 20;
6
+
7
+ type VirtualScrollingProps<R> = {
8
+ scrollableElement: HTMLElement | null;
9
+ rowHeightInPx: number;
10
+ items: R[];
11
+ itemsPerRow?: number;
12
+ tolerance?: number;
13
+ };
14
+
15
+ export const useVirtualScrolling = <R>({
16
+ scrollableElement,
17
+ rowHeightInPx,
18
+ items,
19
+ itemsPerRow = 1,
20
+ tolerance = VIRTUAL_SCROLL_TOLERANCE,
21
+ }: VirtualScrollingProps<R>) => {
22
+ const { height } = useElementSize(scrollableElement);
23
+
24
+ const [scrollTop, setScrollTop] = useState(0);
25
+ const [rowIndex, rowLength] = [
26
+ Math.floor(scrollTop / rowHeightInPx),
27
+ Math.ceil(height / rowHeightInPx),
28
+ ];
29
+ const [index, length] = [rowIndex * itemsPerRow, rowLength * itemsPerRow];
30
+ const rowTolerance = Math.ceil(tolerance / itemsPerRow);
31
+
32
+ const totalRows = Math.ceil((items?.length ?? 0) / itemsPerRow);
33
+ const totalHeight = totalRows * rowHeightInPx;
34
+ const topPadding = Math.max(0, rowIndex - rowTolerance) * rowHeightInPx;
35
+
36
+ const onScroll = useCallback(() => {
37
+ if (scrollableElement) {
38
+ setScrollTop(scrollableElement.scrollTop);
39
+ }
40
+ }, [scrollableElement]);
41
+
42
+ useEffect(() => {
43
+ const scrollable = scrollableElement;
44
+ if (scrollable) {
45
+ scrollable.addEventListener('scroll', onScroll);
46
+ return () => {
47
+ scrollable.removeEventListener('scroll', onScroll);
48
+ };
49
+ }
50
+ }, [onScroll, scrollableElement]);
51
+
52
+ const rowIndexWithTolerance = Math.max(0, rowIndex - rowTolerance);
53
+ const rowLengthWithTolerance = rowLength + 2 * rowTolerance;
54
+ const indexWithTolerance = rowIndexWithTolerance * itemsPerRow;
55
+ const lengthWithTolerance = rowLengthWithTolerance * itemsPerRow;
56
+
57
+ const visibleItems = items.slice(
58
+ indexWithTolerance,
59
+ indexWithTolerance + lengthWithTolerance
60
+ );
61
+
62
+ return {
63
+ index,
64
+ length,
65
+ indexWithTolerance,
66
+ lengthWithTolerance,
67
+ visibleItems,
68
+ totalHeight,
69
+ topPadding,
70
+ };
71
+ };
@@ -1,89 +1,89 @@
1
- import * as styles from './styles';
2
-
3
- import { useEffect, useState } from 'react';
4
-
5
- import { VirtualScrollerTemplateFC } from './types';
6
- import { useVirtualScrolling } from './hooks';
7
-
8
- type VirtualScrollerProps<R, P extends object> = {
9
- gridTemplateColumns: string;
10
- items: R[];
11
- itemTemplate: VirtualScrollerTemplateFC<R, P>;
12
- rowHeightInPx: number;
13
- gap?: string;
14
- itemsPerRow?: number;
15
- tolerance?: number;
16
- itemProps: P | ((item: R, index: number) => P);
17
- onRangeChanged?: (index: number, length: number) => void;
18
- integrated?: boolean;
19
- };
20
-
21
- export const VirtualScroller = <R, P extends object>({
22
- gridTemplateColumns,
23
- items,
24
- rowHeightInPx,
25
- itemTemplate: ItemTemplate,
26
- itemProps,
27
- onRangeChanged,
28
- gap,
29
- itemsPerRow,
30
- tolerance,
31
- integrated,
32
- }: VirtualScrollerProps<R, P>) => {
33
- const [scrollableElement, setScrollableElement] =
34
- useState<HTMLElement | null>(null);
35
- const {
36
- indexWithTolerance,
37
- lengthWithTolerance,
38
- visibleItems,
39
- topPadding,
40
- totalHeight,
41
- } = useVirtualScrolling<R>({
42
- scrollableElement,
43
- rowHeightInPx,
44
- items,
45
- itemsPerRow,
46
- tolerance,
47
- });
48
-
49
- useEffect(() => {
50
- onRangeChanged?.(indexWithTolerance, lengthWithTolerance);
51
- }, [indexWithTolerance, lengthWithTolerance, onRangeChanged]);
52
-
53
- return (
54
- <styles.VirtualScrollerContainer $integrated={integrated}>
55
- <styles.VirtualScrollerFiller
56
- $height={totalHeight}
57
- ref={(element) =>
58
- setScrollableElement(
59
- (integrated
60
- ? element?.parentElement?.parentElement
61
- : element?.parentElement) ?? null
62
- )
63
- }
64
- >
65
- <styles.VirtualScrollerItemsContainer
66
- $gridTemplateColumns={gridTemplateColumns}
67
- $topPadding={topPadding}
68
- $itemHeight={rowHeightInPx}
69
- $gap={gap}
70
- >
71
- {visibleItems.map((item, currentIndex) => {
72
- const currentItemProps =
73
- typeof itemProps === 'function'
74
- ? itemProps(item, indexWithTolerance + currentIndex)
75
- : itemProps;
76
- return (
77
- <ItemTemplate
78
- key={indexWithTolerance + currentIndex}
79
- item={item}
80
- index={currentIndex}
81
- {...currentItemProps}
82
- />
83
- );
84
- })}
85
- </styles.VirtualScrollerItemsContainer>
86
- </styles.VirtualScrollerFiller>
87
- </styles.VirtualScrollerContainer>
88
- );
89
- };
1
+ import * as styles from './styles';
2
+
3
+ import { useEffect, useState } from 'react';
4
+
5
+ import { VirtualScrollerTemplateFC } from './types';
6
+ import { useVirtualScrolling } from './hooks';
7
+
8
+ type VirtualScrollerProps<R, P extends object> = {
9
+ gridTemplateColumns: string;
10
+ items: R[];
11
+ itemTemplate: VirtualScrollerTemplateFC<R, P>;
12
+ rowHeightInPx: number;
13
+ gap?: string;
14
+ itemsPerRow?: number;
15
+ tolerance?: number;
16
+ itemProps: P | ((item: R, index: number) => P);
17
+ onRangeChanged?: (index: number, length: number) => void;
18
+ integrated?: boolean;
19
+ };
20
+
21
+ export const VirtualScroller = <R, P extends object>({
22
+ gridTemplateColumns,
23
+ items,
24
+ rowHeightInPx,
25
+ itemTemplate: ItemTemplate,
26
+ itemProps,
27
+ onRangeChanged,
28
+ gap,
29
+ itemsPerRow,
30
+ tolerance,
31
+ integrated,
32
+ }: VirtualScrollerProps<R, P>) => {
33
+ const [scrollableElement, setScrollableElement] =
34
+ useState<HTMLElement | null>(null);
35
+ const {
36
+ indexWithTolerance,
37
+ lengthWithTolerance,
38
+ visibleItems,
39
+ topPadding,
40
+ totalHeight,
41
+ } = useVirtualScrolling<R>({
42
+ scrollableElement,
43
+ rowHeightInPx,
44
+ items,
45
+ itemsPerRow,
46
+ tolerance,
47
+ });
48
+
49
+ useEffect(() => {
50
+ onRangeChanged?.(indexWithTolerance, lengthWithTolerance);
51
+ }, [indexWithTolerance, lengthWithTolerance, onRangeChanged]);
52
+
53
+ return (
54
+ <styles.VirtualScrollerContainer $integrated={integrated}>
55
+ <styles.VirtualScrollerFiller
56
+ $height={totalHeight}
57
+ ref={(element) =>
58
+ setScrollableElement(
59
+ (integrated
60
+ ? element?.parentElement?.parentElement
61
+ : element?.parentElement) ?? null
62
+ )
63
+ }
64
+ >
65
+ <styles.VirtualScrollerItemsContainer
66
+ $gridTemplateColumns={gridTemplateColumns}
67
+ $topPadding={topPadding}
68
+ $itemHeight={rowHeightInPx}
69
+ $gap={gap}
70
+ >
71
+ {visibleItems.map((item, currentIndex) => {
72
+ const currentItemProps =
73
+ typeof itemProps === 'function'
74
+ ? itemProps(item, indexWithTolerance + currentIndex)
75
+ : itemProps;
76
+ return (
77
+ <ItemTemplate
78
+ key={indexWithTolerance + currentIndex}
79
+ item={item}
80
+ index={currentIndex}
81
+ {...currentItemProps}
82
+ />
83
+ );
84
+ })}
85
+ </styles.VirtualScrollerItemsContainer>
86
+ </styles.VirtualScrollerFiller>
87
+ </styles.VirtualScrollerContainer>
88
+ );
89
+ };
@@ -1,57 +1,57 @@
1
- import styled from 'styled-components';
2
-
3
- export const TopPaddingItem = styled.div``;
4
- export const BottomPaddingItem = styled.div``;
5
-
6
- export const VirtualScrollerContainer = styled.div<{
7
- $integrated?: boolean;
8
- }>`
9
- position: relative;
10
- overflow: auto;
11
- height: 100%;
12
- display: ${({ $integrated }) => ($integrated ? 'contents' : 'block')};
13
- `;
14
-
15
- export const VirtualScrollerFiller = styled.div.attrs<{
16
- $height: number;
17
- }>(({ $height }) => ({
18
- style: {
19
- height: `${$height}px`,
20
- },
21
- }))`
22
- position: relative;
23
- overflow: visible;
24
- `;
25
-
26
- export const VirtualScrollerItemsContainer = styled.div.attrs<{
27
- $gridTemplateColumns: string;
28
- $gap?: string;
29
- $topPadding: number;
30
- $itemHeight: number;
31
- }>(({ $gridTemplateColumns, $topPadding, $itemHeight }) => {
32
- const itemHeightValue = `${$itemHeight}px`;
33
- return {
34
- className: 'VirtualScrollerItemsContainer',
35
- style: {
36
- top: `${$topPadding}px`,
37
- gridTemplateColumns: $gridTemplateColumns,
38
- gridAutoItems: itemHeightValue,
39
- },
40
- };
41
- })`
42
- display: grid;
43
- position: absolute;
44
- min-width: 100%;
45
- grid-gap: ${({ $gap }) => $gap};
46
-
47
- ${TopPaddingItem} {
48
- grid-column-start: 1;
49
- grid-column-end: -1;
50
- grid-row: 1;
51
- }
52
- ${BottomPaddingItem} {
53
- grid-column-start: 1;
54
- grid-column-end: -1;
55
- grid-row: -1;
56
- }
57
- `;
1
+ import styled from 'styled-components';
2
+
3
+ export const TopPaddingItem = styled.div``;
4
+ export const BottomPaddingItem = styled.div``;
5
+
6
+ export const VirtualScrollerContainer = styled.div<{
7
+ $integrated?: boolean;
8
+ }>`
9
+ position: relative;
10
+ overflow: auto;
11
+ height: 100%;
12
+ display: ${({ $integrated }) => ($integrated ? 'contents' : 'block')};
13
+ `;
14
+
15
+ export const VirtualScrollerFiller = styled.div.attrs<{
16
+ $height: number;
17
+ }>(({ $height }) => ({
18
+ style: {
19
+ height: `${$height}px`,
20
+ },
21
+ }))`
22
+ position: relative;
23
+ overflow: visible;
24
+ `;
25
+
26
+ export const VirtualScrollerItemsContainer = styled.div.attrs<{
27
+ $gridTemplateColumns: string;
28
+ $gap?: string;
29
+ $topPadding: number;
30
+ $itemHeight: number;
31
+ }>(({ $gridTemplateColumns, $topPadding, $itemHeight }) => {
32
+ const itemHeightValue = `${$itemHeight}px`;
33
+ return {
34
+ className: 'VirtualScrollerItemsContainer',
35
+ style: {
36
+ top: `${$topPadding}px`,
37
+ gridTemplateColumns: $gridTemplateColumns,
38
+ gridAutoItems: itemHeightValue,
39
+ },
40
+ };
41
+ })`
42
+ display: grid;
43
+ position: absolute;
44
+ min-width: 100%;
45
+ grid-gap: ${({ $gap }) => $gap};
46
+
47
+ ${TopPaddingItem} {
48
+ grid-column-start: 1;
49
+ grid-column-end: -1;
50
+ grid-row: 1;
51
+ }
52
+ ${BottomPaddingItem} {
53
+ grid-column-start: 1;
54
+ grid-column-end: -1;
55
+ grid-row: -1;
56
+ }
57
+ `;
@@ -1,10 +1,10 @@
1
- import { FC } from 'react';
2
-
3
- export type VirtualScrollerTemplateProps<R, P extends object = {}> = P & {
4
- item: R | null;
5
- index: number;
6
- };
7
-
8
- export type VirtualScrollerTemplateFC<R, P extends object = {}> = FC<
9
- VirtualScrollerTemplateProps<R, P>
10
- >;
1
+ import { FC } from 'react';
2
+
3
+ export type VirtualScrollerTemplateProps<R, P extends object = {}> = P & {
4
+ item: R | null;
5
+ index: number;
6
+ };
7
+
8
+ export type VirtualScrollerTemplateFC<R, P extends object = {}> = FC<
9
+ VirtualScrollerTemplateProps<R, P>
10
+ >;