@addev-be/ui 0.16.10 → 0.17.1

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 (240) hide show
  1. package/dist/Icons.d.ts +1 -3
  2. package/dist/Icons.js +1 -6
  3. package/dist/components/auth/LoginForm.js +5 -7
  4. package/dist/components/auth/PasswordRecoveryForm.js +5 -6
  5. package/dist/components/auth/styles.d.ts +3 -1
  6. package/dist/components/data/DataGrid/DataGridCell.d.ts +1 -1
  7. package/dist/components/data/DataGrid/DataGridCell.js +15 -25
  8. package/dist/components/data/DataGrid/DataGridColumnsModal/hooks.js +2 -2
  9. package/dist/components/data/DataGrid/DataGridColumnsModal/index.js +7 -17
  10. package/dist/components/data/DataGrid/DataGridColumnsModal/styles.d.ts +18 -6
  11. package/dist/components/data/DataGrid/DataGridColumnsModal/styles.js +9 -19
  12. package/dist/components/data/DataGrid/DataGridEditableCell/CheckboxEditableCell.d.ts +1 -1
  13. package/dist/components/data/DataGrid/DataGridEditableCell/CheckboxEditableCell.js +3 -3
  14. package/dist/components/data/DataGrid/DataGridEditableCell/DateEditableCell.d.ts +1 -1
  15. package/dist/components/data/DataGrid/DataGridEditableCell/DateEditableCell.js +4 -4
  16. package/dist/components/data/DataGrid/DataGridEditableCell/NumberEditableCell.d.ts +2 -4
  17. package/dist/components/data/DataGrid/DataGridEditableCell/NumberEditableCell.js +5 -7
  18. package/dist/components/data/DataGrid/DataGridEditableCell/TextEditableCell.d.ts +1 -1
  19. package/dist/components/data/DataGrid/DataGridEditableCell/TextEditableCell.js +3 -3
  20. package/dist/components/data/DataGrid/DataGridEditableCell/index.js +12 -12
  21. package/dist/components/data/DataGrid/DataGridEditableCell/styles.js +1 -1
  22. package/dist/components/data/DataGrid/DataGridEditableCell/types.d.ts +3 -3
  23. package/dist/components/data/DataGrid/DataGridFilterMenu/FilterValuesScroller.js +10 -19
  24. package/dist/components/data/DataGrid/DataGridFilterMenu/hooks.js +2 -2
  25. package/dist/components/data/DataGrid/DataGridFilterMenu/index.js +19 -24
  26. package/dist/components/data/DataGrid/DataGridFilterMenu/styles.d.ts +15 -5
  27. package/dist/components/data/DataGrid/DataGridFilterMenu/styles.js +5 -5
  28. package/dist/components/data/DataGrid/DataGridFooter.js +10 -18
  29. package/dist/components/data/DataGrid/DataGridHeader.js +60 -20
  30. package/dist/components/data/DataGrid/DataGridHeaderCell.js +13 -22
  31. package/dist/components/data/DataGrid/DataGridRowTemplate.js +10 -22
  32. package/dist/components/data/DataGrid/FilterModalContent/index.js +12 -22
  33. package/dist/components/data/DataGrid/FilterModalContent/styles.d.ts +3 -1
  34. package/dist/components/data/DataGrid/helpers/columns.d.ts +9 -11
  35. package/dist/components/data/DataGrid/helpers/columns.js +19 -38
  36. package/dist/components/data/DataGrid/hooks/useDataGrid.js +5 -6
  37. package/dist/components/data/DataGrid/hooks/useDataGridChangedRows.d.ts +7 -7
  38. package/dist/components/data/DataGrid/hooks/useDataGridChangedRows.js +32 -52
  39. package/dist/components/data/DataGrid/hooks/useDataGridSettings.d.ts +12 -8
  40. package/dist/components/data/DataGrid/hooks/useDataGridSettings.js +2 -2
  41. package/dist/components/data/DataGrid/index.d.ts +6 -3
  42. package/dist/components/data/DataGrid/index.js +19 -42
  43. package/dist/components/data/DataGrid/styles.d.ts +18 -10
  44. package/dist/components/data/DataGrid/styles.js +37 -64
  45. package/dist/components/data/DataGrid/types.d.ts +30 -42
  46. package/dist/components/data/DataGrid/types.js +15 -25
  47. package/dist/components/data/SqlRequestDataGrid/SqlRequestForeignListEditableCell.d.ts +1 -2
  48. package/dist/components/data/SqlRequestDataGrid/SqlRequestForeignListEditableCell.js +3 -2
  49. package/dist/components/data/SqlRequestDataGrid/helpers/columns.d.ts +1 -1
  50. package/dist/components/data/SqlRequestDataGrid/helpers/columns.js +47 -70
  51. package/dist/components/data/SqlRequestDataGrid/index.d.ts +11 -4
  52. package/dist/components/data/SqlRequestDataGrid/index.js +30 -50
  53. package/dist/components/data/SqlRequestForeignList/index.d.ts +3 -4
  54. package/dist/components/data/SqlRequestForeignList/index.js +15 -15
  55. package/dist/components/data/SqlRequestForeignList/styles.js +1 -1
  56. package/dist/components/data/SqlRequestForeignList/types.d.ts +1 -1
  57. package/dist/components/data/SqlRequestForeignList/types.js +1 -0
  58. package/dist/components/data/SqlRequestGrid/filters/FiltersSidebar.js +10 -19
  59. package/dist/components/data/SqlRequestGrid/filters/styles.js +3 -3
  60. package/dist/components/data/SqlRequestGrid/index.d.ts +3 -4
  61. package/dist/components/data/SqlRequestGrid/index.js +26 -26
  62. package/dist/components/data/SqlRequestGrid/styles.d.ts +3 -1
  63. package/dist/components/data/SqlRequestGrid/types.js +1 -0
  64. package/dist/components/data/VirtualScroller/hooks.js +2 -2
  65. package/dist/components/data/VirtualScroller/index.js +8 -17
  66. package/dist/components/data/VirtualScroller/styles.d.ts +6 -2
  67. package/dist/components/data/VirtualScroller/styles.js +1 -0
  68. package/dist/components/data/VirtualScroller/types.js +1 -0
  69. package/dist/components/forms/AutoTextArea.js +1 -2
  70. package/dist/components/forms/Button.d.ts +4 -4
  71. package/dist/components/forms/Button.js +19 -29
  72. package/dist/components/forms/Form/Checkbox.d.ts +2 -2
  73. package/dist/components/forms/Form/Checkbox.js +2 -2
  74. package/dist/components/forms/Form/FormGroup.d.ts +1 -3
  75. package/dist/components/forms/Form/FormGroup.js +2 -2
  76. package/dist/components/forms/Form/Input.d.ts +2 -2
  77. package/dist/components/forms/Form/Input.js +2 -3
  78. package/dist/components/forms/Form/Select.d.ts +8 -4
  79. package/dist/components/forms/Form/Select.js +8 -12
  80. package/dist/components/forms/Form/TextArea.d.ts +2 -2
  81. package/dist/components/forms/Form/TextArea.js +2 -3
  82. package/dist/components/forms/Form/index.d.ts +20 -40
  83. package/dist/components/forms/Form/index.js +8 -15
  84. package/dist/components/forms/Form/styles.d.ts +7 -10
  85. package/dist/components/forms/Form/styles.js +19 -31
  86. package/dist/components/forms/IconButton.d.ts +4 -8
  87. package/dist/components/forms/IconButton.js +4 -4
  88. package/dist/components/forms/index.d.ts +1 -2
  89. package/dist/components/forms/index.js +1 -2
  90. package/dist/components/forms/styles.d.ts +6 -18
  91. package/dist/components/forms/styles.js +14 -25
  92. package/dist/components/layout/Columns.d.ts +1 -3
  93. package/dist/components/layout/Columns.js +6 -8
  94. package/dist/components/layout/Dropdown/index.js +9 -19
  95. package/dist/components/layout/Dropdown/styles.d.ts +6 -3
  96. package/dist/components/layout/Dropdown/styles.js +9 -22
  97. package/dist/components/layout/Grid/styles.d.ts +3 -1
  98. package/dist/components/layout/Loading/index.js +9 -19
  99. package/dist/components/layout/Loading/styles.d.ts +6 -2
  100. package/dist/components/layout/Modal/index.js +9 -19
  101. package/dist/components/layout/Modal/styles.d.ts +27 -9
  102. package/dist/components/layout/Modal/styles.js +11 -21
  103. package/dist/components/layout/index.d.ts +0 -1
  104. package/dist/components/layout/index.js +0 -1
  105. package/dist/components/search/HighlightedText.js +9 -11
  106. package/dist/components/search/QuickSearchBar.d.ts +2 -6
  107. package/dist/components/search/QuickSearchBar.js +25 -28
  108. package/dist/components/search/QuickSearchResults.js +7 -17
  109. package/dist/components/search/styles.d.ts +27 -9
  110. package/dist/components/search/styles.js +5 -5
  111. package/dist/components/search/types.d.ts +0 -3
  112. package/dist/components/ui/Avatar/index.d.ts +1 -1
  113. package/dist/components/ui/Avatar/index.js +7 -17
  114. package/dist/components/ui/Avatar/styles.js +7 -17
  115. package/dist/components/ui/Card/styles.d.ts +9 -3
  116. package/dist/components/ui/Card/styles.js +3 -3
  117. package/dist/components/ui/ContextMenu/styles.d.ts +12 -4
  118. package/dist/components/ui/ContextMenu/styles.js +12 -22
  119. package/dist/components/ui/Ellipsis.d.ts +1 -0
  120. package/dist/components/ui/Label.d.ts +1 -2
  121. package/dist/components/ui/Label.js +13 -23
  122. package/dist/components/ui/Message/index.js +9 -19
  123. package/dist/components/ui/Message/styles.d.ts +7 -4
  124. package/dist/components/ui/Message/styles.js +9 -20
  125. package/dist/components/ui/index.d.ts +0 -1
  126. package/dist/components/ui/index.js +0 -1
  127. package/dist/config/index.d.ts +4 -1
  128. package/dist/helpers/index.d.ts +0 -1
  129. package/dist/helpers/index.js +0 -1
  130. package/dist/hooks/index.d.ts +0 -1
  131. package/dist/hooks/index.js +0 -1
  132. package/dist/index.d.ts +5 -86
  133. package/dist/index.js +5 -86
  134. package/dist/providers/AuthenticationProvider/index.d.ts +1 -2
  135. package/dist/providers/AuthenticationProvider/index.js +21 -63
  136. package/dist/providers/LoadingProvider/index.js +2 -2
  137. package/dist/providers/PortalsProvider/index.js +7 -17
  138. package/dist/providers/PortalsProvider/styles.d.ts +9 -3
  139. package/dist/providers/ThemeProvider/ThemeProvider.d.ts +0 -1
  140. package/dist/providers/ThemeProvider/ThemeProvider.js +9 -11
  141. package/dist/providers/ThemeProvider/defaultTheme.d.ts +0 -1
  142. package/dist/providers/ThemeProvider/defaultTheme.js +1 -20
  143. package/dist/providers/ThemeProvider/helpers.d.ts +3 -12
  144. package/dist/providers/ThemeProvider/helpers.js +2 -54
  145. package/dist/providers/ThemeProvider/index.d.ts +3 -8
  146. package/dist/providers/ThemeProvider/index.js +18 -49
  147. package/dist/providers/ThemeProvider/types.d.ts +2 -3
  148. package/dist/providers/TrackingProvider/index.js +2 -2
  149. package/dist/providers/UiProviders/index.d.ts +1 -4
  150. package/dist/providers/UiProviders/index.js +10 -20
  151. package/dist/providers/UiProviders/styles.d.ts +3 -1
  152. package/dist/providers/UiProviders/styles.js +1 -1
  153. package/dist/providers/hooks.d.ts +0 -6
  154. package/dist/providers/hooks.js +1 -4
  155. package/dist/providers/index.d.ts +0 -1
  156. package/dist/providers/index.js +0 -1
  157. package/dist/services/WebSocketService.d.ts +0 -8
  158. package/dist/services/WebSocketService.js +2 -34
  159. package/dist/services/globalSearch.d.ts +2 -5
  160. package/dist/services/hooks.d.ts +0 -10
  161. package/dist/services/hooks.js +4 -91
  162. package/dist/services/index.js +7 -17
  163. package/dist/services/requests/auth.d.ts +11 -9
  164. package/dist/services/requests/generic.d.ts +15 -62
  165. package/dist/services/requests/generic.js +7 -7
  166. package/dist/services/requests/tracking.d.ts +8 -4
  167. package/dist/services/requests/userProfiles.d.ts +5 -5
  168. package/dist/services/requests/users.d.ts +16 -11
  169. package/dist/services/types/auth.d.ts +82 -80
  170. package/dist/services/types/auth.js +48 -58
  171. package/dist/services/types/base.d.ts +5 -5
  172. package/dist/services/types/base.js +11 -21
  173. package/dist/services/types/generic.d.ts +40 -39
  174. package/dist/services/types/generic.js +49 -55
  175. package/dist/services/types/tracking.d.ts +24 -24
  176. package/dist/services/types/tracking.js +28 -30
  177. package/dist/services/types/userProfiles.d.ts +60 -60
  178. package/dist/services/types/userProfiles.js +45 -48
  179. package/dist/services/types/users.d.ts +114 -108
  180. package/dist/services/types/users.js +59 -56
  181. package/dist/services/updateSqlRequests.js +1 -0
  182. package/eslint.config.js +28 -28
  183. package/package.json +1 -1
  184. package/src/components/data/DataGrid/DataGridEditableCell/index.tsx +5 -7
  185. package/src/components/data/DataGrid/DataGridHeader.tsx +16 -4
  186. package/src/components/data/DataGrid/DataGridRowTemplate.tsx +4 -2
  187. package/src/components/data/DataGrid/hooks/useDataGrid.tsx +3 -6
  188. package/src/components/data/DataGrid/hooks/useDataGridChangedRows.ts +65 -32
  189. package/src/components/data/DataGrid/hooks/useRefreshModal.tsx +48 -0
  190. package/src/components/data/DataGrid/styles.ts +9 -2
  191. package/src/components/data/DataGrid/types.ts +5 -5
  192. package/src/components/data/SqlRequestDataGrid/helpers/columns.tsx +4 -3
  193. package/src/components/layout/Modal/styles.ts +6 -2
  194. package/src/components/search/HighlightedText.tsx +24 -20
  195. package/src/components/search/QuickSearchBar.tsx +11 -7
  196. package/tsconfig.tsbuildinfo +1 -1
  197. package/dist/components/data/DataGrid/DataGridFilterMenu/helpers.d.ts +0 -2
  198. package/dist/components/data/DataGrid/DataGridFilterMenu/helpers.js +0 -19
  199. package/dist/components/data/DataGrid/DataGridToolbar.d.ts +0 -4
  200. package/dist/components/data/DataGrid/DataGridToolbar.js +0 -141
  201. package/dist/components/data/DataGrid/hooks/useRefreshModal.d.ts +0 -5
  202. package/dist/components/data/DataGrid/hooks/useRefreshModal.js +0 -25
  203. package/dist/components/data/SqlRequestDataGrid/helpers/rows.d.ts +0 -2
  204. package/dist/components/data/SqlRequestDataGrid/helpers/rows.js +0 -17
  205. package/dist/components/forms/Form/CustomSelect.d.ts +0 -13
  206. package/dist/components/forms/Form/CustomSelect.js +0 -50
  207. package/dist/components/forms/Form/Row.d.ts +0 -9
  208. package/dist/components/forms/Form/Row.js +0 -10
  209. package/dist/components/forms/NumberInput.d.ts +0 -9
  210. package/dist/components/forms/NumberInput.js +0 -40
  211. package/dist/components/layout/Flexbox.d.ts +0 -11
  212. package/dist/components/layout/Flexbox.js +0 -26
  213. package/dist/components/ui/TabsView/TabsList.d.ts +0 -10
  214. package/dist/components/ui/TabsView/TabsList.js +0 -40
  215. package/dist/components/ui/TabsView/TabsView.d.ts +0 -9
  216. package/dist/components/ui/TabsView/TabsView.js +0 -17
  217. package/dist/components/ui/TabsView/index.d.ts +0 -3
  218. package/dist/components/ui/TabsView/index.js +0 -19
  219. package/dist/components/ui/TabsView/styles.d.ts +0 -11
  220. package/dist/components/ui/TabsView/styles.js +0 -57
  221. package/dist/components/ui/TabsView/types.d.ts +0 -10
  222. package/dist/components/ui/TabsView/types.js +0 -2
  223. package/dist/helpers/components.d.ts +0 -2
  224. package/dist/helpers/components.js +0 -8
  225. package/dist/helpers/react.d.ts +0 -2
  226. package/dist/helpers/react.js +0 -8
  227. package/dist/helpers/styled/index.d.ts +0 -1
  228. package/dist/helpers/styled/index.js +0 -17
  229. package/dist/helpers/styled/space.d.ts +0 -39
  230. package/dist/helpers/styled/space.js +0 -90
  231. package/dist/helpers/styled/typography.d.ts +0 -9
  232. package/dist/helpers/styled/typography.js +0 -61
  233. package/dist/helpers/types.d.ts +0 -2
  234. package/dist/helpers/types.js +0 -8
  235. package/dist/hooks/useMutableState.d.ts +0 -8
  236. package/dist/hooks/useMutableState.js +0 -14
  237. package/dist/providers/ToastProvider/index.d.ts +0 -12
  238. package/dist/providers/ToastProvider/index.js +0 -66
  239. package/dist/types.d.ts +0 -3
  240. package/dist/types.js +0 -2
