@addev-be/ui 2.7.4 → 2.7.5

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 (238) 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 +8 -9
  24. package/dist/components/data/AdvancedRequestDataGrid/helpers/columns.js +72 -21
  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/SqlRequestDataGrid/SqlRequestForeignListEditableCell.d.ts +1 -2
  28. package/dist/components/data/SqlRequestDataGrid/SqlRequestForeignListEditableCell.js +3 -2
  29. package/dist/services/index.js +7 -17
  30. package/eslint.config.js +3 -3
  31. package/package.json +2 -2
  32. package/src/Icons.tsx +138 -138
  33. package/src/components/auth/LoginForm.tsx +86 -86
  34. package/src/components/auth/LoginPage.tsx +32 -32
  35. package/src/components/auth/PasswordRecoveryForm.tsx +53 -53
  36. package/src/components/auth/PasswordResetForm.tsx +112 -112
  37. package/src/components/auth/styles.ts +14 -14
  38. package/src/components/data/DataGrid/DataGridCell.tsx +81 -81
  39. package/src/components/data/DataGrid/DataGridColumnsModal/helpers.ts +9 -9
  40. package/src/components/data/DataGrid/DataGridColumnsModal/hooks.tsx +59 -59
  41. package/src/components/data/DataGrid/DataGridColumnsModal/index.tsx +182 -182
  42. package/src/components/data/DataGrid/DataGridColumnsModal/styles.ts +104 -104
  43. package/src/components/data/DataGrid/DataGridEditableCell/CheckboxEditableCell.tsx +37 -37
  44. package/src/components/data/DataGrid/DataGridEditableCell/DateEditableCell.tsx +38 -38
  45. package/src/components/data/DataGrid/DataGridEditableCell/NumberEditableCell.tsx +71 -71
  46. package/src/components/data/DataGrid/DataGridEditableCell/TextEditableCell.tsx +37 -37
  47. package/src/components/data/DataGrid/DataGridEditableCell/index.tsx +106 -106
  48. package/src/components/data/DataGrid/DataGridEditableCell/styles.ts +35 -35
  49. package/src/components/data/DataGrid/DataGridEditableCell/types.ts +18 -18
  50. package/src/components/data/DataGrid/DataGridFilterMenu/FilterValuesScroller.tsx +129 -129
  51. package/src/components/data/DataGrid/DataGridFilterMenu/hooks.tsx +81 -81
  52. package/src/components/data/DataGrid/DataGridFilterMenu/index.tsx +370 -370
  53. package/src/components/data/DataGrid/DataGridFilterMenu/styles.ts +97 -97
  54. package/src/components/data/DataGrid/DataGridFooter.tsx +47 -47
  55. package/src/components/data/DataGrid/DataGridHeader.tsx +74 -74
  56. package/src/components/data/DataGrid/DataGridHeaderCell.tsx +112 -112
  57. package/src/components/data/DataGrid/DataGridRowTemplate.tsx +83 -83
  58. package/src/components/data/DataGrid/DataGridToolbar.tsx +134 -134
  59. package/src/components/data/DataGrid/FilterModalContent/index.tsx +137 -137
  60. package/src/components/data/DataGrid/FilterModalContent/styles.ts +22 -22
  61. package/src/components/data/DataGrid/constants.ts +6 -6
  62. package/src/components/data/DataGrid/helpers/columns.tsx +449 -449
  63. package/src/components/data/DataGrid/helpers/filters.ts +287 -287
  64. package/src/components/data/DataGrid/helpers/index.ts +2 -2
  65. package/src/components/data/DataGrid/hooks/index.ts +29 -29
  66. package/src/components/data/DataGrid/hooks/useDataGrid.tsx +383 -383
  67. package/src/components/data/DataGrid/hooks/useDataGridChangedRows.ts +97 -97
  68. package/src/components/data/DataGrid/hooks/useDataGridCopy.ts +174 -174
  69. package/src/components/data/DataGrid/hooks/useDataGridSettings.ts +48 -48
  70. package/src/components/data/DataGrid/hooks/useRefreshModal.tsx +48 -48
  71. package/src/components/data/DataGrid/index.tsx +111 -111
  72. package/src/components/data/DataGrid/styles.ts +434 -434
  73. package/src/components/data/DataGrid/types.ts +380 -380
  74. package/src/components/data/SqlRequestDataGrid/helpers/columns.tsx +526 -526
  75. package/src/components/data/SqlRequestDataGrid/helpers/index.ts +2 -2
  76. package/src/components/data/SqlRequestDataGrid/helpers/rows.ts +24 -24
  77. package/src/components/data/SqlRequestDataGrid/helpers/sqlRequests.ts +17 -17
  78. package/src/components/data/SqlRequestDataGrid/index.tsx +417 -417
  79. package/src/components/data/SqlRequestDataGrid/styles.ts +15 -15
  80. package/src/components/data/SqlRequestDataGrid/types.ts +74 -74
  81. package/src/components/data/SqlRequestForeignList/index.tsx +254 -254
  82. package/src/components/data/SqlRequestForeignList/styles.ts +43 -43
  83. package/src/components/data/SqlRequestForeignList/types.ts +32 -32
  84. package/src/components/data/SqlRequestGrid/filters/FiltersSidebar.tsx +108 -108
  85. package/src/components/data/SqlRequestGrid/filters/styles.ts +88 -88
  86. package/src/components/data/SqlRequestGrid/helpers/index.ts +1 -1
  87. package/src/components/data/SqlRequestGrid/helpers/sqlRequests.ts +16 -16
  88. package/src/components/data/SqlRequestGrid/index.tsx +304 -304
  89. package/src/components/data/SqlRequestGrid/styles.ts +20 -20
  90. package/src/components/data/SqlRequestGrid/types.ts +73 -73
  91. package/src/components/data/VirtualScroller/hooks.ts +71 -71
  92. package/src/components/data/VirtualScroller/index.tsx +89 -89
  93. package/src/components/data/VirtualScroller/styles.ts +57 -57
  94. package/src/components/data/VirtualScroller/types.ts +10 -10
  95. package/src/components/forms/AutoTextArea.tsx +48 -48
  96. package/src/components/forms/BillitIdentifier/index.tsx +78 -78
  97. package/src/components/forms/BillitIdentifier/styles.tsx +43 -43
  98. package/src/components/forms/Button.tsx +132 -132
  99. package/src/components/forms/Form/Checkbox.tsx +12 -12
  100. package/src/components/forms/Form/CustomSelect.tsx +86 -86
  101. package/src/components/forms/Form/FormGroup.tsx +33 -33
  102. package/src/components/forms/Form/Input.tsx +16 -16
  103. package/src/components/forms/Form/Row.tsx +28 -28
  104. package/src/components/forms/Form/Select.tsx +99 -99
  105. package/src/components/forms/Form/TextArea.tsx +17 -17
  106. package/src/components/forms/Form/index.tsx +48 -48
  107. package/src/components/forms/Form/styles.ts +148 -148
  108. package/src/components/forms/IconButton.tsx +61 -61
  109. package/src/components/forms/IndeterminateCheckbox.tsx +46 -46
  110. package/src/components/forms/NumberInput.tsx +53 -53
  111. package/src/components/forms/Select.tsx +34 -34
  112. package/src/components/forms/VerticalLabel.tsx +20 -20
  113. package/src/components/forms/styles.ts +42 -42
  114. package/src/components/layout/Columns.ts +28 -28
  115. package/src/components/layout/Dropdown/index.tsx +113 -113
  116. package/src/components/layout/Dropdown/styles.ts +53 -53
  117. package/src/components/layout/Flexbox.ts +21 -21
  118. package/src/components/layout/Grid/index.tsx +8 -8
  119. package/src/components/layout/Grid/styles.ts +34 -34
  120. package/src/components/layout/Loading/index.tsx +29 -29
  121. package/src/components/layout/Loading/styles.ts +29 -29
  122. package/src/components/layout/Masonry/index.tsx +29 -29
  123. package/src/components/layout/Masonry/styles.ts +20 -20
  124. package/src/components/layout/Modal/index.tsx +51 -51
  125. package/src/components/layout/Modal/styles.ts +125 -125
  126. package/src/components/search/HighlightedText.tsx +41 -41
  127. package/src/components/search/QuickSearchBar.tsx +102 -102
  128. package/src/components/search/QuickSearchResults.tsx +86 -86
  129. package/src/components/search/styles.ts +96 -96
  130. package/src/components/search/types.ts +29 -29
  131. package/src/components/ui/Avatar/index.tsx +54 -54
  132. package/src/components/ui/Card/index.tsx +16 -16
  133. package/src/components/ui/Card/styles.ts +41 -41
  134. package/src/components/ui/ContextMenu/index.tsx +79 -79
  135. package/src/components/ui/ContextMenu/styles.ts +119 -119
  136. package/src/components/ui/Ellipsis.tsx +33 -33
  137. package/src/components/ui/Label.tsx +93 -93
  138. package/src/components/ui/Message/index.tsx +57 -57
  139. package/src/components/ui/Message/styles.ts +44 -44
  140. package/src/components/ui/TabsView/TabsList.tsx +49 -49
  141. package/src/components/ui/TabsView/TabsView.tsx +42 -42
  142. package/src/components/ui/TabsView/styles.ts +84 -84
  143. package/src/components/ui/TabsView/types.ts +15 -15
  144. package/src/config/index.ts +10 -10
  145. package/src/helpers/components.ts +9 -9
  146. package/src/helpers/dates.ts +17 -17
  147. package/src/helpers/getScrollbarSize.ts +14 -14
  148. package/src/helpers/numbers.ts +63 -63
  149. package/src/helpers/responsive.ts +83 -83
  150. package/src/helpers/styled/space.ts +114 -114
  151. package/src/helpers/styled/typography.ts +25 -25
  152. package/src/helpers/text.ts +13 -13
  153. package/src/helpers/types.ts +9 -9
  154. package/src/hooks/useContainerMediaQuery.ts +7 -7
  155. package/src/hooks/useElementSize.ts +24 -24
  156. package/src/hooks/useMediaQuery.ts +9 -9
  157. package/src/hooks/useMediaQueryForWidth.ts +35 -35
  158. package/src/hooks/useMutableState.test.ts +410 -410
  159. package/src/hooks/useMutableState.ts +39 -39
  160. package/src/hooks/useShowArchived.ts +28 -28
  161. package/src/hooks/useWindowSize.ts +20 -20
  162. package/src/index.ts +103 -103
  163. package/src/providers/AuthenticationProvider/helpers.ts +3 -3
  164. package/src/providers/AuthenticationProvider/index.tsx +303 -303
  165. package/src/providers/LoadingProvider/index.tsx +47 -47
  166. package/src/providers/PortalsProvider/index.tsx +54 -54
  167. package/src/providers/PortalsProvider/styles.ts +31 -31
  168. package/src/providers/SettingsProvider/index.tsx +70 -70
  169. package/src/providers/ThemeProvider/defaultTheme.ts +471 -471
  170. package/src/providers/ThemeProvider/helpers.ts +84 -84
  171. package/src/providers/ThemeProvider/index.ts +73 -73
  172. package/src/providers/ThemeProvider/types.ts +134 -134
  173. package/src/providers/ToastProvider/index.tsx +93 -93
  174. package/src/providers/TrackingProvider/index.tsx +71 -71
  175. package/src/providers/UiProviders/index.tsx +76 -76
  176. package/src/providers/UiProviders/styles.ts +10 -10
  177. package/src/providers/hooks.ts +14 -14
  178. package/src/services/HttpService.ts +92 -92
  179. package/src/services/WebSocketService.ts +155 -155
  180. package/src/services/advancedRequests.ts +102 -102
  181. package/src/services/base.ts +23 -23
  182. package/src/services/globalSearch.ts +32 -32
  183. package/src/services/hooks.ts +92 -92
  184. package/src/services/requests/auth.ts +44 -44
  185. package/src/services/requests/generic.ts +62 -62
  186. package/src/services/requests/printing.ts +12 -12
  187. package/src/services/requests/tracking.ts +12 -12
  188. package/src/services/requests/userProfiles.ts +35 -35
  189. package/src/services/requests/users.ts +28 -28
  190. package/src/services/smartQueries.ts +122 -122
  191. package/src/services/sqlRequests.ts +119 -119
  192. package/src/services/types/auth.ts +98 -98
  193. package/src/services/types/base.ts +10 -10
  194. package/src/services/types/generic.ts +82 -82
  195. package/src/services/types/printing.ts +10 -10
  196. package/src/services/types/tracking.ts +29 -29
  197. package/src/services/types/userProfiles.ts +79 -79
  198. package/src/services/types/users.ts +74 -74
  199. package/src/services/updateSqlRequests.ts +32 -32
  200. package/src/styles/animations.scss +30 -30
  201. package/src/styles/index.scss +42 -42
  202. package/src/types.ts +8 -8
  203. package/src/typings.d.ts +2 -2
  204. package/tsconfig.json +18 -18
  205. package/dist/components/data/DataGrid/AdvancedRequestDataGrid.d.ts +0 -10
  206. package/dist/components/data/DataGrid/AdvancedRequestDataGrid.js +0 -173
  207. package/dist/components/data/DataGrid/FilterValuesScroller.d.ts +0 -13
  208. package/dist/components/data/DataGrid/FilterValuesScroller.js +0 -73
  209. package/dist/components/data/DataGrid/VirtualScroller.d.ts +0 -11
  210. package/dist/components/data/DataGrid/VirtualScroller.js +0 -41
  211. package/dist/components/data/DataGrid/helpers/advancedRequests.d.ts +0 -12
  212. package/dist/components/data/DataGrid/helpers/advancedRequests.js +0 -53
  213. package/dist/components/data/DataGrid/helpers.d.ts +0 -28
  214. package/dist/components/data/DataGrid/helpers.js +0 -436
  215. package/dist/components/data/SmartQueryDataGrid/helpers/columns.d.ts +0 -20
  216. package/dist/components/data/SmartQueryDataGrid/helpers/columns.js +0 -160
  217. package/dist/components/data/SmartQueryDataGrid/helpers/hooks.d.ts +0 -5
  218. package/dist/components/data/SmartQueryDataGrid/helpers/hooks.js +0 -41
  219. package/dist/components/data/SmartQueryDataGrid/helpers/index.d.ts +0 -2
  220. package/dist/components/data/SmartQueryDataGrid/helpers/index.js +0 -18
  221. package/dist/components/data/SmartQueryDataGrid/helpers/smartQueries.d.ts +0 -3
  222. package/dist/components/data/SmartQueryDataGrid/helpers/smartQueries.js +0 -15
  223. package/dist/components/data/SmartQueryDataGrid/hooks.d.ts +0 -9
  224. package/dist/components/data/SmartQueryDataGrid/hooks.js +0 -63
  225. package/dist/components/data/SmartQueryDataGrid/index.d.ts +0 -12
  226. package/dist/components/data/SmartQueryDataGrid/index.js +0 -242
  227. package/dist/components/data/SmartQueryDataGrid/types.d.ts +0 -22
  228. package/dist/components/data/SmartQueryDataGrid/types.js +0 -2
  229. package/dist/components/forms/Form/InputWithLabel.d.ts +0 -2
  230. package/dist/components/forms/Form/InputWithLabel.js +0 -10
  231. package/dist/components/forms/Form/types.d.ts +0 -7
  232. package/dist/components/forms/Form/types.js +0 -2
  233. package/dist/config/types.d.ts +0 -11
  234. package/dist/config/types.js +0 -2
  235. package/dist/helpers/react.d.ts +0 -2
  236. package/dist/helpers/react.js +0 -8
  237. package/dist/services/requests/userPermissions.d.ts +0 -4
  238. package/dist/services/requests/userPermissions.js +0 -20
