@addev-be/ui 0.17.3 → 0.18.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 (209) hide show
  1. package/assets/icons/table.svg +1 -1
  2. package/dist/Icons.d.ts +1 -9
  3. package/dist/Icons.js +1 -17
  4. package/dist/components/auth/LoginForm.js +1 -1
  5. package/dist/components/auth/PasswordRecoveryForm.js +1 -1
  6. package/dist/components/auth/PasswordResetForm.js +1 -1
  7. package/dist/components/data/AdvancedRequestDataGrid/helpers/advancedRequests.d.ts +14 -0
  8. package/dist/components/data/AdvancedRequestDataGrid/helpers/advancedRequests.js +76 -0
  9. package/dist/components/data/AdvancedRequestDataGrid/helpers/columns.d.ts +22 -0
  10. package/dist/components/data/AdvancedRequestDataGrid/helpers/columns.js +156 -0
  11. package/dist/components/data/AdvancedRequestDataGrid/helpers/index.d.ts +2 -0
  12. package/dist/components/data/AdvancedRequestDataGrid/helpers/index.js +18 -0
  13. package/dist/components/data/AdvancedRequestDataGrid/index.d.ts +2 -0
  14. package/dist/components/data/AdvancedRequestDataGrid/index.js +215 -0
  15. package/dist/components/data/AdvancedRequestDataGrid/types.d.ts +21 -0
  16. package/dist/components/data/{DataGrid/DataGridEditableCell → AdvancedRequestDataGrid}/types.js +0 -1
  17. package/dist/components/data/DataGrid/DataGridCell.js +5 -5
  18. package/dist/components/data/DataGrid/DataGridColumnsModal/helpers.d.ts +2 -2
  19. package/dist/components/data/DataGrid/DataGridColumnsModal/helpers.js +7 -1
  20. package/dist/components/data/DataGrid/DataGridColumnsModal/hooks.js +3 -3
  21. package/dist/components/data/DataGrid/DataGridColumnsModal/index.js +21 -16
  22. package/dist/components/data/DataGrid/DataGridEditableCell.d.ts +2 -0
  23. package/dist/components/data/DataGrid/DataGridEditableCell.js +27 -0
  24. package/dist/components/data/DataGrid/DataGridFilterMenu/FilterValuesScroller.js +1 -17
  25. package/dist/components/data/DataGrid/DataGridFilterMenu/hooks.d.ts +3 -4
  26. package/dist/components/data/DataGrid/DataGridFilterMenu/hooks.js +12 -11
  27. package/dist/components/data/DataGrid/DataGridFilterMenu/index.d.ts +4 -5
  28. package/dist/components/data/DataGrid/DataGridFilterMenu/index.js +40 -44
  29. package/dist/components/data/DataGrid/DataGridFilterMenu/styles.js +1 -1
  30. package/dist/components/data/DataGrid/DataGridFooter.js +5 -5
  31. package/dist/components/data/DataGrid/DataGridHeader.js +6 -40
  32. package/dist/components/data/DataGrid/DataGridHeaderCell.d.ts +1 -1
  33. package/dist/components/data/DataGrid/DataGridHeaderCell.js +23 -11
  34. package/dist/components/data/DataGrid/DataGridRowTemplate.d.ts +1 -1
  35. package/dist/components/data/DataGrid/DataGridRowTemplate.js +9 -8
  36. package/dist/components/data/DataGrid/FilterModalContent/index.js +1 -1
  37. package/dist/components/data/DataGrid/helpers/columns.d.ts +12 -13
  38. package/dist/components/data/DataGrid/helpers/columns.js +130 -100
  39. package/dist/components/data/DataGrid/hooks/index.d.ts +3 -3
  40. package/dist/components/data/DataGrid/hooks/index.js +12 -8
  41. package/dist/components/data/DataGrid/hooks/useDataGrid.js +23 -71
  42. package/dist/components/data/DataGrid/hooks/useDataGridCopy.js +30 -25
  43. package/dist/components/data/DataGrid/index.js +3 -16
  44. package/dist/components/data/DataGrid/styles.d.ts +8 -13
  45. package/dist/components/data/DataGrid/styles.js +30 -58
  46. package/dist/components/data/DataGrid/types.d.ts +15 -81
  47. package/dist/components/data/SqlRequestDataGrid/helpers/columns.d.ts +17 -16
  48. package/dist/components/data/SqlRequestDataGrid/helpers/columns.js +84 -236
  49. package/dist/components/data/SqlRequestDataGrid/index.js +63 -77
  50. package/dist/components/data/SqlRequestDataGrid/types.d.ts +3 -13
  51. package/dist/components/data/SqlRequestDataGrid/types.js +0 -1
  52. package/dist/components/data/SqlRequestGrid/index.d.ts +1 -1
  53. package/dist/components/data/SqlRequestGrid/index.js +49 -139
  54. package/dist/components/data/SqlRequestGrid/styles.d.ts +12 -0
  55. package/dist/components/data/SqlRequestGrid/styles.js +20 -4
  56. package/dist/components/data/SqlRequestGrid/types.d.ts +4 -14
  57. package/dist/components/data/VirtualScroller/index.d.ts +3 -4
  58. package/dist/components/data/VirtualScroller/index.js +5 -15
  59. package/dist/components/data/VirtualScroller/styles.d.ts +2 -4
  60. package/dist/components/data/VirtualScroller/styles.js +6 -9
  61. package/dist/components/data/index.d.ts +2 -1
  62. package/dist/components/data/index.js +2 -1
  63. package/dist/components/forms/Button.d.ts +2 -9
  64. package/dist/components/forms/Button.js +7 -13
  65. package/dist/components/forms/IconButton.d.ts +1 -2
  66. package/dist/components/forms/IconButton.js +12 -12
  67. package/dist/components/forms/Select.d.ts +6 -5
  68. package/dist/components/forms/Select.js +5 -2
  69. package/dist/components/forms/index.d.ts +0 -4
  70. package/dist/components/forms/index.js +0 -4
  71. package/dist/components/layout/Dropdown/index.d.ts +0 -1
  72. package/dist/components/layout/Dropdown/index.js +3 -24
  73. package/dist/components/layout/index.d.ts +1 -4
  74. package/dist/components/layout/index.js +1 -4
  75. package/dist/components/search/QuickSearchBar.js +0 -6
  76. package/dist/components/ui/Card/styles.js +1 -1
  77. package/dist/components/ui/index.d.ts +0 -3
  78. package/dist/components/ui/index.js +0 -3
  79. package/dist/helpers/index.d.ts +0 -1
  80. package/dist/helpers/index.js +0 -1
  81. package/dist/helpers/numbers.d.ts +0 -3
  82. package/dist/helpers/numbers.js +1 -33
  83. package/dist/hooks/index.d.ts +0 -5
  84. package/dist/hooks/index.js +0 -5
  85. package/dist/index.d.ts +0 -1
  86. package/dist/index.js +0 -1
  87. package/dist/providers/AuthenticationProvider/index.js +3 -4
  88. package/dist/providers/PortalsProvider/styles.js +1 -1
  89. package/dist/providers/ThemeProvider/defaultTheme.js +0 -13
  90. package/dist/providers/ThemeProvider/types.d.ts +1 -2
  91. package/dist/providers/UiProviders/index.js +1 -2
  92. package/dist/providers/index.d.ts +0 -2
  93. package/dist/providers/index.js +0 -2
  94. package/dist/services/globalSearch.d.ts +1 -2
  95. package/dist/services/index.d.ts +0 -7
  96. package/dist/services/index.js +0 -20
  97. package/package.json +1 -1
  98. package/src/components/forms/NumberInput.tsx +53 -53
  99. package/src/components/ui/Avatar/styles.ts +61 -61
  100. package/src/components/ui/Label.tsx +90 -90
  101. package/src/providers/AuthenticationProvider/index.tsx +73 -13
  102. package/src/providers/TrackingProvider/hooks.ts +14 -14
  103. package/src/services/WebSocketService.ts +19 -1
  104. package/src/services/hooks.ts +50 -2
  105. package/tsconfig.tsbuildinfo +1 -1
  106. package/dist/components/data/DataGrid/DataGridEditableCell/CheckboxEditableCell.d.ts +0 -2
  107. package/dist/components/data/DataGrid/DataGridEditableCell/CheckboxEditableCell.js +0 -23
  108. package/dist/components/data/DataGrid/DataGridEditableCell/DateEditableCell.d.ts +0 -2
  109. package/dist/components/data/DataGrid/DataGridEditableCell/DateEditableCell.js +0 -27
  110. package/dist/components/data/DataGrid/DataGridEditableCell/NumberEditableCell.d.ts +0 -5
  111. package/dist/components/data/DataGrid/DataGridEditableCell/NumberEditableCell.js +0 -32
  112. package/dist/components/data/DataGrid/DataGridEditableCell/TextEditableCell.d.ts +0 -2
  113. package/dist/components/data/DataGrid/DataGridEditableCell/TextEditableCell.js +0 -23
  114. package/dist/components/data/DataGrid/DataGridEditableCell/index.d.ts +0 -2
  115. package/dist/components/data/DataGrid/DataGridEditableCell/index.js +0 -91
  116. package/dist/components/data/DataGrid/DataGridEditableCell/styles.d.ts +0 -3
  117. package/dist/components/data/DataGrid/DataGridEditableCell/styles.js +0 -17
  118. package/dist/components/data/DataGrid/DataGridEditableCell/types.d.ts +0 -11
  119. package/dist/components/data/DataGrid/constants.d.ts +0 -6
  120. package/dist/components/data/DataGrid/constants.js +0 -9
  121. package/dist/components/data/DataGrid/hooks/useDataGridChangedRows.d.ts +0 -9
  122. package/dist/components/data/DataGrid/hooks/useDataGridChangedRows.js +0 -71
  123. package/dist/components/data/SqlRequestDataGrid/SqlRequestForeignListEditableCell.d.ts +0 -2
  124. package/dist/components/data/SqlRequestDataGrid/SqlRequestForeignListEditableCell.js +0 -19
  125. package/dist/components/data/SqlRequestDataGrid/styles.d.ts +0 -2
  126. package/dist/components/data/SqlRequestDataGrid/styles.js +0 -14
  127. package/dist/components/data/SqlRequestForeignList/index.d.ts +0 -4
  128. package/dist/components/data/SqlRequestForeignList/index.js +0 -131
  129. package/dist/components/data/SqlRequestForeignList/styles.d.ts +0 -9
  130. package/dist/components/data/SqlRequestForeignList/styles.js +0 -22
  131. package/dist/components/data/SqlRequestForeignList/types.d.ts +0 -22
  132. package/dist/components/data/SqlRequestForeignList/types.js +0 -3
  133. package/dist/components/data/SqlRequestGrid/filters/FiltersSidebar.d.ts +0 -10
  134. package/dist/components/data/SqlRequestGrid/filters/FiltersSidebar.js +0 -51
  135. package/dist/components/data/SqlRequestGrid/filters/styles.d.ts +0 -4
  136. package/dist/components/data/SqlRequestGrid/filters/styles.js +0 -17
  137. package/dist/components/forms/AutoTextArea.d.ts +0 -10
  138. package/dist/components/forms/AutoTextArea.js +0 -40
  139. package/dist/components/forms/Form/Checkbox.d.ts +0 -3
  140. package/dist/components/forms/Form/Checkbox.js +0 -33
  141. package/dist/components/forms/Form/FormGroup.d.ts +0 -9
  142. package/dist/components/forms/Form/FormGroup.js +0 -10
  143. package/dist/components/forms/Form/Input.d.ts +0 -3
  144. package/dist/components/forms/Form/Input.js +0 -33
  145. package/dist/components/forms/Form/Row.d.ts +0 -9
  146. package/dist/components/forms/Form/Row.js +0 -10
  147. package/dist/components/forms/Form/Select.d.ts +0 -18
  148. package/dist/components/forms/Form/Select.js +0 -47
  149. package/dist/components/forms/Form/TextArea.d.ts +0 -4
  150. package/dist/components/forms/Form/TextArea.js +0 -34
  151. package/dist/components/forms/Form/index.d.ts +0 -80
  152. package/dist/components/forms/Form/index.js +0 -29
  153. package/dist/components/forms/Form/styles.d.ts +0 -19
  154. package/dist/components/forms/Form/styles.js +0 -49
  155. package/dist/components/forms/NumberInput.d.ts +0 -9
  156. package/dist/components/forms/NumberInput.js +0 -41
  157. package/dist/components/layout/Columns.d.ts +0 -5
  158. package/dist/components/layout/Columns.js +0 -19
  159. package/dist/components/layout/Grid/index.d.ts +0 -6
  160. package/dist/components/layout/Grid/index.js +0 -6
  161. package/dist/components/layout/Grid/styles.d.ts +0 -14
  162. package/dist/components/layout/Grid/styles.js +0 -29
  163. package/dist/components/layout/Masonry/index.d.ts +0 -3
  164. package/dist/components/layout/Masonry/index.js +0 -20
  165. package/dist/components/layout/Masonry/styles.d.ts +0 -5
  166. package/dist/components/layout/Masonry/styles.js +0 -17
  167. package/dist/components/ui/Avatar/index.d.ts +0 -10
  168. package/dist/components/ui/Avatar/index.js +0 -52
  169. package/dist/components/ui/Avatar/styles.d.ts +0 -4
  170. package/dist/components/ui/Avatar/styles.js +0 -43
  171. package/dist/components/ui/Ellipsis.d.ts +0 -13
  172. package/dist/components/ui/Ellipsis.js +0 -28
  173. package/dist/components/ui/Label.d.ts +0 -9
  174. package/dist/components/ui/Label.js +0 -74
  175. package/dist/components/ui/ToastNotification.d.ts +0 -14
  176. package/dist/components/ui/ToastNotification.js +0 -78
  177. package/dist/helpers/responsive.d.ts +0 -37
  178. package/dist/helpers/responsive.js +0 -57
  179. package/dist/hooks/useContainerMediaQuery.d.ts +0 -17
  180. package/dist/hooks/useContainerMediaQuery.js +0 -10
  181. package/dist/hooks/useMediaQuery.d.ts +0 -17
  182. package/dist/hooks/useMediaQuery.js +0 -11
  183. package/dist/hooks/useMediaQueryForWidth.d.ts +0 -17
  184. package/dist/hooks/useMediaQueryForWidth.js +0 -26
  185. package/dist/hooks/useMutableState.d.ts +0 -2
  186. package/dist/hooks/useMutableState.js +0 -16
  187. package/dist/hooks/useShowArchived.d.ts +0 -6
  188. package/dist/hooks/useShowArchived.js +0 -21
  189. package/dist/poppins-700.woff2 +0 -0
  190. package/dist/providers/ThemeProvider/helpers.d.ts +0 -3
  191. package/dist/providers/ThemeProvider/helpers.js +0 -13
  192. package/dist/providers/TrackingProvider/hooks.d.ts +0 -1
  193. package/dist/providers/TrackingProvider/hooks.js +0 -15
  194. package/dist/providers/TrackingProvider/index.d.ts +0 -8
  195. package/dist/providers/TrackingProvider/index.js +0 -41
  196. package/dist/services/requests/generic.d.ts +0 -29
  197. package/dist/services/requests/generic.js +0 -29
  198. package/dist/services/requests/tracking.d.ts +0 -18
  199. package/dist/services/requests/tracking.js +0 -8
  200. package/dist/services/smartQueries.d.ts +0 -51
  201. package/dist/services/smartQueries.js +0 -10
  202. package/dist/services/smartRequests.d.ts +0 -0
  203. package/dist/services/smartRequests.js +0 -1
  204. package/dist/services/types/generic.d.ts +0 -44
  205. package/dist/services/types/generic.js +0 -79
  206. package/dist/services/types/tracking.d.ts +0 -24
  207. package/dist/services/types/tracking.js +0 -47
  208. package/dist/services/updateSqlRequests.d.ts +0 -24
  209. package/dist/services/updateSqlRequests.js +0 -7