@@ -1,4 +1,15 @@
1
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
+ };
2
13
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
14
  if (k2 === undefined) k2 = k;
4
15
  var desc = Object.getOwnPropertyDescriptor(m, k);
@@ -15,66 +26,58 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
15
26
  }) : function(o, v) {
16
27
  o["default"] = v;
17
28
  });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
29
+ var __importStar = (this && this.__importStar) || function (mod) {
30
+ if (mod && mod.__esModule) return mod;
31
+ var result = {};
32
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
33
+ __setModuleDefault(result, mod);
34
+ return result;
35
+ };
35
36
  Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.deleteUserResponseDtoSchema = exports.deleteUserRequestDtoSchema = exports.saveUserResponseDtoSchema = exports.saveUserRequestDtoSchema = exports.getAllUsersResponseDtoSchema = exports.getAllUsersRequestDtoSchema = exports.getUserResponseDtoSchema = exports.getUserRequestDtoSchema = exports.userDtoSchema = void 0;
37
- var z = __importStar(require("zod"));
37
+ exports.deleteUserResponseDtoCodec = exports.deleteUserRequestDtoCodec = exports.saveUserResponseDtoCodec = exports.saveUserRequestDtoCodec = exports.getAllUsersResponseDtoCodec = exports.getAllUsersRequestDtoCodec = exports.getUserResponseDtoCodec = exports.getUserRequestDtoCodec = exports.userDtoCodec = void 0;
38
+ var t = __importStar(require("io-ts"));
38
39
  var base_1 = require("./base");