@@ -1,97 +1,97 @@
1
- import styled from 'styled-components';
2
-
3
- export const DEFAULT_FILTER_ROW_HEIGHT = 24;
4
-
5
- export const InputContainer = styled.div.attrs({
6
- className: 'InputContainer',
7
- })`
8
- position: relative;
9
- border-radius: var(--rounded-md);
10
- padding: 0 var(--space-1);
11
-
12
- svg {
13
- position: absolute;
14
- top: 50%;
15
- transform: translateY(-50%);
16
- left: var(--space-4);
17
- display: flex;
18
- align-items: center;
19
- fill: var(--color-base-400);
20
- width: var(--space-4);
21
- height: var(--space-4);
22
- }
23
-
24
- input {
25
- padding-left: var(--space-8);
26
- }
27
- `;
28
-
29
- export const CheckboxesContainer = styled.div.attrs({
30
- className: 'CheckboxesContainer',
31
- })`
32
- font-weight: normal;
33
- user-select: none;
34
- padding: var(--space-2);
35
- margin: var(--space-1);
36
- margin-bottom: 0;
37
- border: 1px solid var(--color-base-300);
38
- border-radius: var(--rounded-md);
39
- box-shadow: var(--shadow-inner);
40
- background-color: var(--color-base-0);
41
- height: 20em;
42
- overflow-y: hidden;
43
- white-space: nowrap;
44
- `;
45
-
46
- export const Separator = styled.div.attrs({
47
- className: 'Separator',
48
- })`
49
- border-top: 1px solid var(--color-base-200);
50
- margin: var(--space-1) 0;
51
- `;
52
-
53
- export const FilterValueContainer = styled.div.attrs({
54
- className: 'FilterValueContainer',
55
- })`
56
- position: absolute;
57
- left: 0;
58
- right: 0;
59
- display: flex;
60
- flex-direction: row;
61
- align-items: center;
62
- cursor: pointer;
63
- &:hover {
64
- background-color: var(--color-base-50);
65
- }
66
- `;
67
-
68
- export const FilterValuesScrollerContainer = styled.div.attrs({
69
- className: 'FilterValuesScrollerContainer',
70
- })<{
71
- $rowHeight?: number;
72
- }>`
73
- display: block;
74
- font-size: var(--text-base);
75
- background-color: var(--color-base-0);
76
- overflow-y: scroll;
77
- overflow-x: hidden;
78
- height: 100%;
79
-
80
- & > div {
81
- position: relative;
82
- }
83
-
84
- & ${FilterValueContainer} {
85
- position: absolute;
86
- display: flex;
87
- flex-direction: row;
88
- align-items: center;
89
- height: ${({ $rowHeight = DEFAULT_FILTER_ROW_HEIGHT }) =>
90
- `${$rowHeight}px`};
91
-
92
- input[type='checkbox'] {
93
- margin-right: var(--space-1);
94
- flex-shrink: 0;
95
- }
96
- }
97
- `;
1
+ import styled from 'styled-components';
2
+
3
+ export const DEFAULT_FILTER_ROW_HEIGHT = 24;
4
+
5
+ export const InputContainer = styled.div.attrs({
6
+ className: 'InputContainer',
7
+ })`
8
+ position: relative;
9
+ border-radius: var(--rounded-md);
10
+ padding: 0 var(--space-1);
11
+
12
+ svg {
13
+ position: absolute;
14
+ top: 50%;
15
+ transform: translateY(-50%);
16
+ left: var(--space-4);
17
+ display: flex;
18
+ align-items: center;
19
+ fill: var(--color-base-400);
20
+ width: var(--space-4);
21
+ height: var(--space-4);
22
+ }
23
+
24
+ input {
25
+ padding-left: var(--space-8);
26
+ }
27
+ `;
28
+
29
+ export const CheckboxesContainer = styled.div.attrs({
30
+ className: 'CheckboxesContainer',
31
+ })`
32
+ font-weight: normal;
33
+ user-select: none;
34
+ padding: var(--space-2);
35
+ margin: var(--space-1);
36
+ margin-bottom: 0;
37
+ border: 1px solid var(--color-base-300);
38
+ border-radius: var(--rounded-md);
39
+ box-shadow: var(--shadow-inner);
40
+ background-color: var(--color-base-0);
41
+ height: 20em;
42
+ overflow-y: hidden;
43
+ white-space: nowrap;
44
+ `;
45
+
46
+ export const Separator = styled.div.attrs({
47
+ className: 'Separator',
48
+ })`
49
+ border-top: 1px solid var(--color-base-200);
50
+ margin: var(--space-1) 0;
51
+ `;
52
+
53
+ export const FilterValueContainer = styled.div.attrs({
54
+ className: 'FilterValueContainer',
55
+ })`
56
+ position: absolute;
57
+ left: 0;
58
+ right: 0;
59
+ display: flex;
60
+ flex-direction: row;
61
+ align-items: center;
62
+ cursor: pointer;
63
+ &:hover {
64
+ background-color: var(--color-base-50);
65
+ }
66
+ `;
67
+
68
+ export const FilterValuesScrollerContainer = styled.div.attrs({
69
+ className: 'FilterValuesScrollerContainer',
70
+ })<{
71
+ $rowHeight?: number;
72
+ }>`
73
+ display: block;
74
+ font-size: var(--text-base);
75
+ background-color: var(--color-base-0);
76
+ overflow-y: scroll;
77
+ overflow-x: hidden;
78
+ height: 100%;
79
+
80
+ & > div {
81
+ position: relative;
82
+ }
83
+
84
+ & ${FilterValueContainer} {
85
+ position: absolute;
86
+ display: flex;
87
+ flex-direction: row;
88
+ align-items: center;
89
+ height: ${({ $rowHeight = DEFAULT_FILTER_ROW_HEIGHT }) =>
90
+ `${$rowHeight}px`};
91
+
92
+ input[type='checkbox'] {
93
+ margin-right: var(--space-1);
94
+ flex-shrink: 0;
95
+ }
96
+ }
97
+ `;
@@ -1,47 +1,47 @@
1
- import * as styles from './styles';
2
-
3
- import { DEFAULT_COLUMN_WIDTH } from './constants';
4
- import { DataGridContext } from './types';
5
- import { useDataGridContext } from './hooks';
6
-
7
- export const DataGridFooter = <R,>({
8
- context,
9
- }: {
10
- context: DataGridContext<R>;
11
- }) => {
12
- const {
13
- visibleColumns,
14
- rows,
15
- selectedRows,
16
- sortedRows,
17
- selectable,
18
- headerColor,
19
- footers = {},
20
- gridTemplateColumns,
21
- footerFunctions,
22
- } = useDataGridContext(context);
23
-
24
- if (!Object.keys(footers).length) {
25
- return null;
26
- }
27
-
28
- return (
29
- <styles.DataGridFooterRow
30
- $gridTemplateColumns={gridTemplateColumns}
31
- $headerColor={headerColor}
32
- >
33
- {!!selectable && (
34
- <styles.HeaderSelectionCell $headerColor={headerColor} />
35
- )}
36
- {visibleColumns.map((col) => (
37
- <styles.DataGridHeaderCellContainer
38
- key={col.key}
39
- style={{ width: (col.width ?? DEFAULT_COLUMN_WIDTH) + 'px' }}
40
- $headerColor={col.color ?? headerColor}
41
- >
42
- {footerFunctions?.[col.key]?.(rows, sortedRows, selectedRows)}
43
- </styles.DataGridHeaderCellContainer>
44
- ))}
45
- </styles.DataGridFooterRow>
46
- );
47
- };
1
+ import * as styles from './styles';
2
+
3
+ import { DEFAULT_COLUMN_WIDTH } from './constants';
4
+ import { DataGridContext } from './types';
5
+ import { useDataGridContext } from './hooks';
6
+
7
+ export const DataGridFooter = <R,>({
8
+ context,
9
+ }: {
10
+ context: DataGridContext<R>;
11
+ }) => {
12
+ const {
13
+ visibleColumns,
14
+ rows,
15
+ selectedRows,
16
+ sortedRows,
17
+ selectable,
18
+ headerColor,
19
+ footers = {},
20
+ gridTemplateColumns,
21
+ footerFunctions,
22
+ } = useDataGridContext(context);
23
+
24
+ if (!Object.keys(footers).length) {
25
+ return null;
26
+ }
27
+
28
+ return (
29
+ <styles.DataGridFooterRow
30
+ $gridTemplateColumns={gridTemplateColumns}
31
+ $headerColor={headerColor}
32
+ >
33
+ {!!selectable && (
34
+ <styles.HeaderSelectionCell $headerColor={headerColor} />
35
+ )}
36
+ {visibleColumns.map((col) => (
37
+ <styles.DataGridHeaderCellContainer
38
+ key={col.key}
39
+ style={{ width: (col.width ?? DEFAULT_COLUMN_WIDTH) + 'px' }}
40
+ $headerColor={col.color ?? headerColor}
41
+ >
42
+ {footerFunctions?.[col.key]?.(rows, sortedRows, selectedRows)}
43
+ </styles.DataGridHeaderCellContainer>
44
+ ))}
45
+ </styles.DataGridFooterRow>
46
+ );
47
+ };
@@ -1,74 +1,74 @@
1
- import * as styles from './styles';
2
-
3
- import { useCallback, useState } from 'react';
4
-
5
- import { DataGridContext } from './types';
6
- import { DataGridHeaderCell } from './DataGridHeaderCell';
7
- import { IndeterminateCheckbox } from '../../forms/IndeterminateCheckbox';
8
- import { useDataGridContext } from './hooks';
9
-
10
- export const DataGridHeader = <R,>({
11
- context,
12
- }: {
13
- context: DataGridContext<R>;
14
- }) => {
15
- const {
16
- visibleColumns,
17
- selectable,
18
- rows,
19
- selectedKeys,
20
- setSelectedKeys,
21
- headerColor,
22
- rowKeyGetter,
23
- gridTemplateColumns,
24
- getAllIds,
25
- } = useDataGridContext(context);
26
- const [visibleFilter, setVisibleFilter] = useState<string | undefined>();
27
-
28
- const checkboxStatus =
29
- selectedKeys.length === 0
30
- ? false
31
- : selectedKeys.length === rows.length
32
- ? true
33
- : undefined;
34
- const toggleAll = useCallback(
35
- async (newStatus: boolean) => {
36
- const allIds = getAllIds ? await getAllIds() : rows.map(rowKeyGetter);
37
- setSelectedKeys(newStatus ? allIds : []);
38
- },
39
- [getAllIds, rowKeyGetter, rows, setSelectedKeys]
40
- );
41
-
42
- const onFilterButtonClicked = useCallback((columnKey: string) => {
43
- setVisibleFilter((prev) => (prev === columnKey ? undefined : columnKey));
44
- }, []);
45
-
46
- return (
47
- <>
48
- <styles.DataGridHeaderRow
49
- $gridTemplateColumns={gridTemplateColumns}
50
- $headerColor={headerColor}
51
- >
52
- {!!selectable && (
53
- <styles.HeaderSelectionCell
54
- $headerColor={headerColor}
55
- onClick={() => toggleAll(!(checkboxStatus ?? true))}
56
- >
57
- <IndeterminateCheckbox checked={checkboxStatus} readOnly />
58
- </styles.HeaderSelectionCell>
59
- )}
60
- {visibleColumns.map((col, index) => (
61
- <DataGridHeaderCell
62
- key={col.key}
63
- columnKey={col.key}
64
- column={col}
65
- context={context}
66
- columnIndex={index}
67
- isFilterOpen={visibleFilter === col.key}
68
- onFilterButtonClicked={onFilterButtonClicked}
69
- />
70
- ))}
71
- </styles.DataGridHeaderRow>
72
- </>
73
- );
74
- };
1
+ import * as styles from './styles';
2
+
3
+ import { useCallback, useState } from 'react';
4
+
5
+ import { DataGridContext } from './types';
6
+ import { DataGridHeaderCell } from './DataGridHeaderCell';
7
+ import { IndeterminateCheckbox } from '../../forms/IndeterminateCheckbox';
8
+ import { useDataGridContext } from './hooks';
9
+
10
+ export const DataGridHeader = <R,>({
11
+ context,
12
+ }: {
13
+ context: DataGridContext<R>;
14
+ }) => {
15
+ const {
16
+ visibleColumns,
17
+ selectable,
18
+ rows,
19
+ selectedKeys,
20
+ setSelectedKeys,
21
+ headerColor,
22
+ rowKeyGetter,
23
+ gridTemplateColumns,
24
+ getAllIds,
25
+ } = useDataGridContext(context);
26
+ const [visibleFilter, setVisibleFilter] = useState<string | undefined>();
27
+
28
+ const checkboxStatus =
29
+ selectedKeys.length === 0
30
+ ? false
31
+ : selectedKeys.length === rows.length
32
+ ? true
33
+ : undefined;
34
+ const toggleAll = useCallback(
35
+ async (newStatus: boolean) => {
36
+ const allIds = getAllIds ? await getAllIds() : rows.map(rowKeyGetter);
37
+ setSelectedKeys(newStatus ? allIds : []);
38
+ },
39
+ [getAllIds, rowKeyGetter, rows, setSelectedKeys]
40
+ );
41
+
42
+ const onFilterButtonClicked = useCallback((columnKey: string) => {
43
+ setVisibleFilter((prev) => (prev === columnKey ? undefined : columnKey));
44
+ }, []);
45
+
46
+ return (
47
+ <>
48
+ <styles.DataGridHeaderRow
49
+ $gridTemplateColumns={gridTemplateColumns}
50
+ $headerColor={headerColor}
51
+ >
52
+ {!!selectable && (
53
+ <styles.HeaderSelectionCell
54
+ $headerColor={headerColor}
55
+ onClick={() => toggleAll(!(checkboxStatus ?? true))}
56
+ >
57
+ <IndeterminateCheckbox checked={checkboxStatus} readOnly />
58
+ </styles.HeaderSelectionCell>
59
+ )}
60
+ {visibleColumns.map((col, index) => (
61
+ <DataGridHeaderCell
62
+ key={col.key}
63
+ columnKey={col.key}
64
+ column={col}
65
+ context={context}
66
+ columnIndex={index}
67
+ isFilterOpen={visibleFilter === col.key}
68
+ onFilterButtonClicked={onFilterButtonClicked}
69
+ />
70
+ ))}
71
+ </styles.DataGridHeaderRow>
72
+ </>
73
+ );
74
+ };
@@ -1,112 +1,112 @@
1
- /* eslint-disable @typescript-eslint/no-explicit-any */
2
-
3
- import * as styles from './styles';
4
-
5
- import { useCallback, useMemo, useRef, useState } from 'react';
6
-
7
- import { ChevronDownIcon } from '../../../Icons';
8
- import { DataGridFilterMenu } from './DataGridFilterMenu';
9
- import { DataGridHeaderCellProps } from './types';
10
- import { Dropdown } from '../../layout/Dropdown';
11
- import { IconButton } from '../../forms/IconButton';
12
- import { useDataGridContext } from './hooks';
13
- import { useUi } from '../../../providers/hooks';
14
-
15
- export const DataGridHeaderCell = <R,>({
16
- columnKey,
17
- column,
18
- context,
19
- }: DataGridHeaderCellProps<R>) => {
20
- const { getElementScreenRect } = useUi();
21
- const contextValue = useDataGridContext(context);
22
- const {
23
- filters = {},
24
- headerColor,
25
- resizingColumnKey,
26
- startResizing,
27
- } = contextValue;
28
- const filterButtonRef = useRef<HTMLButtonElement | null>(null);
29
-
30
- /** RESIZING */
31
-
32
- const [isFilterDropdownVisible, setIsFilterDropdownVisible] = useState(false);
33
- const filterDropdown = useMemo(() => {
34
- if (
35
- !isFilterDropdownVisible ||
36
- !filterButtonRef.current ||
37
- !columnKey ||
38
- !column.filter
39
- ) {
40
- return null;
41
- }
42
- const filterButtonRect = getElementScreenRect(filterButtonRef.current);
43
- filterButtonRect.x += window.scrollX;
44
- filterButtonRect.y += window.scrollY;
45
- return (
46
- <Dropdown
47
- $sourceRect={filterButtonRect}
48
- onClose={() => setIsFilterDropdownVisible(false)}
49
- $width={320}
50
- $height={[350, 500]}
51
- $autoPositionX
52
- >
53
- <DataGridFilterMenu
54
- column={column as any}
55
- context={context}
56
- onClose={() => setIsFilterDropdownVisible(false)}
57
- />
58
- </Dropdown>
59
- );
60
- }, [
61
- column,
62
- columnKey,
63
- context,
64
- getElementScreenRect,
65
- isFilterDropdownVisible,
66
- ]);
67
-
68
- const onFilterButtonClicked = useCallback(() => {
69
- setIsFilterDropdownVisible(true);
70
- }, []);
71
-
72
- const isResizing = resizingColumnKey === columnKey;
73
- const hasFilters = filters[columnKey]?.values.length > 0;
74
-
75
- return (
76
- <styles.DataGridHeaderCellContainer
77
- $headerColor={column.color ?? headerColor}
78
- $isResizing={isResizing}
79
- $hasFilterOpened={isFilterDropdownVisible || hasFilters}
80
- >
81
- {filterDropdown}
82
-
83
- {typeof column.name === 'string' ? (
84
- <span>{column.name}</span>
85
- ) : (
86
- <styles.DataGridHeaderTextContainer>
87
- {column.name}
88
- </styles.DataGridHeaderTextContainer>
89
- )}
90
- {!!column.filter && (
91
- <IconButton
92
- size="small"
93
- className={hasFilters ? 'danger' : ''}
94
- ref={filterButtonRef}
95
- icon={ChevronDownIcon}
96
- color={hasFilters ? 'danger' : headerColor}
97
- onClick={onFilterButtonClicked}
98
- bordered
99
- />
100
- )}
101
- {column.resizable !== false && (
102
- <>
103
- <styles.DataGridResizeGrip
104
- className={isResizing ? 'active' : ''}
105
- $headerColor={headerColor}
106
- onMouseDown={(e) => startResizing(e, columnKey)}
107
- />
108
- </>
109
- )}
110
- </styles.DataGridHeaderCellContainer>
111
- );
112
- };
1
+ /* eslint-disable @typescript-eslint/no-explicit-any */
2
+
3
+ import * as styles from './styles';
4
+
5
+ import { useCallback, useMemo, useRef, useState } from 'react';
6
+
7
+ import { ChevronDownIcon } from '../../../Icons';
8
+ import { DataGridFilterMenu } from './DataGridFilterMenu';
9
+ import { DataGridHeaderCellProps } from './types';
10
+ import { Dropdown } from '../../layout/Dropdown';
11
+ import { IconButton } from '../../forms/IconButton';
12
+ import { useDataGridContext } from './hooks';
13
+ import { useUi } from '../../../providers/hooks';
14
+
15
+ export const DataGridHeaderCell = <R,>({
16
+ columnKey,
17
+ column,
18
+ context,
19
+ }: DataGridHeaderCellProps<R>) => {
20
+ const { getElementScreenRect } = useUi();
21
+ const contextValue = useDataGridContext(context);
22
+ const {
23
+ filters = {},
24
+ headerColor,
25
+ resizingColumnKey,
26
+ startResizing,
27
+ } = contextValue;
28
+ const filterButtonRef = useRef<HTMLButtonElement | null>(null);
29
+
30
+ /** RESIZING */
31
+
32
+ const [isFilterDropdownVisible, setIsFilterDropdownVisible] = useState(false);
33
+ const filterDropdown = useMemo(() => {
34
+ if (
35
+ !isFilterDropdownVisible ||
36
+ !filterButtonRef.current ||
37
+ !columnKey ||
38
+ !column.filter
39
+ ) {
40
+ return null;
41
+ }
42
+ const filterButtonRect = getElementScreenRect(filterButtonRef.current);
43
+ filterButtonRect.x += window.scrollX;
44
+ filterButtonRect.y += window.scrollY;
45
+ return (
46
+ <Dropdown
47
+ $sourceRect={filterButtonRect}
48
+ onClose={() => setIsFilterDropdownVisible(false)}
49
+ $width={320}
50
+ $height={[350, 500]}
51
+ $autoPositionX
52
+ >
53
+ <DataGridFilterMenu
54
+ column={column as any}
55
+ context={context}
56
+ onClose={() => setIsFilterDropdownVisible(false)}
57
+ />
58
+ </Dropdown>
59
+ );
60
+ }, [
61
+ column,
62
+ columnKey,
63
+ context,
64
+ getElementScreenRect,
65
+ isFilterDropdownVisible,
66
+ ]);
67
+
68
+ const onFilterButtonClicked = useCallback(() => {
69
+ setIsFilterDropdownVisible(true);
70
+ }, []);
71
+
72
+ const isResizing = resizingColumnKey === columnKey;
73
+ const hasFilters = filters[columnKey]?.values.length > 0;
74
+
75
+ return (
76
+ <styles.DataGridHeaderCellContainer
77
+ $headerColor={column.color ?? headerColor}
78
+ $isResizing={isResizing}
79
+ $hasFilterOpened={isFilterDropdownVisible || hasFilters}
80
+ >
81
+ {filterDropdown}
82
+
83
+ {typeof column.name === 'string' ? (
84
+ <span>{column.name}</span>
85
+ ) : (
86
+ <styles.DataGridHeaderTextContainer>
87
+ {column.name}
88
+ </styles.DataGridHeaderTextContainer>
89
+ )}
90
+ {!!column.filter && (
91
+ <IconButton
92
+ size="small"
93
+ className={hasFilters ? 'danger' : ''}
94
+ ref={filterButtonRef}
95
+ icon={ChevronDownIcon}
96
+ color={hasFilters ? 'danger' : headerColor}
97
+ onClick={onFilterButtonClicked}
98
+ bordered
99
+ />
100
+ )}
101
+ {column.resizable !== false && (
102
+ <>
103
+ <styles.DataGridResizeGrip
104
+ className={isResizing ? 'active' : ''}
105
+ $headerColor={headerColor}
106
+ onMouseDown={(e) => startResizing(e, columnKey)}
107
+ />
108
+ </>
109
+ )}
110
+ </styles.DataGridHeaderCellContainer>
111
+ );
112
+ };