@addev-be/ui 0.2.5 → 0.2.7

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 (166) hide show
  1. package/assets/icons/arrow-down-1-9.svg +1 -0
  2. package/assets/icons/arrow-down-a-z.svg +1 -1
  3. package/assets/icons/arrow-down-big-small.svg +1 -0
  4. package/assets/icons/arrow-up-9-1.svg +1 -0
  5. package/assets/icons/arrow-up-big-small.svg +1 -0
  6. package/assets/icons/arrow-up-z-a.svg +1 -1
  7. package/assets/icons/check.svg +1 -1
  8. package/assets/icons/chevron-down.svg +1 -0
  9. package/assets/icons/down.svg +1 -1
  10. package/assets/icons/ellipsis.svg +1 -0
  11. package/assets/icons/filter-full.svg +1 -1
  12. package/assets/icons/filter.svg +1 -1
  13. package/assets/icons/hashtag.svg +1 -1
  14. package/assets/icons/image-slash.svg +1 -1
  15. package/assets/icons/left.svg +1 -1
  16. package/assets/icons/magnifier.svg +1 -1
  17. package/assets/icons/phone.svg +1 -1
  18. package/assets/icons/right.svg +1 -1
  19. package/assets/icons/sigma.svg +1 -0
  20. package/assets/icons/spinner-third.svg +1 -1
  21. package/assets/icons/table-columns.svg +1 -1
  22. package/assets/icons/table-footer-slash.svg +5 -0
  23. package/assets/icons/table-footer.svg +4 -0
  24. package/assets/icons/table.svg +1 -0
  25. package/assets/icons/tally.svg +1 -0
  26. package/assets/icons/up.svg +1 -1
  27. package/assets/icons/user-tie.svg +1 -1
  28. package/assets/icons/x-bar.svg +4 -0
  29. package/dist/Icons.d.ts +13 -1
  30. package/dist/Icons.js +25 -1
  31. package/dist/components/data/AdvancedRequestDataGrid/index.js +3 -3
  32. package/dist/components/data/DataGrid/AdvancedRequestDataGrid.d.ts +1 -2
  33. package/dist/components/data/DataGrid/AdvancedRequestDataGrid.js +3 -5
  34. package/dist/components/data/DataGrid/DataGridCell.d.ts +1 -1
  35. package/dist/components/data/DataGrid/DataGridCell.js +5 -5
  36. package/dist/components/data/DataGrid/DataGridColumnsModal/hooks.js +2 -1
  37. package/dist/components/data/DataGrid/DataGridEditableCell.js +2 -7
  38. package/dist/components/data/DataGrid/DataGridFilterMenu/index.js +90 -10
  39. package/dist/components/data/DataGrid/DataGridFilterMenu/styles.d.ts +3 -9
  40. package/dist/components/data/DataGrid/DataGridFilterMenu/styles.js +10 -37
  41. package/dist/components/data/DataGrid/DataGridFooter.d.ts +1 -1
  42. package/dist/components/data/DataGrid/DataGridFooter.js +35 -22
  43. package/dist/components/data/DataGrid/DataGridHeader.js +1 -3
  44. package/dist/components/data/DataGrid/DataGridHeaderCell.js +8 -23
  45. package/dist/components/data/DataGrid/FilterModalContent/index.d.ts +5 -5
  46. package/dist/components/data/DataGrid/FilterModalContent/index.js +11 -9
  47. package/dist/components/data/DataGrid/FilterValuesScroller.d.ts +8 -7
  48. package/dist/components/data/DataGrid/FilterValuesScroller.js +5 -6
  49. package/dist/components/data/DataGrid/helpers/columns.d.ts +1 -1
  50. package/dist/components/data/DataGrid/helpers/columns.js +72 -20
  51. package/dist/components/data/DataGrid/helpers/filters.d.ts +4 -3
  52. package/dist/components/data/DataGrid/helpers/filters.js +13 -5
  53. package/dist/components/data/DataGrid/hooks/useDataGrid.d.ts +1 -1
  54. package/dist/components/data/DataGrid/hooks/useDataGrid.js +60 -30
  55. package/dist/components/data/DataGrid/hooks/useDataGridCopy.d.ts +2 -2
  56. package/dist/components/data/DataGrid/hooks/useDataGridCopy.js +41 -40
  57. package/dist/components/data/DataGrid/hooks/useDataGridSettings.js +0 -1
  58. package/dist/components/data/DataGrid/index.d.ts +4 -2
  59. package/dist/components/data/DataGrid/index.js +38 -17
  60. package/dist/components/data/DataGrid/styles.d.ts +12 -5
  61. package/dist/components/data/DataGrid/styles.js +31 -18
  62. package/dist/components/data/DataGrid/types.d.ts +28 -16
  63. package/dist/components/data/SqlRequestDataGrid/helpers/columns.d.ts +1 -1
  64. package/dist/components/data/SqlRequestDataGrid/helpers/columns.js +30 -19
  65. package/dist/components/data/SqlRequestDataGrid/index.js +125 -37
  66. package/dist/components/data/SqlRequestDataGrid/types.d.ts +1 -0
  67. package/dist/components/data/index.d.ts +2 -0
  68. package/dist/components/data/index.js +2 -0
  69. package/dist/components/ui/ContextMenu/index.d.ts +11 -0
  70. package/dist/components/ui/ContextMenu/index.js +58 -0
  71. package/dist/components/ui/ContextMenu/styles.d.ts +18 -0
  72. package/dist/components/ui/ContextMenu/styles.js +56 -0
  73. package/dist/helpers/dates.d.ts +2 -0
  74. package/dist/helpers/dates.js +13 -0
  75. package/dist/services/advancedRequests.d.ts +1 -1
  76. package/dist/services/sqlRequests.d.ts +9 -4
  77. package/dist/services/sqlRequests.js +1 -0
  78. package/package.json +1 -1
  79. package/src/Icons.tsx +104 -80
  80. package/src/components/data/AdvancedRequestDataGrid/helpers/advancedRequests.ts +93 -93
  81. package/src/components/data/AdvancedRequestDataGrid/helpers/columns.tsx +262 -262
  82. package/src/components/data/AdvancedRequestDataGrid/helpers/index.ts +2 -2
  83. package/src/components/data/AdvancedRequestDataGrid/index.tsx +267 -269
  84. package/src/components/data/AdvancedRequestDataGrid/types.ts +47 -47
  85. package/src/components/data/DataGrid/DataGridCell.tsx +73 -73
  86. package/src/components/data/DataGrid/DataGridColumnsModal/helpers.ts +14 -14
  87. package/src/components/data/DataGrid/DataGridColumnsModal/hooks.tsx +59 -58
  88. package/src/components/data/DataGrid/DataGridColumnsModal/index.tsx +181 -181
  89. package/src/components/data/DataGrid/DataGridColumnsModal/styles.ts +104 -104
  90. package/src/components/data/DataGrid/DataGridEditableCell.tsx +43 -54
  91. package/src/components/data/DataGrid/DataGridFilterMenu/hooks.tsx +75 -75
  92. package/src/components/data/DataGrid/DataGridFilterMenu/index.tsx +364 -190
  93. package/src/components/data/DataGrid/DataGridFilterMenu/styles.ts +49 -100
  94. package/src/components/data/DataGrid/DataGridFooter.tsx +42 -64
  95. package/src/components/data/DataGrid/DataGridHeader.tsx +126 -126
  96. package/src/components/data/DataGrid/DataGridHeaderCell.tsx +132 -167
  97. package/src/components/data/DataGrid/FilterModalContent/index.tsx +124 -125
  98. package/src/components/data/DataGrid/FilterModalContent/styles.ts +22 -22
  99. package/src/components/data/DataGrid/FilterValuesScroller.tsx +133 -131
  100. package/src/components/data/DataGrid/VirtualScroller.tsx +46 -46
  101. package/src/components/data/DataGrid/helpers/columns.tsx +287 -196
  102. package/src/components/data/DataGrid/helpers/filters.ts +220 -207
  103. package/src/components/data/DataGrid/helpers/index.ts +2 -2
  104. package/src/components/data/DataGrid/hooks/index.ts +30 -30
  105. package/src/components/data/DataGrid/hooks/useDataGrid.tsx +305 -264
  106. package/src/components/data/DataGrid/hooks/useDataGridCopy.ts +170 -165
  107. package/src/components/data/DataGrid/hooks/useDataGridSettings.ts +48 -48
  108. package/src/components/data/DataGrid/index.tsx +139 -132
  109. package/src/components/data/DataGrid/styles.ts +347 -326
  110. package/src/components/data/DataGrid/types.ts +260 -240
  111. package/src/components/data/SqlRequestDataGrid/helpers/columns.tsx +259 -224
  112. package/src/components/data/SqlRequestDataGrid/helpers/index.ts +2 -2
  113. package/src/components/data/SqlRequestDataGrid/helpers/sqlRequests.ts +16 -16
  114. package/src/components/data/SqlRequestDataGrid/index.tsx +347 -252
  115. package/src/components/data/SqlRequestDataGrid/types.ts +47 -47
  116. package/src/components/data/index.ts +8 -8
  117. package/src/components/forms/Button.tsx +99 -99
  118. package/src/components/forms/IconButton.tsx +56 -56
  119. package/src/components/forms/IndeterminateCheckbox.tsx +46 -46
  120. package/src/components/forms/Select.tsx +40 -40
  121. package/src/components/forms/index.ts +5 -5
  122. package/src/components/forms/styles.ts +20 -20
  123. package/src/components/index.ts +3 -3
  124. package/src/components/layout/Dropdown/index.tsx +79 -79
  125. package/src/components/layout/Dropdown/styles.ts +44 -44
  126. package/src/components/layout/Loading/index.tsx +29 -29
  127. package/src/components/layout/Loading/styles.ts +29 -29
  128. package/src/components/layout/Modal/index.tsx +51 -51
  129. package/src/components/layout/Modal/styles.ts +110 -110
  130. package/src/components/layout/index.ts +3 -3
  131. package/src/components/ui/ContextMenu/index.tsx +73 -0
  132. package/src/components/ui/ContextMenu/styles.ts +115 -0
  133. package/src/config/index.ts +14 -14
  134. package/src/helpers/dates.ts +9 -9
  135. package/src/helpers/getScrollbarSize.ts +14 -14
  136. package/src/helpers/numbers.ts +20 -20
  137. package/src/hooks/index.ts +2 -2
  138. package/src/hooks/useElementSize.ts +24 -24
  139. package/src/hooks/useWindowSize.ts +20 -20
  140. package/src/index.ts +7 -7
  141. package/src/providers/PortalsProvider/index.tsx +54 -54
  142. package/src/providers/PortalsProvider/styles.ts +27 -27
  143. package/src/providers/SettingsProvider/index.tsx +70 -70
  144. package/src/providers/ThemeProvider/ThemeProvider.ts +55 -55
  145. package/src/providers/ThemeProvider/defaultTheme.ts +444 -444
  146. package/src/providers/ThemeProvider/index.ts +3 -3
  147. package/src/providers/ThemeProvider/types.ts +123 -123
  148. package/src/providers/UiProviders/index.tsx +65 -65
  149. package/src/providers/UiProviders/styles.ts +10 -10
  150. package/src/providers/hooks.ts +8 -8
  151. package/src/providers/index.ts +5 -5
  152. package/src/services/HttpService.ts +80 -80
  153. package/src/services/WebSocketService.ts +147 -147
  154. package/src/services/advancedRequests.ts +101 -101
  155. package/src/services/base.ts +31 -31
  156. package/src/services/hooks.ts +23 -23
  157. package/src/services/index.ts +2 -2
  158. package/src/services/sqlRequests.ts +110 -99
  159. package/src/styles/animations.scss +30 -30
  160. package/src/styles/index.scss +42 -42
  161. package/src/typings.d.ts +6 -6
  162. package/tsconfig.tsbuildinfo +1 -1
  163. package/dist/components/data/DataGrid/helpers.d.ts +0 -28
  164. package/dist/components/data/DataGrid/helpers.js +0 -436
  165. package/dist/config/types.d.ts +0 -11
  166. package/dist/config/types.js +0 -2