39
40
  var userProfiles_1 = require("./userProfiles");
40
- exports.userDtoSchema = base_1.baseModelDtoSchema.extend({
41
- username: z.string(),
42
- permissions: z.array(z.string()),
43
- isAdmin: z.boolean(),
44
- profile: userProfiles_1.userProfileDtoSchema.nullable(),
45
- name: z.string().optional(),
46
- email: z.string().optional(),
47
- lastLogin: z.string().nullable().optional(),
48
- });
41
+ exports.userDtoCodec = t.intersection([
42
+ t.type(__assign(__assign({}, base_1.baseModelDtoCodec.props), { username: t.string, permissions: t.array(t.string), isAdmin: t.boolean, profile: t.union([userProfiles_1.userProfileDtoCodec, t.null]) })),
43
+ t.partial({
44
+ name: t.string,
45
+ email: t.string,
46
+ lastLogin: t.union([t.string, t.null]),
47
+ }),
48
+ ], 'UserDTO');
49
49
  /*****/
50
- exports.getUserRequestDtoSchema = z.object({
51
- id: z.string(),
52
- });
53
- exports.getUserResponseDtoSchema = z.object({
54
- status: z.number(),
55
- data: exports.userDtoSchema,
56
- });
50
+ exports.getUserRequestDtoCodec = t.type({
51
+ id: t.string,
52
+ }, 'GetUserRequestDTO');
53
+ exports.getUserResponseDtoCodec = t.type({
54
+ status: t.number,
55
+ data: exports.userDtoCodec,
56
+ }, 'GetUserResponseDTO');
57
57
  /*****/