@@ -21,6 +21,7 @@ import {
21
21
  import { basePermissions } from './helpers';
22
22
 
23
23
  export type AuthenticationContextProps = {
24
+ status?: number;
24
25
  token?: string;
25
26
  user?: UserDTO;
26
27
  isAuthenticated: boolean;
@@ -36,6 +37,7 @@ export type AuthenticationContextProps = {
36
37
  };
37
38
 
38
39
  export const AuthenticationContext = createContext<AuthenticationContextProps>({
40
+ status: undefined,
39
41
  authenticate: () => {},
40
42
  isAuthenticated: false,
41
43
  login: async () => false,
@@ -64,11 +66,13 @@ export const AuthenticationProvider: FC<AuthenticationProviderProps> = ({
64
66
  () => ({ ...basePermissions, ...permissions }),
65
67
  [permissions]
66
68
  );
69
+ const [isLoading, setIsLoading] = useState<boolean>(false);
67
70
  const [, setWebSocketStatus] = useState<boolean | undefined>(false);
68
71
  const [token, setToken] = useState<string | undefined>(
69
72
  sessionStorage.getItem('authToken') || undefined
70
73
  );
71
74
  const [user, setUser] = useState<UserDTO | undefined>(undefined);
75
+ const [status, setStatus] = useState<number | undefined>(undefined);
72
76
 
73
77
  const sendAuthenticateRequest =
74
78
  useAuthenticateRequestHandler(requestHandlerName);
@@ -81,9 +85,12 @@ export const AuthenticationProvider: FC<AuthenticationProviderProps> = ({
81
85
 
82
86
  const authenticate = useCallback(
83
87
  (force = false) => {
84
- if (token && (!user || force)) {
88
+ if (token && (!user || force) && !isLoading) {
89
+ setIsLoading(true);
85
90
  sendAuthenticateRequest({ token }).then(
86
91
  (response) => {
92
+ setIsLoading(false);
93
+ setStatus(response.status);
87
94
  if (response.status === 0 && response.user) {
88
95
  setUser(response.user);
89
96
  } else if (response.status > 0) {
@@ -92,13 +99,14 @@ export const AuthenticationProvider: FC<AuthenticationProviderProps> = ({
92
99
  }
93
100
  },
94
101
  () => {
102
+ setIsLoading(false);
95
103
  setToken(undefined);
96
104
  setUser(undefined);
97
105
  }
98
106
  );
99
107
  }
100
108
  },
101
- [sendAuthenticateRequest, token, user]
109
+ [isLoading, sendAuthenticateRequest, token, user]
102
110
  );
103
111
 
104
112
  useEffect(() => {
@@ -110,10 +118,20 @@ export const AuthenticationProvider: FC<AuthenticationProviderProps> = ({
110
118
  }
111
119
  }, [authenticate, token]);
112
120
 
121
+ const [networkStatus, setNetworkStatus] = useState<boolean | undefined>(
122
+ false
123
+ );
124
+
113
125
  const login = useCallback(
114
- async (username: string, password: string) =>
115
- sendLoginRequest({ username, password })
126
+ async (username: string, password: string) => {
127
+ if (isLoading) {
128
+ throw new Error('Already loading');
129
+ }
130
+
131
+ setIsLoading(true);
132
+ return sendLoginRequest({ username, password })
116
133
  .then((response) => {
134
+ setIsLoading(false);
117
135
  if (response.status === 0 && response.user) {
118
136
  setToken(response.token);
119
137
  setUser(response.user);
@@ -122,11 +140,13 @@ export const AuthenticationProvider: FC<AuthenticationProviderProps> = ({
122
140
  throw new Error(`Login failed with status ${response.status}`);
123
141
  })
124
142
  .catch(() => {
143
+ setIsLoading(false);
125
144
  setToken(undefined);
126
145
  setUser(undefined);
127
146
  return false;
128
- }),
129
- [sendLoginRequest]
147
+ });
148
+ },
149
+ [isLoading, sendLoginRequest]
130
150
  );
131
151
 
132
152
  const logout = useCallback(
@@ -138,6 +158,7 @@ export const AuthenticationProvider: FC<AuthenticationProviderProps> = ({
138
158
  .finally(() => {
139
159
  setToken(undefined);
140
160
  setUser(undefined);
161
+ setStatus(undefined);
141
162
  }),
142
163
  [sendLogoutRequest]
143
164
  );
@@ -183,8 +204,47 @@ export const AuthenticationProvider: FC<AuthenticationProviderProps> = ({
183
204
  ]
184
205
  );
185
206
 
207
+ const webSocketStatusChanged = useCallback(
208
+ (status: boolean | undefined) => {
209
+ if (!networkStatus && status) {
210
+ authenticate(true);
211
+ }
212
+ setNetworkStatus(status);
213
+ },
214
+ [authenticate, networkStatus]
215
+ );
216
+
217
+ const webSocketErrorReceived = useCallback(
218
+ ({ status }: { status: number; message: string }) => {
219
+ // Handle logout when NotAuthenticated error is received
220
+ if (status === -4) {
221
+ logout();
222
+ }
223
+ },
224
+ [logout]
225
+ );
226
+
227
+ useEffect(() => {
228
+ const subscription = WebSocketService.getInstance().status$.subscribe(
229
+ webSocketStatusChanged
230
+ );
231
+ return () => {
232
+ subscription.unsubscribe();
233
+ };
234
+ }, [webSocketStatusChanged]);
235
+
236
+ useEffect(() => {
237
+ const subscription = WebSocketService.getInstance().error$.subscribe(
238
+ webSocketErrorReceived
239
+ );
240
+ return () => {
241
+ subscription.unsubscribe();
242
+ };
243
+ }, [webSocketErrorReceived]);
244
+
186
245
  const contextValue = useMemo(
187
246
  () => ({
247
+ status,
188
248
  token,
189
249
  user,
190
250
  isAuthenticated: !!user,
@@ -199,17 +259,17 @@ export const AuthenticationProvider: FC<AuthenticationProviderProps> = ({
199
259
  setToken,
200
260
  }),
201
261
  [
202
- allPermissions,
262
+ status,
263
+ token,
264
+ user,
203
265
  authenticate,
204
- checkRecoveryKey,
205
- hasPermission,
206
266
  login,
207
267
  logout,
208
- resetPassword,
209
268
  sendRecoveryKey,
210
- token,
211
- user,
212
- setToken,
269
+ checkRecoveryKey,
270
+ resetPassword,
271
+ allPermissions,
272
+ hasPermission,
213
273
  ]
214
274
  );
215
275
 
@@ -1,14 +1,14 @@
1
- import { useContext, useEffect } from 'react';
2
-
3
- import { TrackingContext } from '.';
4
- import { useLocation } from 'react-router-dom';
5
-
6
- export const useLocationTracking = () => {
7
- const { sendEvent } = useContext(TrackingContext);
8
- const { pathname, search } = useLocation();
9
- const pathWithSearch = `${pathname}${search}`;
10
-
11
- useEffect(() => {
12
- sendEvent('PageView', { path: pathWithSearch });
13
- }, [pathWithSearch, sendEvent]);
14
- };
1
+ import { useContext, useEffect } from 'react';
2
+
3
+ import { TrackingContext } from '.';
4
+ import { useLocation } from 'react-router-dom';
5
+
6
+ export const useLocationTracking = () => {
7
+ const { sendEvent } = useContext(TrackingContext);
8
+ const { pathname, search } = useLocation();
9
+ const pathWithSearch = `${pathname}${search}`;
10
+
11
+ useEffect(() => {
12
+ sendEvent('PageView', { path: pathWithSearch });
13
+ }, [pathWithSearch, sendEvent]);
14
+ };
@@ -3,6 +3,16 @@ import { Request } from './base';
3
3
  import { Subject } from 'rxjs';
4
4
  import { v4 } from 'uuid';
5
5
 
6
+ export class WebSocketError extends Error {
7
+ public status: number;
8
+
9
+ constructor(status: number, message: string) {
10
+ super(message);
11
+ this.status = status;
12
+ this.name = 'WebSocketError';
13
+ }
14
+ }
15
+
6
16
  export class WebSocketService {
7
17
  private static instance: WebSocketService;
8
18
  private config: Config;
@@ -10,6 +20,7 @@ export class WebSocketService {
10
20
 
11
21
  public status: boolean | undefined = undefined;
12
22
  public status$ = new Subject<boolean | undefined>();
23
+ public error$ = new Subject<{ status: number; message: string }>();
13
24
 
14
25
  private queue: Request[] = [];
15
26
  private promises: {
@@ -99,6 +110,7 @@ export class WebSocketService {
99
110
  const request: Request = { id, name, data };
100
111
  this.promises[id] = { resolve, reject };
101
112
  if (!this.socket || !this.status) {
113
+ console.log('[WS] Queuing request:', request);
102
114
  this.queue.push(request);
103
115
  return;
104
116
  }
@@ -120,7 +132,13 @@ export class WebSocketService {
120
132
  typeof response.data?.status === 'number' &&
121
133
  response.data.status < 0
122
134
  ) {
123
- this.promises[response.id].reject(new Error(response.data.message));
135
+ this.promises[response.id].reject(
136
+ new WebSocketError(response.data.status, response.data.message)
137
+ );
138
+ this.error$.next({
139
+ status: response.data.status,
140
+ message: response.data.message || 'Unknown error',
141
+ });
124
142
  } else {
125
143
  this.promises[response.id].resolve(response.data);
126
144
  }
@@ -1,6 +1,7 @@
1
+ import { WebSocketError, WebSocketService } from './WebSocketService';
2
+ import { useCallback, useState } from 'react';
3
+
1
4
  import { HttpService } from './HttpService';
2
- import { WebSocketService } from './WebSocketService';
3
- import { useCallback } from 'react';
4
5
  import { useLoading } from '../providers';
5
6
 
6
7
  export const useLoadingRequestHandler = <TReq, TRes>(
@@ -42,3 +43,50 @@ export const useHttpRequestHandler = <TReq, TRes>(
42
43
  },
43
44
  [name]
44
45
  );
46
+
47
+ export const useRequestState = <TReq, TRes>(name: string, loading = false) => {
48
+ const [state, setState] = useState<
49
+ 'initial' | 'loading' | 'success' | 'error'
50
+ >('initial');
51
+ const [status, setStatus] = useState<number | undefined>(undefined);
52
+ const [response, setResponse] = useState<TRes | null>(null);
53
+
54
+ const handleSendRequest = useWebSocketRequestHandler<TReq, TRes>(name);
55
+ const handleSendLoadingRequest = useLoadingRequestHandler<TReq, TRes>(name);
56
+
57
+ const sendRequest = useCallback(
58
+ async (data: TReq) => {
59
+ setState('loading');
60
+ try {
61
+ const res = await (loading
62
+ ? handleSendLoadingRequest
63
+ : handleSendRequest)(data);
64
+ setStatus(0);
65
+ setResponse(res);
66
+ setState('success');
67
+ return res;
68
+ } catch (error) {
69
+ setStatus(error instanceof WebSocketError ? error.status : -1);
70
+ setState('error');
71
+ }
72
+ },
73
+ [handleSendLoadingRequest, handleSendRequest, loading]
74
+ );
75
+
76
+ const reset = useCallback(() => {
77
+ setState('initial');
78
+ setStatus(undefined);
79
+ setResponse(null);
80
+ }, []);
81
+
82
+ return {
83
+ status,
84
+ isInitial: state === 'initial',
85
+ isLoading: state === 'loading',
86
+ isSuccess: state === 'success',
87
+ isError: state === 'error',
88
+ response,
89
+ sendRequest,
90
+ reset,
91
+ };
92
+ };
@@ -1 +1 @@
1
- {"root":["./src/icons.tsx","./src/index.ts","./src/typings.d.ts","./src/components/index.ts","./src/components/auth/loginform.tsx","./src/components/auth/loginpage.tsx","./src/components/auth/passwordrecoveryform.tsx","./src/components/auth/passwordresetform.tsx","./src/components/auth/index.ts","./src/components/auth/styles.ts","./src/components/data/index.ts","./src/components/data/datagrid/datagridcell.tsx","./src/components/data/datagrid/datagridfooter.tsx","./src/components/data/datagrid/datagridheader.tsx","./src/components/data/datagrid/datagridheadercell.tsx","./src/components/data/datagrid/datagridrowtemplate.tsx","./src/components/data/datagrid/constants.ts","./src/components/data/datagrid/index.tsx","./src/components/data/datagrid/styles.ts","./src/components/data/datagrid/types.ts","./src/components/data/datagrid/datagridcolumnsmodal/helpers.ts","./src/components/data/datagrid/datagridcolumnsmodal/hooks.tsx","./src/components/data/datagrid/datagridcolumnsmodal/index.tsx","./src/components/data/datagrid/datagridcolumnsmodal/styles.ts","./src/components/data/datagrid/datagrideditablecell/checkboxeditablecell.tsx","./src/components/data/datagrid/datagrideditablecell/dateeditablecell.tsx","./src/components/data/datagrid/datagrideditablecell/numbereditablecell.tsx","./src/components/data/datagrid/datagrideditablecell/texteditablecell.tsx","./src/components/data/datagrid/datagrideditablecell/index.tsx","./src/components/data/datagrid/datagrideditablecell/styles.ts","./src/components/data/datagrid/datagrideditablecell/types.ts","./src/components/data/datagrid/datagridfiltermenu/filtervaluesscroller.tsx","./src/components/data/datagrid/datagridfiltermenu/hooks.tsx","./src/components/data/datagrid/datagridfiltermenu/index.tsx","./src/components/data/datagrid/datagridfiltermenu/styles.ts","./src/components/data/datagrid/filtermodalcontent/index.tsx","./src/components/data/datagrid/filtermodalcontent/styles.ts","./src/components/data/datagrid/helpers/columns.tsx","./src/components/data/datagrid/helpers/filters.ts","./src/components/data/datagrid/helpers/index.ts","./src/components/data/datagrid/hooks/index.ts","./src/components/data/datagrid/hooks/usedatagrid.tsx","./src/components/data/datagrid/hooks/usedatagridchangedrows.ts","./src/components/data/datagrid/hooks/usedatagridcopy.ts","./src/components/data/datagrid/hooks/usedatagridsettings.ts","./src/components/data/sqlrequestdatagrid/sqlrequestforeignlisteditablecell.tsx","./src/components/data/sqlrequestdatagrid/index.tsx","./src/components/data/sqlrequestdatagrid/styles.ts","./src/components/data/sqlrequestdatagrid/types.ts","./src/components/data/sqlrequestdatagrid/helpers/columns.tsx","./src/components/data/sqlrequestdatagrid/helpers/index.ts","./src/components/data/sqlrequestdatagrid/helpers/sqlrequests.ts","./src/components/data/sqlrequestforeignlist/index.tsx","./src/components/data/sqlrequestforeignlist/styles.ts","./src/components/data/sqlrequestforeignlist/types.ts","./src/components/data/sqlrequestgrid/index.tsx","./src/components/data/sqlrequestgrid/styles.ts","./src/components/data/sqlrequestgrid/types.ts","./src/components/data/sqlrequestgrid/filters/filterssidebar.tsx","./src/components/data/sqlrequestgrid/filters/styles.ts","./src/components/data/sqlrequestgrid/helpers/index.ts","./src/components/data/sqlrequestgrid/helpers/sqlrequests.ts","./src/components/data/virtualscroller/hooks.ts","./src/components/data/virtualscroller/index.tsx","./src/components/data/virtualscroller/styles.ts","./src/components/data/virtualscroller/types.ts","./src/components/forms/autotextarea.tsx","./src/components/forms/button.tsx","./src/components/forms/iconbutton.tsx","./src/components/forms/indeterminatecheckbox.tsx","./src/components/forms/numberinput.tsx","./src/components/forms/select.tsx","./src/components/forms/verticallabel.tsx","./src/components/forms/index.ts","./src/components/forms/styles.ts","./src/components/forms/form/checkbox.tsx","./src/components/forms/form/formgroup.tsx","./src/components/forms/form/input.tsx","./src/components/forms/form/row.tsx","./src/components/forms/form/select.tsx","./src/components/forms/form/textarea.tsx","./src/components/forms/form/index.tsx","./src/components/forms/form/styles.ts","./src/components/layout/columns.ts","./src/components/layout/index.ts","./src/components/layout/dropdown/index.tsx","./src/components/layout/dropdown/styles.ts","./src/components/layout/grid/index.tsx","./src/components/layout/grid/styles.ts","./src/components/layout/loading/index.tsx","./src/components/layout/loading/styles.ts","./src/components/layout/masonry/index.tsx","./src/components/layout/masonry/styles.ts","./src/components/layout/modal/index.tsx","./src/components/layout/modal/styles.ts","./src/components/search/highlightedtext.tsx","./src/components/search/quicksearchbar.tsx","./src/components/search/quicksearchresults.tsx","./src/components/search/index.ts","./src/components/search/styles.ts","./src/components/search/types.ts","./src/components/ui/ellipsis.tsx","./src/components/ui/label.tsx","./src/components/ui/index.ts","./src/components/ui/avatar/index.tsx","./src/components/ui/avatar/styles.ts","./src/components/ui/card/index.tsx","./src/components/ui/card/styles.ts","./src/components/ui/contextmenu/index.tsx","./src/components/ui/contextmenu/styles.ts","./src/components/ui/message/index.tsx","./src/components/ui/message/styles.ts","./src/config/index.ts","./src/helpers/dates.ts","./src/helpers/getscrollbarsize.ts","./src/helpers/index.ts","./src/helpers/numbers.ts","./src/helpers/responsive.ts","./src/helpers/text.ts","./src/hooks/index.ts","./src/hooks/usecontainermediaquery.ts","./src/hooks/useelementsize.ts","./src/hooks/usemediaquery.ts","./src/hooks/usemediaqueryforwidth.ts","./src/hooks/usemutablestate.ts","./src/hooks/useshowarchived.ts","./src/hooks/usewindowsize.ts","./src/providers/hooks.ts","./src/providers/index.ts","./src/providers/authenticationprovider/helpers.ts","./src/providers/authenticationprovider/index.tsx","./src/providers/loadingprovider/index.tsx","./src/providers/portalsprovider/index.tsx","./src/providers/portalsprovider/styles.ts","./src/providers/settingsprovider/index.tsx","./src/providers/themeprovider/themeprovider.ts","./src/providers/themeprovider/defaulttheme.ts","./src/providers/themeprovider/helpers.ts","./src/providers/themeprovider/index.ts","./src/providers/themeprovider/types.ts","./src/providers/trackingprovider/hooks.ts","./src/providers/trackingprovider/index.tsx","./src/providers/uiproviders/index.tsx","./src/providers/uiproviders/styles.ts","./src/services/httpservice.ts","./src/services/websocketservice.ts","./src/services/advancedrequests.ts","./src/services/base.ts","./src/services/globalsearch.ts","./src/services/hooks.ts","./src/services/index.ts","./src/services/smartqueries.ts","./src/services/smartrequests.ts","./src/services/sqlrequests.ts","./src/services/updatesqlrequests.ts","./src/services/requests/auth.ts","./src/services/requests/generic.ts","./src/services/requests/tracking.ts","./src/services/requests/userprofiles.ts","./src/services/requests/users.ts","./src/services/types/auth.ts","./src/services/types/base.ts","./src/services/types/generic.ts","./src/services/types/tracking.ts","./src/services/types/userprofiles.ts","./src/services/types/users.ts"],"version":"5.6.2"}
1
+ {"root":["./src/icons.tsx","./src/index.ts","./src/typings.d.ts","./src/components/index.ts","./src/components/auth/loginform.tsx","./src/components/auth/loginpage.tsx","./src/components/auth/passwordrecoveryform.tsx","./src/components/auth/passwordresetform.tsx","./src/components/auth/index.ts","./src/components/auth/styles.ts","./src/components/data/index.ts","./src/components/data/advancedrequestdatagrid/index.tsx","./src/components/data/advancedrequestdatagrid/types.ts","./src/components/data/advancedrequestdatagrid/helpers/advancedrequests.ts","./src/components/data/advancedrequestdatagrid/helpers/columns.tsx","./src/components/data/advancedrequestdatagrid/helpers/index.ts","./src/components/data/datagrid/datagridcell.tsx","./src/components/data/datagrid/datagrideditablecell.tsx","./src/components/data/datagrid/datagridfooter.tsx","./src/components/data/datagrid/datagridheader.tsx","./src/components/data/datagrid/datagridheadercell.tsx","./src/components/data/datagrid/datagridrowtemplate.tsx","./src/components/data/datagrid/index.tsx","./src/components/data/datagrid/styles.ts","./src/components/data/datagrid/types.ts","./src/components/data/datagrid/datagridcolumnsmodal/helpers.ts","./src/components/data/datagrid/datagridcolumnsmodal/hooks.tsx","./src/components/data/datagrid/datagridcolumnsmodal/index.tsx","./src/components/data/datagrid/datagridcolumnsmodal/styles.ts","./src/components/data/datagrid/datagridfiltermenu/filtervaluesscroller.tsx","./src/components/data/datagrid/datagridfiltermenu/hooks.tsx","./src/components/data/datagrid/datagridfiltermenu/index.tsx","./src/components/data/datagrid/datagridfiltermenu/styles.ts","./src/components/data/datagrid/filtermodalcontent/index.tsx","./src/components/data/datagrid/filtermodalcontent/styles.ts","./src/components/data/datagrid/helpers/columns.tsx","./src/components/data/datagrid/helpers/filters.ts","./src/components/data/datagrid/helpers/index.ts","./src/components/data/datagrid/hooks/index.ts","./src/components/data/datagrid/hooks/usedatagrid.tsx","./src/components/data/datagrid/hooks/usedatagridcopy.ts","./src/components/data/datagrid/hooks/usedatagridsettings.ts","./src/components/data/sqlrequestdatagrid/index.tsx","./src/components/data/sqlrequestdatagrid/types.ts","./src/components/data/sqlrequestdatagrid/helpers/columns.tsx","./src/components/data/sqlrequestdatagrid/helpers/index.ts","./src/components/data/sqlrequestdatagrid/helpers/sqlrequests.ts","./src/components/data/sqlrequestgrid/index.tsx","./src/components/data/sqlrequestgrid/styles.ts","./src/components/data/sqlrequestgrid/types.ts","./src/components/data/sqlrequestgrid/helpers/index.ts","./src/components/data/sqlrequestgrid/helpers/sqlrequests.ts","./src/components/data/virtualscroller/hooks.ts","./src/components/data/virtualscroller/index.tsx","./src/components/data/virtualscroller/styles.ts","./src/components/data/virtualscroller/types.ts","./src/components/forms/button.tsx","./src/components/forms/iconbutton.tsx","./src/components/forms/indeterminatecheckbox.tsx","./src/components/forms/select.tsx","./src/components/forms/verticallabel.tsx","./src/components/forms/index.ts","./src/components/forms/styles.ts","./src/components/layout/index.ts","./src/components/layout/dropdown/index.tsx","./src/components/layout/dropdown/styles.ts","./src/components/layout/loading/index.tsx","./src/components/layout/loading/styles.ts","./src/components/layout/modal/index.tsx","./src/components/layout/modal/styles.ts","./src/components/search/highlightedtext.tsx","./src/components/search/quicksearchbar.tsx","./src/components/search/quicksearchresults.tsx","./src/components/search/index.ts","./src/components/search/styles.ts","./src/components/search/types.ts","./src/components/ui/index.ts","./src/components/ui/card/index.tsx","./src/components/ui/card/styles.ts","./src/components/ui/contextmenu/index.tsx","./src/components/ui/contextmenu/styles.ts","./src/components/ui/message/index.tsx","./src/components/ui/message/styles.ts","./src/config/index.ts","./src/helpers/dates.ts","./src/helpers/getscrollbarsize.ts","./src/helpers/index.ts","./src/helpers/numbers.ts","./src/helpers/text.ts","./src/hooks/index.ts","./src/hooks/useelementsize.ts","./src/hooks/usewindowsize.ts","./src/providers/hooks.ts","./src/providers/index.ts","./src/providers/authenticationprovider/helpers.ts","./src/providers/authenticationprovider/index.tsx","./src/providers/loadingprovider/index.tsx","./src/providers/portalsprovider/index.tsx","./src/providers/portalsprovider/styles.ts","./src/providers/settingsprovider/index.tsx","./src/providers/themeprovider/themeprovider.ts","./src/providers/themeprovider/defaulttheme.ts","./src/providers/themeprovider/index.ts","./src/providers/themeprovider/types.ts","./src/providers/uiproviders/index.tsx","./src/providers/uiproviders/styles.ts","./src/services/httpservice.ts","./src/services/websocketservice.ts","./src/services/advancedrequests.ts","./src/services/base.ts","./src/services/globalsearch.ts","./src/services/hooks.ts","./src/services/index.ts","./src/services/sqlrequests.ts","./src/services/requests/auth.ts","./src/services/requests/userprofiles.ts","./src/services/requests/users.ts","./src/services/types/auth.ts","./src/services/types/base.ts","./src/services/types/userprofiles.ts","./src/services/types/users.ts"],"version":"5.6.2"}
@@ -1,2 +0,0 @@
1
- import { DataGridEditableCellProps } from './types';
2
- export declare const CheckboxEditableCell: <R>(props: DataGridEditableCellProps<R, boolean> & import("react").RefAttributes<HTMLInputElement>) => import("react").JSX.Element | null;
@@ -1,23 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CheckboxEditableCell = void 0;
4
- var jsx_runtime_1 = require("react/jsx-runtime");
5
- var react_1 = require("react");
6
- var CheckboxEditableCellInner = function (_a, ref) {
7
- var value = _a.value, onChange = _a.onChange, onClose = _a.onClose;
8
- var onBlur = (0, react_1.useCallback)(function () {
9
- onClose(true);
10
- }, [onClose]);
11
- var onKeyDown = (0, react_1.useCallback)(function (e) {
12
- if (e.key === 'Enter') {
13
- e.preventDefault();
14
- onClose(true);
15
- }
16
- else if (e.key === 'Escape') {
17
- e.preventDefault();
18
- onClose(false);
19
- }
20
- }, [onClose]);
21
- return ((0, jsx_runtime_1.jsx)("input", { ref: ref, type: "checkbox", checked: value, onChange: function (e) { return onChange(e.target.checked); }, onBlur: onBlur, onKeyDown: onKeyDown }));
22
- };
23
- exports.CheckboxEditableCell = (0, react_1.forwardRef)(CheckboxEditableCellInner);
@@ -1,2 +0,0 @@
1
- import { DataGridEditableCellProps } from './types';
2
- export declare const DateEditableCell: <R>(props: DataGridEditableCellProps<R, string> & import("react").RefAttributes<HTMLInputElement>) => import("react").JSX.Element | null;
@@ -1,27 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.DateEditableCell = void 0;
7
- var jsx_runtime_1 = require("react/jsx-runtime");
8
- var react_1 = require("react");
9
- var moment_1 = __importDefault(require("moment"));
10
- var DateEditableCellInner = function (_a, ref) {
11
- var value = _a.value, onChange = _a.onChange, onClose = _a.onClose;
12
- var onBlur = (0, react_1.useCallback)(function () {
13
- onClose(true);
14
- }, [onClose]);
15
- var onKeyDown = (0, react_1.useCallback)(function (e) {
16
- if (e.key === 'Enter') {
17
- e.preventDefault();
18
- onClose(true);
19
- }
20
- else if (e.key === 'Escape') {
21
- e.preventDefault();
22
- onClose(false);
23
- }
24
- }, [onClose]);
25
- return ((0, jsx_runtime_1.jsx)("input", { ref: ref, type: "date", value: (0, moment_1.default)(value).format('YYYY-MM-DD'), onChange: function (e) { return onChange(e.target.value); }, onBlur: onBlur, onKeyDown: onKeyDown }));
26
- };
27
- exports.DateEditableCell = (0, react_1.forwardRef)(DateEditableCellInner);
@@ -1,5 +0,0 @@
1
- import { DataGridEditableCellProps } from './types';
2
- export declare const NumberEditableCell: <R>(props: DataGridEditableCellProps<R, number> & {
3
- decimals?: number;
4
- currency?: string | ((row: R) => string);
5
- } & import("react").RefAttributes<HTMLElement>) => import("react").JSX.Element | null;
@@ -1,32 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.NumberEditableCell = void 0;
4
- var jsx_runtime_1 = require("react/jsx-runtime");
5
- var react_1 = require("react");
6
- var numbers_1 = require("../../../../helpers/numbers");
7
- var react_number_format_1 = require("react-number-format");
8
- var NumberEditableCellInner = function (_a, ref) {
9
- var _b = _a.decimals, decimals = _b === void 0 ? 0 : _b, currency = _a.currency, row = _a.row, value = _a.value, onChange = _a.onChange, onClose = _a.onClose;
10
- var currencyName = typeof currency === 'function' ? currency(row) : currency;
11
- var _c = currencyName
12
- ? (0, numbers_1.getCurrencySymbol)(currencyName)
13
- : [undefined, undefined], prefix = _c[0], suffix = _c[1];
14
- var onBlur = (0, react_1.useCallback)(function () {
15
- onClose(true);
16
- }, [onClose]);
17
- var onKeyDown = (0, react_1.useCallback)(function (e) {
18
- if (e.key === 'Enter') {
19
- e.preventDefault();
20
- onClose(true);
21
- }
22
- else if (e.key === 'Escape') {
23
- e.preventDefault();
24
- onClose(false);
25
- }
26
- }, [onClose]);
27
- return ((0, jsx_runtime_1.jsx)(react_number_format_1.NumericFormat, { getInputRef: ref, value: Number(value), onChange: function (e) {
28
- console.log('e:', e);
29
- onChange((0, numbers_1.parseNumber)(e.target.value));
30
- }, onBlur: onBlur, onKeyDown: onKeyDown, decimalSeparator: numbers_1.decimalSeparator, decimalScale: decimals, fixedDecimalScale: !!decimals, prefix: prefix ? prefix + ' ' : undefined, suffix: suffix ? ' ' + suffix : undefined }));
31
- };
32
- exports.NumberEditableCell = (0, react_1.forwardRef)(NumberEditableCellInner);
@@ -1,2 +0,0 @@
1
- import { DataGridEditableCellProps } from './types';
2
- export declare const TextEditableCell: <R>(props: DataGridEditableCellProps<R, string> & import("react").RefAttributes<HTMLInputElement>) => import("react").JSX.Element | null;
@@ -1,23 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.TextEditableCell = void 0;
4
- var jsx_runtime_1 = require("react/jsx-runtime");
5
- var react_1 = require("react");
6
- var TextEditableCellInner = function (_a, ref) {
7
- var value = _a.value, onChange = _a.onChange, onClose = _a.onClose;
8
- var onBlur = (0, react_1.useCallback)(function () {
9
- onClose(true);
10
- }, [onClose]);
11
- var onKeyDown = (0, react_1.useCallback)(function (e) {
12
- if (e.key === 'Enter') {
13
- e.preventDefault();
14
- onClose(true);
15
- }
16
- else if (e.key === 'Escape') {
17
- e.preventDefault();
18
- onClose(false);
19
- }
20
- }, [onClose]);
21
- return ((0, jsx_runtime_1.jsx)("input", { ref: ref, type: "text", value: String(value), onChange: function (e) { return onChange(e.target.value); }, onBlur: onBlur, onKeyDown: onKeyDown }));
22
- };
23
- exports.TextEditableCell = (0, react_1.forwardRef)(TextEditableCellInner);
@@ -1,2 +0,0 @@
1
- import { EditableDataGridCellProps } from '../types';
2
- export declare const DataGridEditableCell: <R, T>({ row, columnKey, column, context, }: EditableDataGridCellProps<R, T>) => import("react/jsx-runtime").JSX.Element;
@@ -1,91 +0,0 @@
1
- "use strict";
2
- var __assign = (this && this.__assign) || function () {
3
- __assign = Object.assign || function(t) {
4
- for (var s, i = 1, n = arguments.length; i < n; i++) {
5
- s = arguments[i];
6
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
- t[p] = s[p];
8
- }
9
- return t;
10
- };
11
- return __assign.apply(this, arguments);
12
- };
13
- var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
14
- if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
15
- if (ar || !(i in from)) {
16
- if (!ar) ar = Array.prototype.slice.call(from, 0, i);
17
- ar[i] = from[i];
18
- }
19
- }
20
- return to.concat(ar || Array.prototype.slice.call(from));
21
- };
22
- Object.defineProperty(exports, "__esModule", { value: true });
23
- exports.DataGridEditableCell = void 0;
24
- var jsx_runtime_1 = require("react/jsx-runtime");
25
- var react_1 = require("react");
26
- var styles_1 = require("./styles");
27
- var hooks_1 = require("../hooks");
28
- var DataGridEditableCell = function (_a) {
29
- var _b;
30
- var row = _a.row, columnKey = _a.columnKey, column = _a.column, context = _a.context;
31
- var _c = (0, hooks_1.useDataGridContext)(context), setEditingCell = _c.setEditingCell, setRows = _c.setRows, editRow = _c.editRow, rows = _c.rows, rowKeyGetter = _c.rowKeyGetter;
32
- var initialValue = (0, react_1.useMemo)(function () { var _a; return (_a = column.getter(row)) !== null && _a !== void 0 ? _a : ''; }, [column, row]);
33
- var _d = (0, react_1.useState)(initialValue), value = _d[0], setValue = _d[1];
34
- var inputRef = (0, react_1.useRef)(null);
35
- var rowKey = rowKeyGetter(row);
36
- var defaultItemToPartialRow = (0, react_1.useCallback)(function (row, newValue) {
37
- var _a;
38
- return (_a = {}, _a[columnKey] = newValue, _a);
39
- }, [columnKey]);
40
- var partialRowGetter = (_b = column.itemToPartialRow) !== null && _b !== void 0 ? _b : defaultItemToPartialRow;
41
- var save = (0, react_1.useCallback)(function () {
42
- var rowIndex = rows.findIndex(function (r) { return rowKeyGetter(r) === rowKeyGetter(row); });
43
- // If row is found
44
- if (rowIndex >= 0) {
45
- // Update the row with the new value
46
- var partialRow = partialRowGetter(row, value);
47
- var newRow_1 = __assign(__assign({}, row), partialRow);
48
- // Update the edited rows state
49
- editRow(rowKey, partialRow);
50
- // Update the rows
51
- setRows === null || setRows === void 0 ? void 0 : setRows(function (oldRows) {
52
- var newRows = __spreadArray([], oldRows, true);
53
- newRows[rowIndex] = newRow_1;
54
- return newRows;
55
- });
56
- }
57
- }, [
58
- editRow,
59
- partialRowGetter,
60
- row,
61
- rowKey,
62
- rowKeyGetter,
63
- rows,
64
- setRows,
65
- value,
66
- ]);
67
- var onClose = (0, react_1.useCallback)(function (shouldSave, nextEditingCell) {
68
- if (nextEditingCell === void 0) { nextEditingCell = [-1, -1]; }
69
- if (shouldSave && value !== initialValue) {
70
- save();
71
- }
72
- setEditingCell(nextEditingCell);
73
- }, [initialValue, save, setEditingCell, value]);
74
- (0, react_1.useEffect)(function () {
75
- if (inputRef.current) {
76
- inputRef.current.focus();
77
- if (inputRef.current instanceof HTMLInputElement) {
78
- inputRef.current.select();
79
- }
80
- }
81
- }, [inputRef]);
82
- var input = (0, react_1.useMemo)(function () {
83
- if (!column.editable || !column.editComponent) {
84
- return null;
85
- }
86
- var EditComponent = column.editComponent;
87
- return ((0, jsx_runtime_1.jsx)(EditComponent, { row: row, ref: inputRef, value: value, onChange: setValue, onClose: onClose, context: context }));
88
- }, [column.editComponent, column.editable, context, onClose, row, value]);
89
- return ((0, jsx_runtime_1.jsx)(styles_1.EditableCellContainer, { "$textAlign": column.textAlign, children: input }, columnKey));
90
- };
91
- exports.DataGridEditableCell = DataGridEditableCell;
@@ -1,3 +0,0 @@
1
- export declare const EditableCellContainer: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Substitute<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {
2
- $textAlign?: "left" | "right" | "center";
3
- }>> & string;
@@ -1,17 +0,0 @@
1
- "use strict";
2
- var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
3
- if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
4
- return cooked;
5
- };
6
- var __importDefault = (this && this.__importDefault) || function (mod) {
7
- return (mod && mod.__esModule) ? mod : { "default": mod };
8
- };
9
- Object.defineProperty(exports, "__esModule", { value: true });
10
- exports.EditableCellContainer = void 0;
11
- var styles_1 = require("../styles");
12
- var styled_components_1 = __importDefault(require("styled-components"));
13
- exports.EditableCellContainer = styled_components_1.default.div(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n position: relative;\n ", "\n padding: 1px 4px 0px 4px;\n overflow: visible;\n background-color: var(--color-neutral-0);\n\n & input,\n & select {\n position: absolute;\n inset: 0;\n z-index: 10;\n\n font-size: inherit;\n font-family: inherit;\n font-weight: inherit;\n text-align: ", ";\n\n border: 1px solid var(--color-neutral-300);\n padding: var(--space-1) var(--space-2);\n\n color: var(--color-neutral-900);\n &::placeholder {\n color: var(--color-neutral-400);\n }\n\n border: none;\n outline: none;\n }\n"], ["\n position: relative;\n ", "\n padding: 1px 4px 0px 4px;\n overflow: visible;\n background-color: var(--color-neutral-0);\n\n & input,\n & select {\n position: absolute;\n inset: 0;\n z-index: 10;\n\n font-size: inherit;\n font-family: inherit;\n font-weight: inherit;\n text-align: ", ";\n\n border: 1px solid var(--color-neutral-300);\n padding: var(--space-1) var(--space-2);\n\n color: var(--color-neutral-900);\n &::placeholder {\n color: var(--color-neutral-400);\n }\n\n border: none;\n outline: none;\n }\n"])), styles_1.dataGridCellCss, function (_a) {
14
- var _b = _a.$textAlign, $textAlign = _b === void 0 ? 'left' : _b;
15
- return $textAlign;
16
- });
17
- var templateObject_1;
@@ -1,11 +0,0 @@
1
- import { DataGridContext } from '../types';
2
- import { Ref } from 'react';
3
- export type DataGridEditableCellProps<R, T> = {
4
- ref?: Ref<any>;
5
- row: R;
6
- value: T;
7
- onChange: (value: T) => void;
8
- onClose: (save: boolean) => void;
9
- context: DataGridContext<R>;
10
- };
11
- export type DataGridEditableCellFC<R, T = any> = (props: DataGridEditableCellProps<R, T>, ref: Ref<any>) => JSX.Element | null;
@@ -1,6 +0,0 @@
1
- export declare const TOOLBAR_HEIGHT = 40;
2
- export declare const DEFAULT_HEADER_ROW_HEIGHT = 40;
3
- export declare const DEFAULT_FOOTER_ROW_HEIGHT = 40;
4
- export declare const DEFAULT_ROW_HEIGHT = 32;
5
- export declare const SELECTION_CELL_WIDTH = "var(--space-8)";
6
- export declare const DEFAULT_COLUMN_WIDTH = 150;
@@ -1,9 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DEFAULT_COLUMN_WIDTH = exports.SELECTION_CELL_WIDTH = exports.DEFAULT_ROW_HEIGHT = exports.DEFAULT_FOOTER_ROW_HEIGHT = exports.DEFAULT_HEADER_ROW_HEIGHT = exports.TOOLBAR_HEIGHT = void 0;
4
- exports.TOOLBAR_HEIGHT = 40;
5
- exports.DEFAULT_HEADER_ROW_HEIGHT = 40;
6
- exports.DEFAULT_FOOTER_ROW_HEIGHT = 40;
7
- exports.DEFAULT_ROW_HEIGHT = 32;
8
- exports.SELECTION_CELL_WIDTH = 'var(--space-8)';
9
- exports.DEFAULT_COLUMN_WIDTH = 150;