@@ -1,147 +1,147 @@
1
- import { Config } from '../config';
2
- import { Request } from './base';
3
- import { v4 } from 'uuid';
4
-
5
- export class WebSocketService {
6
- private static instance: WebSocketService;
7
- private config: Config;
8
- private socket: WebSocket | null = null;
9
- public status: boolean | undefined = false;
10
- private listeners: ((status: boolean | undefined) => void)[] = [];
11
- private queue: Request[] = [];
12
- private promises: {
13
- [id: string]: {
14
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
15
- resolve: (value: any) => void;
16
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
17
- reject: (reason?: any) => void;
18
- };
19
- } = {};
20
-
21
- public onOpen?: () => void = () => {};
22
- public onClose?: () => void = () => {};
23
- public onMessage?: (message: string) => void = () => {};
24
- public onError?: (error: unknown) => void = () => {};
25
-
26
- constructor(config: Config) {
27
- WebSocketService.instance = this;
28
- this.config = config;
29
- }
30
-
31
- public static getInstance() {
32
- return WebSocketService.instance;
33
- }
34
-
35
- private resetConnection() {
36
- this.setStatus(undefined);
37
- this.socket = new WebSocket(this.config.webSocketUrl);
38
-
39
- this.socket.onopen = () => {
40
- console.log('[WS] Connected');
41
- const interval = setInterval(() => {
42
- if (this.socket && this.socket.readyState === 1) {
43
- clearInterval(interval);
44
- this.setStatus(true);
45
- this.onOpen?.();
46
- }
47
- }, 100);
48
- };
49
-
50
- this.socket.onclose = () => {
51
- console.log('[WS] Disconnected');
52
- setTimeout(() => this.connect(), this.status === true ? 500 : 5000);
53
- this.onClose?.();
54
- this.setStatus(false);
55
- };
56
-
57
- this.socket.onmessage = (event) => {
58
- this.onMessage?.(event.data);
59
- this.parseMessage(event.data);
60
- };
61
-
62
- this.socket.onerror = (error) => {
63
- this.onError?.(error);
64
- console.error('[WS] Error:', error);
65
- };
66
- }
67
-
68
- public connect(force = false) {
69
- if (this.status === false || force) {
70
- this.resetConnection();
71
- }
72
- }
73
-
74
- public subscribe(listener: (status: boolean | undefined) => void) {
75
- this.listeners.push(listener);
76
- listener(this.status);
77
- return () => this.listeners.splice(this.listeners.indexOf(listener), 1);
78
- }
79
-
80
- public unsubscribe(listener: (status: boolean | undefined) => void) {
81
- this.listeners.splice(this.listeners.indexOf(listener), 1);
82
- }
83
-
84
- private setStatus(status: boolean | undefined) {
85
- const previousStatus = this.status;
86
- this.status = status;
87
- this.listeners.forEach((listener) => listener(status));
88
- if (this.socket && !previousStatus && status) {
89
- this.sendQueue();
90
- }
91
- }
92
-
93
- private sendQueue() {
94
- if (this.socket && this.status) {
95
- let request: Request | undefined;
96
- while ((request = this.queue.shift())) {
97
- console.log('[WS] Sending queued request:', request);
98
- this.socket?.send(JSON.stringify(request));
99
- }
100
- this.queue.forEach((request) =>
101
- this.socket?.send(JSON.stringify(request))
102
- );
103
- }
104
- }
105
-
106
- public sendRequest<TReq, TRes>(name: string, data: TReq) {
107
- const id = v4();
108
- const promise = new Promise<TRes>((resolve, reject) => {
109
- const request: Request = { id, name, data };
110
- this.promises[id] = { resolve, reject };
111
- if (!this.socket || !this.status) {
112
- this.queue.push(request);
113
- return;
114
- }
115
- console.log('[WS] Sending request:', request);
116
- this.socket?.send(JSON.stringify(request));
117
- });
118
- return promise;
119
- }
120
-
121
- private parseMessage(message: string) {
122
- try {
123
- const response = JSON.parse(message);
124
- if (!response.id) {
125
- throw new Error('Received message is not valid');
126
- }
127
- if (this.promises[response.id]) {
128
- console.log('[WS] Received response:', response);
129
- if (
130
- typeof response.data?.status === 'number' &&
131
- response.data.status < 0
132
- ) {
133
- this.promises[response.id].reject(new Error(response.data.message));
134
- } else {
135
- this.promises[response.id].resolve(response.data);
136
- }
137
- delete this.promises[response.id];
138
- } else {
139
- console.log('[WS] Received request:', response);
140
- // TODO : Implement request handling
141
- throw new Error('Not yet implemented');
142
- }
143
- } catch (error) {
144
- console.error('[WS] Error parsing message:', error);
145
- }
146
- }
147
- }
1
+ import { Config } from '../config';
2
+ import { Request } from './base';
3
+ import { v4 } from 'uuid';
4
+
5
+ export class WebSocketService {
6
+ private static instance: WebSocketService;
7
+ private config: Config;
8
+ private socket: WebSocket | null = null;
9
+ public status: boolean | undefined = false;
10
+ private listeners: ((status: boolean | undefined) => void)[] = [];
11
+ private queue: Request[] = [];
12
+ private promises: {
13
+ [id: string]: {
14
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
15
+ resolve: (value: any) => void;
16
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
17
+ reject: (reason?: any) => void;
18
+ };
19
+ } = {};
20
+
21
+ public onOpen?: () => void = () => {};
22
+ public onClose?: () => void = () => {};
23
+ public onMessage?: (message: string) => void = () => {};
24
+ public onError?: (error: unknown) => void = () => {};
25
+
26
+ constructor(config: Config) {
27
+ WebSocketService.instance = this;
28
+ this.config = config;
29
+ }
30
+
31
+ public static getInstance() {
32
+ return WebSocketService.instance;
33
+ }
34
+
35
+ private resetConnection() {
36
+ this.setStatus(undefined);
37
+ this.socket = new WebSocket(this.config.webSocketUrl);
38
+
39
+ this.socket.onopen = () => {
40
+ console.log('[WS] Connected');
41
+ const interval = setInterval(() => {
42
+ if (this.socket && this.socket.readyState === 1) {
43
+ clearInterval(interval);
44
+ this.setStatus(true);
45
+ this.onOpen?.();
46
+ }
47
+ }, 100);
48
+ };
49
+
50
+ this.socket.onclose = () => {
51
+ console.log('[WS] Disconnected');
52
+ setTimeout(() => this.connect(), this.status === true ? 500 : 5000);
53
+ this.onClose?.();
54
+ this.setStatus(false);
55
+ };
56
+
57
+ this.socket.onmessage = (event) => {
58
+ this.onMessage?.(event.data);
59
+ this.parseMessage(event.data);
60
+ };
61
+
62
+ this.socket.onerror = (error) => {
63
+ this.onError?.(error);
64
+ console.error('[WS] Error:', error);
65
+ };
66
+ }
67
+
68
+ public connect(force = false) {
69
+ if (this.status === false || force) {
70
+ this.resetConnection();
71
+ }
72
+ }
73
+
74
+ public subscribe(listener: (status: boolean | undefined) => void) {
75
+ this.listeners.push(listener);
76
+ listener(this.status);
77
+ return () => this.listeners.splice(this.listeners.indexOf(listener), 1);
78
+ }
79
+
80
+ public unsubscribe(listener: (status: boolean | undefined) => void) {
81
+ this.listeners.splice(this.listeners.indexOf(listener), 1);
82
+ }
83
+
84
+ private setStatus(status: boolean | undefined) {
85
+ const previousStatus = this.status;
86
+ this.status = status;
87
+ this.listeners.forEach((listener) => listener(status));
88
+ if (this.socket && !previousStatus && status) {
89
+ this.sendQueue();
90
+ }
91
+ }
92
+
93
+ private sendQueue() {
94
+ if (this.socket && this.status) {
95
+ let request: Request | undefined;
96
+ while ((request = this.queue.shift())) {
97
+ console.log('[WS] Sending queued request:', request);
98
+ this.socket?.send(JSON.stringify(request));
99
+ }
100
+ this.queue.forEach((request) =>
101
+ this.socket?.send(JSON.stringify(request))
102
+ );
103
+ }
104
+ }
105
+
106
+ public sendRequest<TReq, TRes>(name: string, data: TReq) {
107
+ const id = v4();
108
+ const promise = new Promise<TRes>((resolve, reject) => {
109
+ const request: Request = { id, name, data };
110
+ this.promises[id] = { resolve, reject };
111
+ if (!this.socket || !this.status) {
112
+ this.queue.push(request);
113
+ return;
114
+ }
115
+ console.log('[WS] Sending request:', request);
116
+ this.socket?.send(JSON.stringify(request));
117
+ });
118
+ return promise;
119
+ }
120
+
121
+ private parseMessage(message: string) {
122
+ try {
123
+ const response = JSON.parse(message);
124
+ if (!response.id) {
125
+ throw new Error('Received message is not valid');
126
+ }
127
+ if (this.promises[response.id]) {
128
+ console.log('[WS] Received response:', response);
129
+ if (
130
+ typeof response.data?.status === 'number' &&
131
+ response.data.status < 0
132
+ ) {
133
+ this.promises[response.id].reject(new Error(response.data.message));
134
+ } else {
135
+ this.promises[response.id].resolve(response.data);
136
+ }
137
+ delete this.promises[response.id];
138
+ } else {
139
+ console.log('[WS] Received request:', response);
140
+ // TODO : Implement request handling
141
+ throw new Error('Not yet implemented');
142
+ }
143
+ } catch (error) {
144
+ console.error('[WS] Error parsing message:', error);
145
+ }
146
+ }
147
+ }
@@ -1,101 +1,101 @@
1
- import { useWebSocketRequestHandler } from './hooks';
2
-
3
- export type FieldDTO<T extends string = string> = {
4
- fieldName?: T;
5
- fieldAlias?: string;
6
- operator?:
7
- | 'add'
8
- | 'concat'
9
- | 'divide'
10
- | 'groupConcat'
11
- | 'if'
12
- | 'ifNull'
13
- | 'jsonObject'
14
- | 'length'
15
- | 'modulo'
16
- | 'multiply'
17
- | 'subtract'
18
- | 'sum'
19
- | 'trim';
20
- operands?: FieldDTO[];
21
- constantValue?: string | number | boolean | null;
22
- groupBy?: boolean;
23
- };
24
-
25
- export type ConditionDTO = {
26
- field: string;
27
- operator:
28
- | 'lessThan'
29
- | 'lessThanOrEqual'
30
- | 'lessThanOrEquals'
31
- | 'equals'
32
- | 'notEquals'
33
- | 'greaterThanOrEqual'
34
- | 'greaterThanOrEquals'
35
- | 'greaterThan'
36
- | 'like'
37
- | 'contains'
38
- | 'notContains'
39
- | 'startsWith'
40
- | 'endsWith'
41
- | 'notLike'
42
- | 'inRange'
43
- | 'between'
44
- | 'isNull'
45
- | 'inArray'
46
- | 'in'
47
- | 'not'
48
- | 'and'
49
- | 'or';
50
- value?:
51
- | string
52
- | number
53
- | boolean
54
- | null
55
- | (string | number | boolean | null)[];
56
- children?: boolean;
57
- };
58
-
59
- export type OrderByDTO = {
60
- field: string;
61
- direction?: 'ASC' | 'DESC';
62
- };
63
-
64
- export type AdvancedRequestDTO = {
65
- type: string;
66
- fields: FieldDTO[];
67
- conditions: ConditionDTO[];
68
- orderBy?: OrderByDTO[];
69
- start?: number;
70
- length?: number;
71
- getTotal?: boolean;
72
- unique?: boolean;
73
- };
74
-
75
- export type AdvancedRequestRow<R> = {
76
- [K in keyof R]: R[K] extends string | number | null
77
- ? R[K]
78
- : string | number | null;
79
- };
80
-
81
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
82
- export type AdvancedResponseDTO<T = any> = {
83
- data: AdvancedRequestRow<T>[];
84
- total?: number;
85
- };
86
-
87
- export type AdvancedRequestFieldDTO =
88
- | string
89
- | {
90
- name: string;
91
- fields: AdvancedRequestFieldDTO[];
92
- };
93
-
94
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
95
- export const useAdvancedRequestHandler = <T = any>() =>
96
- useWebSocketRequestHandler<AdvancedRequestDTO, AdvancedResponseDTO<T>>(
97
- 'AdvancedRequest'
98
- );
99
-
100
- export const useRawAdvancedRequestHandler = () =>
101
- useWebSocketRequestHandler<AdvancedRequestDTO, string>('RawAdvancedRequest');
1
+ import { useWebSocketRequestHandler } from './hooks';
2
+
3
+ export type FieldDTO<T extends string = string> = {
4
+ fieldName?: T;
5
+ fieldAlias?: string;
6
+ operator?:
7
+ | 'add'
8
+ | 'concat'
9
+ | 'divide'
10
+ | 'groupConcat'
11
+ | 'if'
12
+ | 'ifNull'
13
+ | 'jsonObject'
14
+ | 'length'
15
+ | 'modulo'
16
+ | 'multiply'
17
+ | 'subtract'
18
+ | 'sum'
19
+ | 'trim';
20
+ operands?: FieldDTO[];
21
+ constantValue?: string | number | boolean | null;
22
+ groupBy?: boolean;
23
+ };
24
+
25
+ export type ConditionDTO = {
26
+ field: string;
27
+ operator:
28
+ | 'lessThan'
29
+ | 'lessThanOrEqual'
30
+ | 'lessThanOrEquals'
31
+ | 'equals'
32
+ | 'notEquals'
33
+ | 'greaterThanOrEqual'
34
+ | 'greaterThanOrEquals'
35
+ | 'greaterThan'
36
+ | 'like'
37
+ | 'contains'
38
+ | 'notContains'
39
+ | 'startsWith'
40
+ | 'endsWith'
41
+ | 'notLike'
42
+ | 'inRange'
43
+ | 'between'
44
+ | 'isNull'
45
+ | 'inArray'
46
+ | 'in'
47
+ | 'not'
48
+ | 'and'
49
+ | 'or';
50
+ value?:
51
+ | string
52
+ | number
53
+ | boolean
54
+ | null
55
+ | (string | number | boolean | null)[];
56
+ children?: boolean;
57
+ };
58
+
59
+ export type OrderByDTO = {
60
+ field: string;
61
+ direction?: 'ASC' | 'DESC';
62
+ };
63
+
64
+ export type AdvancedRequestDTO = {
65
+ type: string;
66
+ fields: FieldDTO[];
67
+ conditions: ConditionDTO[];
68
+ orderBy?: OrderByDTO[];
69
+ start?: number;
70
+ length?: number;
71
+ getTotal?: boolean;
72
+ unique?: boolean;
73
+ };
74
+
75
+ export type AdvancedRequestRow<R> = {
76
+ [K in keyof R]: R[K] extends string | number | null
77
+ ? R[K]
78
+ : string | number | null;
79
+ };
80
+
81
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
82
+ export type AdvancedResponseDTO<T = any> = {
83
+ data: AdvancedRequestRow<T>[];
84
+ count?: number;
85
+ };
86
+
87
+ export type AdvancedRequestFieldDTO =
88
+ | string
89
+ | {
90
+ name: string;
91
+ fields: AdvancedRequestFieldDTO[];
92
+ };
93
+
94
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
95
+ export const useAdvancedRequestHandler = <T = any>() =>
96
+ useWebSocketRequestHandler<AdvancedRequestDTO, AdvancedResponseDTO<T>>(
97
+ 'AdvancedRequest'
98
+ );
99
+
100
+ export const useRawAdvancedRequestHandler = () =>
101
+ useWebSocketRequestHandler<AdvancedRequestDTO, string>('RawAdvancedRequest');
@@ -1,31 +1,31 @@
1
- export type BaseModelDTO = {
2
- id: string;
3
- dateAdd: string;
4
- dateUpd: string;
5
- dateDel: string | null;
6
- };
7
-
8
- export const emptyBaseModel: BaseModelDTO = {
9
- id: '',
10
- dateAdd: new Date().toISOString(),
11
- dateUpd: new Date().toISOString(),
12
- dateDel: null,
13
- };
14
-
15
- export type ArchivableModelDTO = BaseModelDTO & {
16
- archived: boolean | null;
17
- };
18
-
19
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
20
- export type Request<T = any> = {
21
- id: string;
22
- name: string;
23
- data: T;
24
- };
25
-
26
- export const UUID_REGEX =
27
- /^[0-9a-f]{8}-[0-9a-f]{4}-[0-5][0-9a-f]{3}-[089ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
28
-
29
- export type GetObjectRequestDTO = {
30
- id: string;
31
- };
1
+ export type BaseModelDTO = {
2
+ id: string;
3
+ dateAdd: string;
4
+ dateUpd: string;
5
+ dateDel: string | null;
6
+ };
7
+
8
+ export const emptyBaseModel: BaseModelDTO = {
9
+ id: '',
10
+ dateAdd: new Date().toISOString(),
11
+ dateUpd: new Date().toISOString(),
12
+ dateDel: null,
13
+ };
14
+
15
+ export type ArchivableModelDTO = BaseModelDTO & {
16
+ archived: boolean | null;
17
+ };
18
+
19
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
20
+ export type Request<T = any> = {
21
+ id: string;
22
+ name: string;
23
+ data: T;
24
+ };
25
+
26
+ export const UUID_REGEX =
27
+ /^[0-9a-f]{8}-[0-9a-f]{4}-[0-5][0-9a-f]{3}-[089ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
28
+
29
+ export type GetObjectRequestDTO = {
30
+ id: string;
31
+ };
@@ -1,23 +1,23 @@
1
- import { HttpService } from './HttpService';
2
- import { WebSocketService } from './WebSocketService';
3
- import { useCallback } from 'react';
4
-
5
- export const useWebSocketRequestHandler = <TReq, TRes>(
6
- name: string
7
- ): ((data: TReq) => Promise<TRes>) =>
8
- useCallback(
9
- (data: TReq) => {
10
- return WebSocketService.getInstance().sendRequest<TReq, TRes>(name, data);
11
- },
12
- [name]
13
- );
14
-
15
- export const useHttpRequestHandler = <TReq, TRes>(
16
- name: string
17
- ): ((data: TReq) => Promise<TRes>) =>
18
- useCallback(
19
- (data: TReq) => {
20
- return HttpService.getInstance().sendRequest<TReq, TRes>(name, data);
21
- },
22
- [name]
23
- );
1
+ import { HttpService } from './HttpService';
2
+ import { WebSocketService } from './WebSocketService';
3
+ import { useCallback } from 'react';
4
+
5
+ export const useWebSocketRequestHandler = <TReq, TRes>(
6
+ name: string
7
+ ): ((data: TReq) => Promise<TRes>) =>
8
+ useCallback(
9
+ (data: TReq) => {
10
+ return WebSocketService.getInstance().sendRequest<TReq, TRes>(name, data);
11
+ },
12
+ [name]
13
+ );
14
+
15
+ export const useHttpRequestHandler = <TReq, TRes>(
16
+ name: string
17
+ ): ((data: TReq) => Promise<TRes>) =>
18
+ useCallback(
19
+ (data: TReq) => {
20
+ return HttpService.getInstance().sendRequest<TReq, TRes>(name, data);
21
+ },
22
+ [name]
23
+ );
@@ -1,2 +1,2 @@
1
- export * from './WebSocketService';
2
- export * from './hooks';
1
+ export * from './WebSocketService';
2
+ export * from './hooks';