58
- exports.getAllUsersRequestDtoSchema = z.object({});
59
- exports.getAllUsersResponseDtoSchema = z.object({
60
- status: z.number(),
61
- data: z.array(exports.userDtoSchema),
62
- });
58
+ exports.getAllUsersRequestDtoCodec = t.type({}, 'GetAllUsersRequestDTO');
59
+ exports.getAllUsersResponseDtoCodec = t.type({
60
+ status: t.number,
61
+ data: t.array(exports.userDtoCodec),
62
+ }, 'GetAllUsersResponseDTO');
63
63
  /*****/
64
- exports.saveUserRequestDtoSchema = z.object({
65
- data: exports.userDtoSchema.extend({
66
- password: z.string().optional(),
67
- }),
68
- password: z.string(),
69
- });
70
- exports.saveUserResponseDtoSchema = z.object({
71
- status: z.number(),
72
- data: exports.userDtoSchema,
73
- });
64
+ exports.saveUserRequestDtoCodec = t.type({
65
+ data: t.intersection([
66
+ exports.userDtoCodec,
67
+ t.partial({
68
+ password: t.string,
69
+ }),
70
+ ]),
71
+ password: t.string,
72
+ }, 'SaveUserRequestDTO');
73
+ exports.saveUserResponseDtoCodec = t.type({
74
+ status: t.number,
75
+ data: exports.userDtoCodec,
76
+ }, 'SaveUserResponseDTO');
74
77
  /*****/
75
- exports.deleteUserRequestDtoSchema = z.object({
76
- id: z.string(),
77
- });
78
- exports.deleteUserResponseDtoSchema = z.object({
79
- status: z.number(),
80
- });
78
+ exports.deleteUserRequestDtoCodec = t.type({
79
+ id: t.string,
80
+ }, 'DeleteUserRequestDTO');
81
+ exports.deleteUserResponseDtoCodec = t.type({
82
+ status: t.number,
83
+ }, 'DeleteUserResponseDTO');
@@ -2,5 +2,6 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.useUpdateSqlRequestHandler = void 0;
4
4
  var hooks_1 = require("./hooks");
5
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
5
6
  var useUpdateSqlRequestHandler = function (name) { return (0, hooks_1.useWebSocketRequestHandler)(name); };
6
7
  exports.useUpdateSqlRequestHandler = useUpdateSqlRequestHandler;
package/eslint.config.js CHANGED
@@ -1,28 +1,28 @@
1
- import js from '@eslint/js'
2
- import globals from 'globals'
3
- import reactHooks from 'eslint-plugin-react-hooks'
4
- import reactRefresh from 'eslint-plugin-react-refresh'
5
- import tseslint from 'typescript-eslint'
6
-
7
- export default tseslint.config(
8
- { ignores: ['dist'] },
9
- {
10
- extends: [js.configs.recommended, ...tseslint.configs.recommended],
11
- files: ['**/*.{ts,tsx}'],
12
- languageOptions: {
13
- ecmaVersion: 2020,
14
- globals: globals.browser,
15
- },
16
- plugins: {
17
- 'react-hooks': reactHooks,
18
- 'react-refresh': reactRefresh,
19
- },
20
- rules: {
21
- ...reactHooks.configs.recommended.rules,
22
- 'react-refresh/only-export-components': [
23
- 'warn',
24
- { allowConstantExport: true },
25
- ],
26
- },
27
- },
28
- )
1
+ import js from '@eslint/js'
2
+ import globals from 'globals'
3
+ import reactHooks from 'eslint-plugin-react-hooks'
4
+ import reactRefresh from 'eslint-plugin-react-refresh'
5
+ import tseslint from 'typescript-eslint'
6
+
7
+ export default tseslint.config(
8
+ { ignores: ['dist'] },
9
+ {
10
+ extends: [js.configs.recommended, ...tseslint.configs.recommended],
11
+ files: ['**/*.{ts,tsx}'],
12
+ languageOptions: {
13
+ ecmaVersion: 2020,
14
+ globals: globals.browser,
15
+ },
16
+ plugins: {
17
+ 'react-hooks': reactHooks,
18
+ 'react-refresh': reactRefresh,
19
+ },
20
+ rules: {
21
+ ...reactHooks.configs.recommended.rules,
22
+ 'react-refresh/only-export-components': [
23
+ 'warn',
24
+ { allowConstantExport: true },
25
+ ],
26
+ },
27
+ },
28
+ )
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@addev-be/ui",
3
- "version": "0.16.10",
3
+ "version": "0.17.1",
4
4
  "type": "module",
5
5
  "scripts": {
6
6
  "watch": "tsc -b --watch",
@@ -22,29 +22,27 @@ export const DataGridEditableCell = <R, T>({
22
22
  const rowKey = rowKeyGetter(row);
23
23
 
24
24
  const defaultItemToPartialRow = useCallback(
25
- (row: R, newValue: T): Partial<R> =>
26
- ({ [columnKey]: newValue } as Partial<R>),
25
+ (key: string, row: R, newValue: T): Partial<R> =>
26
+ ({ Id: key, [columnKey]: newValue } as any),
27
27
  [columnKey]
28
28
  );
29
29
  const partialRowGetter: EditableDataGridColumn<R, T>['itemToPartialRow'] =
30
30
  column.itemToPartialRow ?? defaultItemToPartialRow;
31
31
 
32
32
  const save = useCallback(() => {
33
- const rowIndex = rows.findIndex(
34
- (r) => rowKeyGetter(r) === rowKeyGetter(row)
35
- );
33
+ const rowIndex = rows.findIndex((r) => rowKeyGetter(r) === rowKey);
36
34
 
37
35
  // If row is found
38
36
  if (rowIndex >= 0) {
39
37
  // Update the row with the new value
40
- const partialRow = partialRowGetter(row, value);
38
+ const partialRow = partialRowGetter(rowKey, row, value);
41
39
  const newRow = {
42
40
  ...row,
43
41
  ...partialRow,
44
42
  };
45
43
 
46
44
  // Update the edited rows state
47
- editRow(rowKey, partialRow);
45
+ editRow(partialRow);
48
46
 
49
47
  // Update the rows
50
48
  setRows?.((oldRows) => {
@@ -20,6 +20,7 @@ import { IndeterminateCheckbox } from '../../forms/IndeterminateCheckbox';
20
20
  import { Loading } from '../../layout';
21
21
  import { useDataGridColumnsModal } from './DataGridColumnsModal/hooks';
22
22
  import { useDataGridContext } from './hooks';
23
+ import { useRefreshModal } from './hooks/useRefreshModal';
23
24
 
24
25
  export const DataGridHeader = <R,>({
25
26
  context,
@@ -89,17 +90,27 @@ export const DataGridHeader = <R,>({
89
90
  const add = useCallback(async () => {
90
91
  if (onAddClicked) {
91
92
  const row = await onAddClicked();
92
- const key = rowKeyGetter(row);
93
- addRow(key, row);
93
+ addRow(row);
94
94
  }
95
- }, [addRow, onAddClicked, rowKeyGetter]);
95
+ }, [addRow, onAddClicked]);
96
96
 
97
- const onRefreshClicked = useCallback(() => {
97
+ const doRefresh = useCallback(() => {
98
98
  refresh?.();
99
99
  clearChangedRows();
100
100
  setSelectedKeys([]);
101
101
  }, [clearChangedRows, refresh, setSelectedKeys]);
102
102
 
103
+ const { openModal: openRefreshModal, modal: refreshModal } =
104
+ useRefreshModal(doRefresh);
105
+
106
+ const onRefreshClicked = useCallback(async () => {
107
+ if (addedRows.length + updatedRows.length > 0) {
108
+ openRefreshModal();
109
+ } else {
110
+ doRefresh();
111
+ }
112
+ }, [addedRows.length, doRefresh, openRefreshModal, updatedRows.length]);
113
+
103
114
  const toolsRow = (
104
115
  <styles.DataGridToolsRow>
105
116
  <styles.DataGridToolsRowButtonsContainer>
@@ -143,6 +154,7 @@ export const DataGridHeader = <R,>({
143
154
  return (
144
155
  <>
145
156
  {modal}
157
+ {refreshModal}
146
158
  {toolsRow}
147
159
  <styles.DataGridHeaderRow
148
160
  $gridTemplateColumns={gridTemplateColumns}
@@ -44,8 +44,10 @@ export const DataGridRowTemplate = <R,>({
44
44
  className: '',
45
45
  style: undefined,
46
46
  };
47
- const isAdded = rowKey in addedRows;
48
- const isUpdated = rowKey in updatedRows;
47
+ const isAdded = addedRows.some((row) => rowKeyGetter(row as R) === rowKey);
48
+ const isUpdated = updatedRows.some(
49
+ (row) => rowKeyGetter(row as R) === rowKey
50
+ );
49
51
 
50
52
  return (
51
53
  <styles.DataGridRow key={rowKey} $edited={isAdded || isUpdated}>
@@ -47,9 +47,6 @@ export const useDataGrid = <R,>(
47
47
  override?.rows ?? innerRows,
48
48
  override?.setRows ?? setInnerRows,
49
49
  ];
50
- useEffect(() => {
51
- setInnerRows(props.rows);
52
- }, [props.rows]);
53
50
 
54
51
  /** SETTINGS */
55
52
 
@@ -152,7 +149,7 @@ export const useDataGrid = <R,>(
152
149
  addRow,
153
150
  updateRow,
154
151
  clearChangedRows,
155
- } = useDataGridChangedRows<R>(onRowAdded);
152
+ } = useDataGridChangedRows<R>(rowKeyGetter as any, onRowAdded);
156
153
 
157
154
  /** ROWS SORTING **/
158
155
 
@@ -365,8 +362,8 @@ export const useDataGrid = <R,>(
365
362
  startResizing: () => {},
366
363
  moveResizing: () => {},
367
364
  endResizing: () => {},
368
- addedRows: {},
369
- updatedRows: {},
365
+ addedRows: [],
366
+ updatedRows: [],
370
367
  setRows: () => {},
371
368
  editRow: () => {},
372
369
  addRow: () => {},
@@ -1,49 +1,82 @@
1
1
  import { useCallback, useState } from 'react';
2
2
 
3
- import { DataGridEditedRows } from '../types';
4
- import { pickBy } from 'lodash';
5
-
6
- export const useDataGridChangedRows = <R>(onRowAdded: (row: R) => void) => {
7
- const [addedRows, setAddedRows] = useState<DataGridEditedRows<R>>({});
8
- const [updatedRows, setUpdatedRows] = useState<DataGridEditedRows<R>>({});
3
+ export const useDataGridChangedRows = <R>(
4
+ rowKeyGetter: (row: Partial<R>) => string,
5
+ onRowAdded: (row: R) => void
6
+ ) => {
7
+ const [addedRows, setAddedRows] = useState<Partial<R>[]>([]);
8
+ const [updatedRows, setUpdatedRows] = useState<Partial<R>[]>([]);
9
9
 
10
10
  const addRow = useCallback(
11
- (key: string, row: R) => {
12
- setAddedRows((prev) => ({ ...prev, [key]: row }));
13
- onRowAdded(row);
11
+ (row: Partial<R>) => {
12
+ setAddedRows((prev) => [...prev, row]);
13
+ onRowAdded(row as R);
14
14
  },
15
15
  [onRowAdded]
16
16
  );
17
17
 
18
- const updateRow = useCallback((key: string, row: Partial<R>) => {
19
- setUpdatedRows((prev) => ({ ...prev, [key]: row }));
20
- }, []);
18
+ const updateRow = useCallback(
19
+ (row: Partial<R>) => {
20
+ const rowKey = rowKeyGetter(row);
21
+ setUpdatedRows((prev) => {
22
+ const index = prev.findIndex((r) => rowKeyGetter(r) === rowKey);
23
+ return index >= 0
24
+ ? prev.map((existingRow, i) =>
25
+ i === index ? { ...existingRow, ...row } : existingRow
26
+ )
27
+ : [...prev, row];
28
+ });
29
+ },
30
+ [rowKeyGetter]
31
+ );
21
32
 
22
33
  const editRow = useCallback(
23
- (key: string, row: Partial<R>) => {
24
- if (addedRows[key]) {
25
- setAddedRows((prev) => ({ ...prev, [key]: { ...prev[key], ...row } }));
26
- } else if (updatedRows[key]) {
27
- setUpdatedRows((prev) => ({
28
- ...prev,
29
- [key]: { ...prev[key], ...row },
30
- }));
31
- } else {
32
- setUpdatedRows((prev) => ({ ...prev, [key]: row }));
34
+ (row: Partial<R>) => {
35
+ const key = rowKeyGetter(row);
36
+ const addedRowIndex = addedRows.findIndex(
37
+ (r) => rowKeyGetter(r as R) === key
38
+ );
39
+ if (addedRowIndex >= 0) {
40
+ setAddedRows((prev) =>
41
+ prev.map((existingRow, index) =>
42
+ index === addedRowIndex ? { ...existingRow, ...row } : existingRow
43
+ )
44
+ );
45
+ return;
46
+ }
47
+ const updatedRowIndex = updatedRows.findIndex(
48
+ (r) => rowKeyGetter(r as R) === key
49
+ );
50
+ if (updatedRowIndex >= 0) {
51
+ setUpdatedRows((prev) =>
52
+ prev.map((existingRow, index) =>
53
+ index === updatedRowIndex ? { ...existingRow, ...row } : existingRow
54
+ )
55
+ );
56
+ return;
33
57
  }
58
+
59
+ setUpdatedRows((prev) => [...prev, row]);
34
60
  },
35
- [addedRows, updatedRows]
61
+ [rowKeyGetter, addedRows, updatedRows]
36
62
  );
37
63
 
38
- const clearChangedRows = useCallback((keys?: string[]) => {
39
- if (!keys) {
40
- setAddedRows({});
41
- setUpdatedRows({});
42
- return;
43
- }
44
- setAddedRows((prev) => pickBy(prev, (_, key) => !keys.includes(key)));
45
- setUpdatedRows((prev) => pickBy(prev, (_, key) => !keys.includes(key)));
46
- }, []);
64
+ const clearChangedRows = useCallback(
65
+ (keys?: string[]) => {
66
+ if (!keys) {
67
+ setAddedRows([]);
68
+ setUpdatedRows([]);
69
+ return;
70
+ }
71
+ setAddedRows((prev) =>
72
+ prev.filter((row) => !keys.includes(rowKeyGetter(row as R)))
73
+ );
74
+ setUpdatedRows((prev) =>
75
+ prev.filter((row) => !keys.includes(rowKeyGetter(row as R)))
76
+ );
77
+ },
78
+ [rowKeyGetter]
79
+ );
47
80
 
48
81
  return {
49
82
  addedRows,
@@ -0,0 +1,48 @@
1
+ import { useCallback, useMemo, useState } from 'react';
2
+
3
+ import { Button } from '../../../forms';
4
+ import { Modal } from '../../../layout/Modal';
5
+ import { TriangleExclamationIcon } from '../../../../Icons';
6
+
7
+ export const useRefreshModal = (onConfirm: () => void) => {
8
+ const [isVisible, setIsVisible] = useState(false);
9
+
10
+ const openModal = useCallback(() => {
11
+ setIsVisible(true);
12
+ }, []);
13
+ const closeModal = useCallback(() => {
14
+ setIsVisible(false);
15
+ }, []);
16
+
17
+ const modal = useMemo(
18
+ () =>
19
+ isVisible ? (
20
+ <Modal $width={400}>
21
+ <Modal.Header>Rafraichir</Modal.Header>
22
+ <Modal.ContentWithIcon>
23
+ <TriangleExclamationIcon fill="var(--color-danger-600)" />
24
+ <div>
25
+ Attention : vous avez des modifications en cours. Si vous
26
+ rafraîchissez la liste, ces modifications seront perdues !
27
+ </div>
28
+ </Modal.ContentWithIcon>
29
+ <Modal.Footer>
30
+ <Button onClick={closeModal}>Annuler</Button>
31
+ <Button
32
+ $color="danger"
33
+ style={{ marginLeft: 'auto' }}
34
+ onClick={() => {
35
+ closeModal();
36
+ onConfirm();
37
+ }}
38
+ >
39
+ Rafraîchir
40
+ </Button>
41
+ </Modal.Footer>
42
+ </Modal>
43
+ ) : null,
44
+ [closeModal, isVisible, onConfirm]
45
+ );
46
+
47
+ return { openModal, closeModal, modal };
48
+ };
@@ -1,3 +1,4 @@
1
+ import styled, { css } from 'styled-components';
1
2
  import {
2
3
  DEFAULT_FOOTER_ROW_HEIGHT,
3
4
  DEFAULT_HEADER_ROW_HEIGHT,
@@ -5,11 +6,10 @@ import {
5
6
  SELECTION_CELL_WIDTH,
6
7
  TOOLBAR_HEIGHT,
7
8
  } from './constants';
8
- import styled, { css } from 'styled-components';
9
9
 
10
- import { DataGridCellFCProps } from './types';
11
10
  import { ThemeColor } from '../../../providers/ThemeProvider/types';
12
11
  import { VirtualScrollerFiller } from '../VirtualScroller/styles';
12
+ import { DataGridCellFCProps } from './types';
13
13
 
14
14
  export const DataGridResizeGrip = styled.div<{ $headerColor?: ThemeColor }>`
15
15
  position: absolute;
@@ -304,6 +304,10 @@ type DataGridRowProps = {
304
304
  export const DataGridRow = styled.div<DataGridRowProps>`
305
305
  display: contents;
306
306
 
307
+ &:hover > ${DataGridCell} {
308
+ background-color: var(--color-blue-100);
309
+ }
310
+
307
311
  ${({ $edited }) =>
308
312
  $edited &&
309
313
  css`
@@ -311,6 +315,9 @@ export const DataGridRow = styled.div<DataGridRowProps>`
311
315
  background-color: var(--color-warning-100);
312
316
  color: var(--color-warning-900);
313
317
  }
318
+ &:hover > ${DataGridCell}, &:hover > ${SelectionCell} {
319
+ background-color: var(--color-blue-100);
320
+ }
314
321
  `}
315
322
  `;
316
323
  DataGridRow.displayName = 'DataGridRow';
@@ -67,7 +67,7 @@ type CommonGridColumnProps<R, T> = {
67
67
  export type EditableDataGridColumn<R, T> = CommonGridColumnProps<R, T> & {
68
68
  editable?: boolean;
69
69
  editComponent?: DataGridEditableCellFC<R, T>;
70
- itemToPartialRow?: (row: R, value: T) => Partial<R>;
70
+ itemToPartialRow?: (key: string, row: R, value: T) => Partial<R>;
71
71
  };
72
72
 
73
73
  export type DataGridTextColumn<R> = EditableDataGridColumn<R, string> & {
@@ -208,9 +208,9 @@ export type DataGridContextProps<R> = DataGridProps<R> & {
208
208
 
209
209
  addedRows: DataGridEditedRows<R>;
210
210
  updatedRows: DataGridEditedRows<R>;
211
- editRow: (key: string, row: Partial<R>) => void;
212
- addRow: (key: string, row: R) => void;
213
- updateRow: (key: string, row: Partial<R>) => void;
211
+ editRow: (row: Partial<R>) => void;
212
+ addRow: (row: R) => void;
213
+ updateRow: (row: Partial<R>) => void;
214
214
  clearChangedRows: (keys?: string[]) => void;
215
215
  };
216
216
 
@@ -364,4 +364,4 @@ export type DataGridRefProps = {
364
364
  setSelectedKeys: (keys: string[]) => void;
365
365
  };
366
366
 
367
- export type DataGridEditedRows<R> = Record<string, Partial<R>>;
367
+ export type DataGridEditedRows<R> = Partial<R>[];
@@ -408,11 +408,12 @@ const convertItemToPartialRow = <
408
408
  R extends Record<string, any>,
409
409
  T extends Record<string, any>
410
410
  >(
411
+ key: string,
411
412
  row: R,
412
413
  item: T | null,
413
414
  columnMapping: Record<keyof R, keyof T>
414
415
  ): Partial<R> => {
415
- const partialRow = {} as Partial<R>;
416
+ const partialRow = { Id: key } as unknown as Partial<R>;
416
417
  Object.entries(columnMapping).forEach(([key, value]: [keyof R, keyof T]) => {
417
418
  partialRow[key] = (item?.[value] ?? null) as R[keyof R];
418
419
  });
@@ -473,8 +474,8 @@ export const sqlForeignListColumn = <
473
474
  );
474
475
  }
475
476
  ),
476
- itemToPartialRow: (row, value) =>
477
- convertItemToPartialRow(row, value, columnMapping),
477
+ itemToPartialRow: (key, row, value) =>
478
+ convertItemToPartialRow(key, row, value, columnMapping),
478
479
  };
479
480
  return merge(column, options);
480
481
  };
@@ -94,8 +94,12 @@ export const ModalContentWithIcon = styled.div.attrs({
94
94
 
95
95
  & > svg {
96
96
  margin: var(--space-2);
97
- width: var(--space-8);
98
- height: var(--space-8);
97
+ width: var(--space-6);
98
+ height: var(--space-6);
99
+ }
100
+
101
+ & > :not(svg) {
102
+ flex: 1;
99
103
  }
100
104
  `;
101
105
 
@@ -8,30 +8,34 @@ export const HighlightedText: FC<
8
8
  } & HTMLAttributes<HTMLSpanElement>
9
9
  > = ({ text, highlight, ...props }) => {
10
10
  const textWithoutHtml = useMemo(() => extractTextFromHTML(text), [text]);
11
- console.log('textWithoutHtml', textWithoutHtml);
12
- if (!highlight) return <span {...props}>{textWithoutHtml}</span>;
11
+ const parts = useMemo(
12
+ () =>
13
+ highlight
14
+ ? textWithoutHtml
15
+ ?.split(new RegExp(`(${escapeForRegExp(highlight)})`, 'gi'))
16
+ .filter(Boolean) ?? []
17
+ : [],
18
+ [highlight, textWithoutHtml]
19
+ );
13
20
 
14
- const parts =
15
- textWithoutHtml?.split(
16
- new RegExp(`(${escapeForRegExp(highlight)})`, 'gi')
17
- ) ?? [];
21
+ if (!highlight || !parts.length) {
22
+ return <span {...props}>{textWithoutHtml}</span>;
23
+ }
18
24
 
19
25
  return (
20
26
  <span {...props}>
21
- {parts
22
- .filter((part) => !!part)
23
- .map((part, index) => (
24
- <span
25
- key={index}
26
- style={
27
- part.toLowerCase() === highlight.toLowerCase()
28
- ? { backgroundColor: 'gold' }
29
- : {}
30
- }
31
- >
32
- {part}
33
- </span>
34
- ))}
27
+ {parts.map((part, index) => (
28
+ <span
29
+ key={index}
30
+ style={
31
+ part.toLowerCase() === highlight.toLowerCase()
32
+ ? { backgroundColor: 'gold' }
33
+ : {}
34
+ }
35
+ >
36
+ {part}
37
+ </span>
38
+ ))}
35
39
  </span>
36
40
  );
37
41
  };