@boarteam/boar-pack-common-frontend 3.4.0 → 4.0.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 (184) hide show
  1. package/dist/components/ChangesModal/ChangesModal.d.ts +37 -0
  2. package/dist/components/ChangesModal/ChangesModal.js +143 -0
  3. package/dist/components/ChangesModal/ChangesModal.js.map +1 -0
  4. package/dist/components/ChangesModal/ChangesTab.d.ts +7 -0
  5. package/dist/components/ChangesModal/ChangesTab.js +29 -0
  6. package/dist/components/ChangesModal/ChangesTab.js.map +1 -0
  7. package/dist/components/ChangesModal/ConflictsTab.d.ts +10 -0
  8. package/dist/components/ChangesModal/ConflictsTab.js +105 -0
  9. package/dist/components/ChangesModal/ConflictsTab.js.map +1 -0
  10. package/dist/components/ChangesModal/ErrorsTab.d.ts +5 -0
  11. package/dist/components/ChangesModal/ErrorsTab.js +27 -0
  12. package/dist/components/ChangesModal/ErrorsTab.js.map +1 -0
  13. package/dist/components/ChangesModal/NewRecordsTab.d.ts +12 -0
  14. package/dist/components/ChangesModal/NewRecordsTab.js +24 -0
  15. package/dist/components/ChangesModal/NewRecordsTab.js.map +1 -0
  16. package/dist/components/ChangesModal/ResultsTab.d.ts +8 -0
  17. package/dist/components/ChangesModal/ResultsTab.js +12 -0
  18. package/dist/components/ChangesModal/ResultsTab.js.map +1 -0
  19. package/dist/components/ChangesModal/index.d.ts +1 -0
  20. package/dist/components/ChangesModal/index.js +5 -0
  21. package/dist/components/ChangesModal/index.js.map +1 -0
  22. package/dist/components/Comment/Comment.d.ts +12 -0
  23. package/dist/components/Comment/Comment.js +25 -0
  24. package/dist/components/Comment/Comment.js.map +1 -0
  25. package/dist/components/Comment/CommentAvatar.d.ts +7 -0
  26. package/dist/components/Comment/CommentAvatar.js +22 -0
  27. package/dist/components/Comment/CommentAvatar.js.map +1 -0
  28. package/dist/components/Comment/CommentForm.d.ts +6 -0
  29. package/dist/components/Comment/CommentForm.js +17 -0
  30. package/dist/components/Comment/CommentForm.js.map +1 -0
  31. package/dist/components/Comment/CommentFormModal.d.ts +10 -0
  32. package/dist/components/Comment/CommentFormModal.js +13 -0
  33. package/dist/components/Comment/CommentFormModal.js.map +1 -0
  34. package/dist/components/Comment/index.d.ts +5 -0
  35. package/dist/components/Comment/index.js +11 -0
  36. package/dist/components/Comment/index.js.map +1 -0
  37. package/dist/components/Descriptions/Descriptions.d.ts +4 -0
  38. package/dist/components/Descriptions/Descriptions.js +218 -0
  39. package/dist/components/Descriptions/Descriptions.js.map +1 -0
  40. package/dist/components/Descriptions/DescriptionsCreateModal.d.ts +3 -0
  41. package/dist/components/Descriptions/DescriptionsCreateModal.js +30 -0
  42. package/dist/components/Descriptions/DescriptionsCreateModal.js.map +1 -0
  43. package/dist/components/Descriptions/descriptionTypes.d.ts +68 -0
  44. package/dist/components/Descriptions/descriptionTypes.js +9 -0
  45. package/dist/components/Descriptions/descriptionTypes.js.map +1 -0
  46. package/dist/components/Descriptions/index.d.ts +5 -0
  47. package/dist/components/Descriptions/index.js +11 -0
  48. package/dist/components/Descriptions/index.js.map +1 -0
  49. package/dist/components/Descriptions/useContentViewMode.d.ts +10 -0
  50. package/dist/components/Descriptions/useContentViewMode.js +19 -0
  51. package/dist/components/Descriptions/useContentViewMode.js.map +1 -0
  52. package/dist/components/Descriptions/useDescriptionColumns.d.ts +8 -0
  53. package/dist/components/Descriptions/useDescriptionColumns.js +27 -0
  54. package/dist/components/Descriptions/useDescriptionColumns.js.map +1 -0
  55. package/dist/components/Inputs/DateRange.d.ts +8 -0
  56. package/dist/components/Inputs/DateRange.js +61 -0
  57. package/dist/components/Inputs/DateRange.js.map +1 -0
  58. package/dist/components/Inputs/MultiStringSelect.d.ts +5 -0
  59. package/dist/components/Inputs/MultiStringSelect.js +10 -0
  60. package/dist/components/Inputs/MultiStringSelect.js.map +1 -0
  61. package/dist/components/Inputs/NumberInputHandlingNewRecord.d.ts +3 -0
  62. package/dist/components/Inputs/NumberInputHandlingNewRecord.js +11 -0
  63. package/dist/components/Inputs/NumberInputHandlingNewRecord.js.map +1 -0
  64. package/dist/components/Inputs/NumberSwitcher.d.ts +8 -0
  65. package/dist/components/Inputs/NumberSwitcher.js +13 -0
  66. package/dist/components/Inputs/NumberSwitcher.js.map +1 -0
  67. package/dist/components/Inputs/Password.d.ts +3 -0
  68. package/dist/components/Inputs/Password.js +18 -0
  69. package/dist/components/Inputs/Password.js.map +1 -0
  70. package/dist/components/Inputs/RelationSelect.d.ts +21 -0
  71. package/dist/components/Inputs/RelationSelect.js +58 -0
  72. package/dist/components/Inputs/RelationSelect.js.map +1 -0
  73. package/dist/components/Inputs/SearchSelect.d.ts +12 -0
  74. package/dist/components/Inputs/SearchSelect.js +40 -0
  75. package/dist/components/Inputs/SearchSelect.js.map +1 -0
  76. package/dist/components/Inputs/filterDropdowns.d.ts +11 -0
  77. package/dist/components/Inputs/filterDropdowns.js +56 -0
  78. package/dist/components/Inputs/filterDropdowns.js.map +1 -0
  79. package/dist/components/Inputs/index.d.ts +9 -0
  80. package/dist/components/Inputs/index.js +13 -0
  81. package/dist/components/Inputs/index.js.map +1 -0
  82. package/dist/components/Inputs/useCheckConnection.d.ts +13 -0
  83. package/dist/components/Inputs/useCheckConnection.js +53 -0
  84. package/dist/components/Inputs/useCheckConnection.js.map +1 -0
  85. package/dist/components/List/List.d.ts +3 -0
  86. package/dist/components/List/List.js +144 -0
  87. package/dist/components/List/List.js.map +1 -0
  88. package/dist/components/List/index.d.ts +3 -0
  89. package/dist/components/List/index.js +9 -0
  90. package/dist/components/List/index.js.map +1 -0
  91. package/dist/components/List/listTypes.d.ts +30 -0
  92. package/dist/components/List/listTypes.js +3 -0
  93. package/dist/components/List/listTypes.js.map +1 -0
  94. package/dist/components/QuestionMarkHint/QuestionMarkHint.d.ts +7 -0
  95. package/dist/components/QuestionMarkHint/QuestionMarkHint.js +16 -0
  96. package/dist/components/QuestionMarkHint/QuestionMarkHint.js.map +1 -0
  97. package/dist/components/QuestionMarkHint/index.d.ts +1 -0
  98. package/dist/components/QuestionMarkHint/index.js +5 -0
  99. package/dist/components/QuestionMarkHint/index.js.map +1 -0
  100. package/dist/components/Table/BulkDeleteButton.d.ts +8 -0
  101. package/dist/components/Table/BulkDeleteButton.js +27 -0
  102. package/dist/components/Table/BulkDeleteButton.js.map +1 -0
  103. package/dist/components/Table/BulkEditButton.d.ts +11 -0
  104. package/dist/components/Table/BulkEditButton.js +66 -0
  105. package/dist/components/Table/BulkEditButton.js.map +1 -0
  106. package/dist/components/Table/CreateEntityModal.d.ts +25 -0
  107. package/dist/components/Table/CreateEntityModal.js +23 -0
  108. package/dist/components/Table/CreateEntityModal.js.map +1 -0
  109. package/dist/components/Table/DeleteButton.d.ts +4 -0
  110. package/dist/components/Table/DeleteButton.js +28 -0
  111. package/dist/components/Table/DeleteButton.js.map +1 -0
  112. package/dist/components/Table/Table.d.ts +6 -0
  113. package/dist/components/Table/Table.js +154 -0
  114. package/dist/components/Table/Table.js.map +1 -0
  115. package/dist/components/Table/getTableDataQueryParams.d.ts +15 -0
  116. package/dist/components/Table/getTableDataQueryParams.js +37 -0
  117. package/dist/components/Table/getTableDataQueryParams.js.map +1 -0
  118. package/dist/components/Table/index.d.ts +7 -0
  119. package/dist/components/Table/index.js +14 -0
  120. package/dist/components/Table/index.js.map +1 -0
  121. package/dist/components/Table/tableTools.d.ts +38 -0
  122. package/dist/components/Table/tableTools.js +185 -0
  123. package/dist/components/Table/tableTools.js.map +1 -0
  124. package/dist/components/Table/tableTypes.d.ts +145 -0
  125. package/dist/components/Table/tableTypes.js +3 -0
  126. package/dist/components/Table/tableTypes.js.map +1 -0
  127. package/dist/components/Table/useBulkEditing.d.ts +30 -0
  128. package/dist/components/Table/useBulkEditing.js +79 -0
  129. package/dist/components/Table/useBulkEditing.js.map +1 -0
  130. package/dist/components/Table/useColumnsSets.d.ts +22 -0
  131. package/dist/components/Table/useColumnsSets.js +82 -0
  132. package/dist/components/Table/useColumnsSets.js.map +1 -0
  133. package/dist/components/Table/useCreation.d.ts +21 -0
  134. package/dist/components/Table/useCreation.js +75 -0
  135. package/dist/components/Table/useCreation.js.map +1 -0
  136. package/dist/components/Table/useEditableTable.d.ts +7 -0
  137. package/dist/components/Table/useEditableTable.js +63 -0
  138. package/dist/components/Table/useEditableTable.js.map +1 -0
  139. package/dist/components/Table/useImportExport.d.ts +35 -0
  140. package/dist/components/Table/useImportExport.js +207 -0
  141. package/dist/components/Table/useImportExport.js.map +1 -0
  142. package/dist/components/index.d.ts +6 -0
  143. package/dist/components/index.js +10 -0
  144. package/dist/components/index.js.map +1 -0
  145. package/dist/index.d.ts +2 -0
  146. package/dist/index.js +6 -0
  147. package/dist/index.js.map +1 -0
  148. package/dist/tools/ApiError.d.ts +16 -0
  149. package/dist/tools/ApiError.js +13 -0
  150. package/dist/tools/ApiError.js.map +1 -0
  151. package/dist/tools/WebsocketClient.d.ts +38 -0
  152. package/dist/tools/WebsocketClient.js +114 -0
  153. package/dist/tools/WebsocketClient.js.map +1 -0
  154. package/dist/tools/index.d.ts +6 -0
  155. package/dist/tools/index.js +10 -0
  156. package/dist/tools/index.js.map +1 -0
  157. package/dist/tools/numberTools.d.ts +1 -0
  158. package/dist/tools/numberTools.js +10 -0
  159. package/dist/tools/numberTools.js.map +1 -0
  160. package/dist/tools/safetyRun.d.ts +1 -0
  161. package/dist/tools/safetyRun.js +9 -0
  162. package/dist/tools/safetyRun.js.map +1 -0
  163. package/dist/tools/useFullscreen.d.ts +6 -0
  164. package/dist/tools/useFullscreen.js +56 -0
  165. package/dist/tools/useFullscreen.js.map +1 -0
  166. package/dist/tools/useTabs.d.ts +2 -0
  167. package/dist/tools/useTabs.js +18 -0
  168. package/dist/tools/useTabs.js.map +1 -0
  169. package/package.json +7 -4
  170. package/src/components/ChangesModal/ChangesModal.tsx +1 -3
  171. package/src/components/ChangesModal/ChangesTab.tsx +7 -7
  172. package/src/components/ChangesModal/ConflictsTab.tsx +3 -3
  173. package/src/components/Descriptions/Descriptions.tsx +13 -36
  174. package/src/components/Descriptions/descriptionTypes.ts +0 -1
  175. package/src/components/Inputs/RelationSelect.tsx +1 -1
  176. package/src/components/Inputs/filterDropdowns.tsx +8 -5
  177. package/src/components/Table/BulkEditButton.tsx +4 -4
  178. package/src/components/Table/Table.tsx +7 -29
  179. package/src/components/Table/tableTools.ts +1 -1
  180. package/src/components/Table/tableTypes.ts +1 -5
  181. package/src/components/Table/useBulkEditing.tsx +1 -1
  182. package/src/components/Table/useCreation.tsx +1 -1
  183. package/src/components/Table/useImportExport.tsx +7 -4
  184. package/src/tools/WebsocketClient.ts +9 -1
@@ -0,0 +1,37 @@
1
+ import { ProColumns } from "@ant-design/pro-components";
2
+ import { TCreatedRecordsColumnsConfig } from "./NewRecordsTab";
3
+ import { TDiffResult } from "../Table/useImportExport";
4
+ export type TServerErrorItem = {
5
+ field: string;
6
+ message: string;
7
+ };
8
+ export type TRelationalFields = Map<string, {
9
+ key: string;
10
+ data: {
11
+ [key: string]: any;
12
+ };
13
+ }>;
14
+ export type TImportConflict = {
15
+ id: number;
16
+ version: number;
17
+ fields: Array<{
18
+ field: string;
19
+ current_value: any;
20
+ imported_value: any;
21
+ }>;
22
+ };
23
+ export type TImportResponse = {
24
+ errors?: Array<TServerErrorItem>;
25
+ conflicts?: Array<TImportConflict>;
26
+ created_count: number;
27
+ updated_count: number;
28
+ };
29
+ export declare function ChangesModal<Entity, ImportRequestParams>({ onClose, onCommit, changes, relationalFields, originRecordsColumnsConfig, changedRecordsColumnsConfig, createdRecordsColumnsConfig, }: {
30
+ onCommit: (params: ImportRequestParams) => Promise<TImportResponse>;
31
+ onClose: () => void;
32
+ changes?: TDiffResult<Entity>;
33
+ relationalFields?: TRelationalFields;
34
+ originRecordsColumnsConfig: ProColumns<Entity>[];
35
+ changedRecordsColumnsConfig: ProColumns<Entity>[];
36
+ createdRecordsColumnsConfig: TCreatedRecordsColumnsConfig<Entity>;
37
+ }): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,143 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ChangesModal = ChangesModal;
4
+ const tslib_1 = require("tslib");
5
+ const jsx_runtime_1 = require("react/jsx-runtime");
6
+ const antd_1 = require("antd");
7
+ const antd_style_1 = require("antd-style");
8
+ const react_1 = require("react");
9
+ const ConflictsTab_1 = tslib_1.__importDefault(require("./ConflictsTab"));
10
+ const ErrorsTab_1 = tslib_1.__importDefault(require("./ErrorsTab"));
11
+ const ResultsTab_1 = tslib_1.__importDefault(require("./ResultsTab"));
12
+ const NewRecordsTab_1 = tslib_1.__importDefault(require("./NewRecordsTab"));
13
+ const ChangesTab_1 = tslib_1.__importDefault(require("./ChangesTab"));
14
+ var ModalTabs;
15
+ (function (ModalTabs) {
16
+ ModalTabs["changes"] = "changes";
17
+ ModalTabs["newRecords"] = "newRecords";
18
+ ModalTabs["errors"] = "errors";
19
+ ModalTabs["results"] = "results";
20
+ ModalTabs["conflicts"] = "conflicts";
21
+ })(ModalTabs || (ModalTabs = {}));
22
+ const useStyles = (0, antd_style_1.createStyles)(() => {
23
+ return {
24
+ changesModal: {
25
+ ".ant-modal-content": {
26
+ width: 800,
27
+ },
28
+ ".ant-table-content": {
29
+ overflowX: "auto",
30
+ },
31
+ "ul": {
32
+ maxHeight: 500,
33
+ overflowY: "auto",
34
+ },
35
+ },
36
+ };
37
+ });
38
+ function ChangesModal({ onClose, onCommit, changes, relationalFields, originRecordsColumnsConfig, changedRecordsColumnsConfig, createdRecordsColumnsConfig, }) {
39
+ const { styles } = useStyles();
40
+ const [activeTab, setActiveTab] = (0, react_1.useState)(ModalTabs.changes);
41
+ const [isLoading, setIsLoading] = (0, react_1.useState)(false);
42
+ const [importResponse, setImportResponse] = (0, react_1.useState)();
43
+ const [serverErrors, setServerErrors] = (0, react_1.useState)([]);
44
+ const [resolvedData, setResolvedData] = (0, react_1.useState)();
45
+ (0, react_1.useEffect)(() => {
46
+ if (serverErrors.length > 0) {
47
+ setActiveTab(ModalTabs.errors);
48
+ }
49
+ }, [serverErrors.length]);
50
+ if (!changes)
51
+ return null;
52
+ const { created, updated, tableData } = changes;
53
+ const onCancel = () => {
54
+ setActiveTab(ModalTabs.changes);
55
+ setImportResponse(undefined);
56
+ setServerErrors([]);
57
+ setResolvedData([]);
58
+ onClose();
59
+ };
60
+ const handleCommitClick = async () => {
61
+ // TODO: Client validation
62
+ // ...
63
+ setServerErrors([]);
64
+ setIsLoading(true);
65
+ const modifiedSource = (resolvedData && resolvedData.length > 0)
66
+ ? resolvedData
67
+ : updated;
68
+ const payload = {
69
+ new: created,
70
+ modified: modifiedSource,
71
+ };
72
+ onCommit(payload).then((res) => {
73
+ setImportResponse(res);
74
+ // Check conflicts
75
+ if (res.conflicts?.length) {
76
+ setActiveTab(ModalTabs.conflicts);
77
+ antd_1.message.error("There are conflicts in the import. Please resolve them.");
78
+ return;
79
+ }
80
+ setActiveTab(ModalTabs.results);
81
+ }).catch((err) => {
82
+ // TODO: Simplify
83
+ const status = err?.status || err?.statusCode || err?.response?.status;
84
+ const payload = err?.body || err?.response?.data || err?.data || err;
85
+ if ((status === 400 || payload?.statusCode === 400) && Array.isArray(payload?.errors)) {
86
+ setServerErrors(payload.errors);
87
+ antd_1.message.error(payload.message || "Validation error");
88
+ return;
89
+ }
90
+ console.error("Commit failed:", err);
91
+ antd_1.message.error("Unexpected error while committing changes");
92
+ }).finally(() => {
93
+ setIsLoading(false);
94
+ });
95
+ };
96
+ const tabList = [
97
+ {
98
+ key: ModalTabs.changes,
99
+ tab: "Changed values",
100
+ disabled: tableData.length === 0,
101
+ label: tableData.length ? ((0, jsx_runtime_1.jsx)(antd_1.Badge, { size: "small", color: "blue", count: tableData.length, children: "Changed Values" })) : "Changed Values",
102
+ children: (0, jsx_runtime_1.jsx)(ChangesTab_1.default, { changedRecordsColumnsConfig: changedRecordsColumnsConfig, updated: tableData }),
103
+ },
104
+ {
105
+ key: ModalTabs.newRecords,
106
+ tab: "New records",
107
+ disabled: created.length === 0,
108
+ label: created.length ? ((0, jsx_runtime_1.jsx)(antd_1.Badge, { size: "small", color: "blue", count: created.length, children: "New Records" })) : "New Records",
109
+ children: (0, jsx_runtime_1.jsx)(NewRecordsTab_1.default, { createdRecordsColumnsConfig: createdRecordsColumnsConfig, created: created }),
110
+ },
111
+ {
112
+ key: ModalTabs.errors,
113
+ tab: "Import errors",
114
+ disabled: serverErrors.length === 0,
115
+ label: serverErrors.length ? ((0, jsx_runtime_1.jsx)(antd_1.Badge, { size: "small", count: serverErrors.length, children: "Errors" })) : "Errors",
116
+ children: (0, jsx_runtime_1.jsx)(ErrorsTab_1.default, { serverErrors: serverErrors }),
117
+ },
118
+ {
119
+ key: ModalTabs.conflicts,
120
+ tab: "Import conflicts",
121
+ disabled: !importResponse || importResponse.conflicts?.length === 0,
122
+ label: importResponse?.conflicts?.length ? ((0, jsx_runtime_1.jsx)(antd_1.Badge, { size: "small", count: importResponse.conflicts.length, children: "Conflicts" })) : "Conflicts",
123
+ children: (0, jsx_runtime_1.jsx)(ConflictsTab_1.default, { conflicts: importResponse?.conflicts, setResolvedData: setResolvedData, relationalFields: relationalFields, originColumns: originRecordsColumnsConfig }),
124
+ },
125
+ {
126
+ key: ModalTabs.results,
127
+ tab: "Import results",
128
+ disabled: !importResponse || !!importResponse.conflicts?.length,
129
+ label: "Results",
130
+ children: (0, jsx_runtime_1.jsx)(ResultsTab_1.default, { importStatistic: {
131
+ created: importResponse?.created_count || 0,
132
+ updated: importResponse?.updated_count || 0,
133
+ } }),
134
+ },
135
+ ];
136
+ return ((0, jsx_runtime_1.jsx)(antd_1.Modal, { title: "Preview changes", open: true, onCancel: onCancel, footer: [
137
+ (0, jsx_runtime_1.jsx)(antd_1.Button, { onClick: onCancel, children: "Close" }, "close"),
138
+ (0, jsx_runtime_1.jsx)(antd_1.Button, { loading: isLoading, type: "primary", onClick: handleCommitClick, disabled: importResponse?.conflicts?.length === 0
139
+ || serverErrors.length > 0
140
+ || updated.length === 0 && created.length === 0, children: "Commit" }, "approve"),
141
+ ], className: styles.changesModal, children: (0, jsx_runtime_1.jsx)(antd_1.Tabs, { activeKey: activeTab, onChange: setActiveTab, defaultActiveKey: "1", items: tabList }) }));
142
+ }
143
+ //# sourceMappingURL=ChangesModal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChangesModal.js","sourceRoot":"","sources":["../../../src/components/ChangesModal/ChangesModal.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { ProColumns } from "@ant-design/pro-components";
2
+ import { TDiffResult } from "../Table/useImportExport";
3
+ declare function ChangesTab<Entity>({ updated, changedRecordsColumnsConfig }: {
4
+ updated: TDiffResult<Entity>['tableData'];
5
+ changedRecordsColumnsConfig: ProColumns<Entity>[];
6
+ }): import("react/jsx-runtime").JSX.Element | import("react/jsx-runtime").JSX.Element[];
7
+ export default ChangesTab;
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const antd_1 = require("antd");
6
+ const pro_table_1 = tslib_1.__importDefault(require("@ant-design/pro-table"));
7
+ function ChangesTab({ updated, changedRecordsColumnsConfig }) {
8
+ if (!updated.length) {
9
+ return (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: "No changes found." });
10
+ }
11
+ const updateColumns = [
12
+ ...changedRecordsColumnsConfig,
13
+ {
14
+ title: "Changes",
15
+ dataIndex: "diff",
16
+ key: "diff",
17
+ render: (_dom, entity) => ((0, jsx_runtime_1.jsx)("div", { style: { display: "flex", flexDirection: "column", gap: "8px" }, children: entity.diff.map((change, index) => {
18
+ const c = change;
19
+ return ((0, jsx_runtime_1.jsxs)("div", { style: { display: "flex", alignItems: "center" }, children: [(0, jsx_runtime_1.jsx)(antd_1.Tag, { color: "blue", children: c.path?.join(".") }), c.lhs ? `${c.lhs.toString()} →` : "- →", " ", c.rhs ? c.rhs : c.rhs === false ? 'false' : '-'] }, index));
20
+ }) })),
21
+ },
22
+ ];
23
+ return [
24
+ (0, jsx_runtime_1.jsx)("h3", { children: "Changed Values (Local Comparing)" }, 'changes-header'),
25
+ (0, jsx_runtime_1.jsx)(pro_table_1.default, { dataSource: updated, columns: updateColumns, rowKey: 'id', search: false, toolBarRender: false }, 'changes-data')
26
+ ];
27
+ }
28
+ exports.default = ChangesTab;
29
+ //# sourceMappingURL=ChangesTab.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChangesTab.js","sourceRoot":"","sources":["../../../src/components/ChangesModal/ChangesTab.tsx"],"names":[],"mappings":";;;;AAAA,+BAA2B;AAG3B,8EAA6C;AAE7C,SAAS,UAAU,CAAU,EAAE,OAAO,EAAE,2BAA2B,EAGlE;IACC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QACpB,OAAO,iFAEJ,CAAA;IACL,CAAC;IAED,MAAM,aAAa,GAAqC;QACtD,GAAI,2BAA2E;QAC/E;YACE,KAAK,EAAE,SAAS;YAChB,SAAS,EAAE,MAAM;YACjB,GAAG,EAAE,MAAM;YACX,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,CACxB,gCAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,YACjE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;oBACjC,MAAM,CAAC,GAAG,MAAgD,CAAC;oBAC3D,OAAO,CACL,iCAAiB,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,aAC/D,uBAAC,UAAG,IAAC,KAAK,EAAC,MAAM,YAAE,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,GAAO,EAC1C,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,OAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,KAFlF,KAAK,CAGT,CACP,CAAC;gBACJ,CAAC,CAAC,GACE,CACP;SACF;KACF,CAAC;IAEF,OAAO;QACL,+EAAQ,gBAAgB,CAAsC;QAC9D,uBAAC,mBAAQ,IAEP,UAAU,EAAE,OAAO,EACnB,OAAO,EAAE,aAAa,EACtB,MAAM,EAAC,IAAI,EACX,MAAM,EAAE,KAAK,EACb,aAAa,EAAE,KAAK,IALhB,cAAc,CAMlB;KACH,CAAA;AACH,CAAC;AAED,kBAAe,UAAU,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { Dispatch, SetStateAction } from "react";
2
+ import { TImportResponse, TRelationalFields } from "./ChangesModal";
3
+ import { ProColumns } from "@ant-design/pro-components";
4
+ declare function ConflictsTab<Entity>({ conflicts, relationalFields, setResolvedData, originColumns, }: {
5
+ conflicts?: TImportResponse['conflicts'];
6
+ relationalFields?: TRelationalFields;
7
+ setResolvedData?: Dispatch<SetStateAction<Entity[]>>;
8
+ originColumns: ProColumns<Entity>[];
9
+ }): import("react/jsx-runtime").JSX.Element | import("react/jsx-runtime").JSX.Element[];
10
+ export default ConflictsTab;
@@ -0,0 +1,105 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const jsx_runtime_1 = require("react/jsx-runtime");
4
+ const index_1 = require("../../index");
5
+ const antd_1 = require("antd");
6
+ const react_1 = require("react");
7
+ const lodash_1 = require("lodash");
8
+ const antd_style_1 = require("antd-style");
9
+ const icons_1 = require("@ant-design/icons");
10
+ const useStyles = (0, antd_style_1.createStyles)(() => {
11
+ return {
12
+ conflictsStyle: {
13
+ ".ant-descriptions-row > *:nth-child(1), .ant-descriptions-row > *:nth-child(2)": {},
14
+ ".ant-descriptions-row > *:nth-child(3)": {},
15
+ ".ant-descriptions-row > *:nth-child(4)": {
16
+ backgroundColor: "#f0fff0 !important",
17
+ },
18
+ },
19
+ };
20
+ });
21
+ const getCurrentKey = (field) => {
22
+ return `${field}-current`;
23
+ };
24
+ const getNormalizedKey = (field) => {
25
+ return field.replace('_id', '');
26
+ };
27
+ function ConflictsTab({ conflicts, relationalFields, setResolvedData, originColumns, }) {
28
+ if (!conflicts || conflicts.length === 0) {
29
+ return (0, jsx_runtime_1.jsx)("p", { children: "No conflicts found." });
30
+ }
31
+ const getRelationalData = (key, value) => {
32
+ if (relationalFields?.has(key)) {
33
+ const relation = relationalFields.get(key);
34
+ return relation?.data[value] ?? null;
35
+ }
36
+ return value;
37
+ };
38
+ /*Initial value based on received conflicts
39
+ {
40
+ field: 'importing field value',
41
+ field-current: 'current field name from server',
42
+ ...
43
+ }*/
44
+ const [resolvedData, setLocalResolvedData] = (0, react_1.useState)(conflicts.map(conflict => (conflict.fields.reduce((acc, currentValue) => {
45
+ const key = getNormalizedKey(currentValue.field);
46
+ acc[key] = getRelationalData(key, currentValue.imported_value);
47
+ acc[getCurrentKey(key)] = getRelationalData(key, currentValue.current_value);
48
+ return acc;
49
+ }, {}))));
50
+ (0, react_1.useEffect)(() => {
51
+ if (!setResolvedData)
52
+ return;
53
+ const payload = resolvedData.map((obj, i) => {
54
+ const data = { ...obj };
55
+ // Remove "current" postfix key from the resolved data
56
+ Object.keys(obj).forEach(key => {
57
+ if (key.endsWith('-current')) {
58
+ delete data[key];
59
+ }
60
+ });
61
+ return {
62
+ id: conflicts[i].id,
63
+ ...data,
64
+ version: conflicts[i].version,
65
+ };
66
+ });
67
+ setResolvedData(payload);
68
+ }, [resolvedData, conflicts, setResolvedData]);
69
+ const { styles } = useStyles();
70
+ const useCurrentValue = (conflict, field) => {
71
+ const key = getNormalizedKey(field);
72
+ // Update the resolved data for this conflict
73
+ setLocalResolvedData(prev => {
74
+ const newData = [...prev];
75
+ const index = conflicts.indexOf(conflict);
76
+ newData[index] = {
77
+ ...newData[index],
78
+ [key]: newData[index][getCurrentKey(key)],
79
+ };
80
+ return newData;
81
+ });
82
+ };
83
+ const keyedOriginColumns = (0, lodash_1.keyBy)(originColumns, "dataIndex");
84
+ return conflicts.map((conflict, idx) => {
85
+ const conflictColumns = [];
86
+ conflict.fields.forEach(field => {
87
+ const key = getNormalizedKey(field.field);
88
+ const originColumn = keyedOriginColumns[key];
89
+ conflictColumns.push({
90
+ ...originColumn,
91
+ dataIndex: getCurrentKey(key),
92
+ editable: false,
93
+ // Should override render to keep -current value
94
+ render: (node) => node
95
+ });
96
+ conflictColumns.push({
97
+ ...originColumn,
98
+ title: ((0, jsx_runtime_1.jsx)("div", { style: { textAlign: 'center' }, children: (0, jsx_runtime_1.jsx)(antd_1.Tooltip, { title: "Use value from server", children: (0, jsx_runtime_1.jsx)(antd_1.Button, { size: "small", type: "link", icon: (0, jsx_runtime_1.jsx)(icons_1.SwapOutlined, {}), onClick: () => useCurrentValue(conflict, field.field) }) }) })),
99
+ });
100
+ });
101
+ return ((0, jsx_runtime_1.jsxs)("div", { style: { display: "flex", flexDirection: "column", gap: 15, width: "100%" }, children: [(0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsxs)(antd_1.Tag, { color: "error", children: ["ID ", conflict.id] }), (0, jsx_runtime_1.jsxs)(antd_1.Tag, { color: "blue", children: ["Server version: v", conflict.version] })] }), (0, jsx_runtime_1.jsx)("table", { children: (0, jsx_runtime_1.jsx)("thead", { children: (0, jsx_runtime_1.jsxs)("tr", { children: [(0, jsx_runtime_1.jsx)("th", { style: { width: '50%' }, children: "Current (From Server)" }), (0, jsx_runtime_1.jsx)("th", { style: { width: '50%' }, children: "New (Importing)" })] }) }) }), (0, jsx_runtime_1.jsx)(index_1.Descriptions, { size: "small", bordered: true, entity: resolvedData[idx], columns: conflictColumns, column: 2, canEdit: true, mainTitle: null, className: styles.conflictsStyle })] }, idx));
102
+ });
103
+ }
104
+ exports.default = ConflictsTab;
105
+ //# sourceMappingURL=ConflictsTab.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConflictsTab.js","sourceRoot":"","sources":["../../../src/components/ChangesModal/ConflictsTab.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { TServerErrorItem } from "./ChangesModal";
2
+ declare const ErrorsTab: ({ serverErrors, }: {
3
+ serverErrors: TServerErrorItem[];
4
+ }) => import("react/jsx-runtime").JSX.Element | import("react/jsx-runtime").JSX.Element[];
5
+ export default ErrorsTab;
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const jsx_runtime_1 = require("react/jsx-runtime");
4
+ const antd_1 = require("antd");
5
+ const formatField = (field) => {
6
+ const parts = field.split(".");
7
+ if (parts[0] === "new" && parts.length >= 3) {
8
+ const idx = Number(parts[1]);
9
+ return `New #${isNaN(idx) ? parts[1] : idx + 1}: ${parts.slice(2).join(".")}`;
10
+ }
11
+ if (parts[0] === "updated" && parts.length >= 3) {
12
+ const id = parts[1];
13
+ return `Updated ${id}: ${parts.slice(2).join(".")}`;
14
+ }
15
+ return field;
16
+ };
17
+ const ErrorsTab = ({ serverErrors, }) => {
18
+ if (serverErrors.length === 0) {
19
+ return (0, jsx_runtime_1.jsx)("div", { children: "No errors" });
20
+ }
21
+ return ([
22
+ (0, jsx_runtime_1.jsx)("p", { children: "Please fix the following errors and repeat import" }, 'errors-header'),
23
+ (0, jsx_runtime_1.jsx)(antd_1.List, { size: "small", dataSource: serverErrors, renderItem: (err, idx) => ((0, jsx_runtime_1.jsx)(antd_1.List.Item, { children: (0, jsx_runtime_1.jsxs)("div", { style: { display: "flex", flexDirection: "column", gap: 4, width: "100%" }, children: [err.field && (0, jsx_runtime_1.jsx)("div", { children: (0, jsx_runtime_1.jsx)(antd_1.Tag, { color: "error", children: formatField(err.field) }) }), (0, jsx_runtime_1.jsx)("div", { children: err.message }), err.field && (0, jsx_runtime_1.jsxs)("div", { style: { color: "#999" }, children: ["(", err.field, ")"] })] }) }, idx)) }, 'errors-list'),
24
+ ]);
25
+ };
26
+ exports.default = ErrorsTab;
27
+ //# sourceMappingURL=ErrorsTab.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ErrorsTab.js","sourceRoot":"","sources":["../../../src/components/ChangesModal/ErrorsTab.tsx"],"names":[],"mappings":";;;AAAA,+BAAiC;AAGjC,MAAM,WAAW,GAAG,CAAC,KAAa,EAAE,EAAE;IACpC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC/B,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QAC5C,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7B,OAAO,QAAQ,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;IAChF,CAAC;IACD,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QAChD,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACpB,OAAO,WAAW,EAAE,KAAK,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;IACtD,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF,MAAM,SAAS,GAAG,CAAC,EACE,YAAY,GAGhC,EAAE,EAAE;IACH,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO,wDAAoB,CAAC;IAC9B,CAAC;IAED,OAAO,CACL;QACE,+FAAO,eAAe,CAAsD;QAC5E,uBAAC,WAAI,IAEH,IAAI,EAAC,OAAO,EACZ,UAAU,EAAE,YAAY,EACxB,UAAU,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,CACxB,uBAAC,WAAI,CAAC,IAAI,cACR,iCAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,aAC5E,GAAG,CAAC,KAAK,IAAI,0CACZ,uBAAC,UAAG,IAAC,KAAK,EAAC,OAAO,YAAE,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,GAAO,GAC7C,EACN,0CAAM,GAAG,CAAC,OAAO,GAAO,EACvB,GAAG,CAAC,KAAK,IAAI,iCAAK,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,kBAAI,GAAG,CAAC,KAAK,SAAQ,IAC5D,IAPQ,GAAG,CAQP,CACb,IAbG,aAAa,CAcjB;KACH,CACF,CAAC;AACJ,CAAC,CAAC;AAEF,kBAAe,SAAS,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { ProColumns } from "@ant-design/pro-components";
2
+ import { TDiffResult } from "../Table/useImportExport";
3
+ import { TColumnsSet } from "../Table/useColumnsSets";
4
+ export type TCreatedRecordsColumnsConfig<Entity> = {
5
+ columnsSets?: TColumnsSet<Entity>[];
6
+ columns: ProColumns<Entity>[];
7
+ };
8
+ declare function NewRecordsTab<Entity>({ created, createdRecordsColumnsConfig, }: {
9
+ created: TDiffResult<Entity>['created'];
10
+ createdRecordsColumnsConfig: TCreatedRecordsColumnsConfig<Entity>;
11
+ }): import("react/jsx-runtime").JSX.Element | import("react/jsx-runtime").JSX.Element[];
12
+ export default NewRecordsTab;
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const pro_table_1 = tslib_1.__importDefault(require("@ant-design/pro-table"));
6
+ const useColumnsSets_1 = tslib_1.__importDefault(require("../Table/useColumnsSets"));
7
+ function NewRecordsTab({ created, createdRecordsColumnsConfig, }) {
8
+ const { columns, columnsSets } = createdRecordsColumnsConfig;
9
+ const { columnsSetSelect, columnsState, } = (0, useColumnsSets_1.default)({
10
+ columns,
11
+ columnsSets,
12
+ });
13
+ if (!created.length) {
14
+ return (0, jsx_runtime_1.jsx)("p", { children: "No new records found." });
15
+ }
16
+ return [
17
+ (0, jsx_runtime_1.jsx)("h3", { children: "New Records (Local Comparing)" }, 'new-records-header'),
18
+ (0, jsx_runtime_1.jsx)(pro_table_1.default, { dataSource: created, columns: columns, columnsState: columnsState, toolBarRender: (...args) => [
19
+ columnsSetSelect?.() || null,
20
+ ], rowKey: (record, index) => index, search: false }, 'new-records-data'),
21
+ ];
22
+ }
23
+ exports.default = NewRecordsTab;
24
+ //# sourceMappingURL=NewRecordsTab.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NewRecordsTab.js","sourceRoot":"","sources":["../../../src/components/ChangesModal/NewRecordsTab.tsx"],"names":[],"mappings":";;;;AAEA,8EAA6C;AAC7C,qFAAsE;AAOtE,SAAS,aAAa,CAAS,EACE,OAAO,EACP,2BAA2B,GAI3D;IACC,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,2BAA2B,CAAC;IAE7D,MAAM,EACJ,gBAAgB,EAChB,YAAY,GACb,GAAG,IAAA,wBAAc,EAAS;QACzB,OAAO;QACP,WAAW;KACZ,CAAC,CAAC;IAEH,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QACpB,OAAO,kEAA4B,CAAA;IACrC,CAAC;IAED,OAAO;QACL,4EAAQ,oBAAoB,CAAmC;QAC/D,uBAAC,mBAAQ,IAEP,UAAU,EAAE,OAAO,EACnB,OAAO,EAAE,OAAO,EAChB,YAAY,EAAE,YAAY,EAC1B,aAAa,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC;gBAC1B,gBAAgB,EAAE,EAAE,IAAI,IAAI;aAC7B,EACD,MAAM,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,EAChC,MAAM,EAAE,KAAK,IART,kBAAkB,CAStB;KACH,CAAC;AACJ,CAAC;AAED,kBAAe,aAAa,CAAC"}
@@ -0,0 +1,8 @@
1
+ type TImportStatistic = {
2
+ created: number;
3
+ updated: number;
4
+ };
5
+ declare const ResultsTab: ({ importStatistic }: {
6
+ importStatistic: TImportStatistic;
7
+ }) => import("react/jsx-runtime").JSX.Element[];
8
+ export default ResultsTab;
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const jsx_runtime_1 = require("react/jsx-runtime");
4
+ const icons_1 = require("@ant-design/icons");
5
+ const ResultsTab = ({ importStatistic }) => {
6
+ return [
7
+ (0, jsx_runtime_1.jsx)("h3", { children: "Import Results" }, 'results-header'),
8
+ (0, jsx_runtime_1.jsxs)("div", { style: { display: "flex", gap: "16px", alignItems: "center" }, children: [(0, jsx_runtime_1.jsxs)("div", { style: { display: "flex", alignItems: "center" }, children: [(0, jsx_runtime_1.jsx)(icons_1.CheckCircleOutlined, { style: { color: "#52c41a", marginRight: "8px" } }), (0, jsx_runtime_1.jsxs)("span", { children: ["Created: ", importStatistic.created] })] }), (0, jsx_runtime_1.jsxs)("div", { style: { display: "flex", alignItems: "center" }, children: [(0, jsx_runtime_1.jsx)(icons_1.SyncOutlined, { style: { color: "#1890ff", marginRight: "8px" } }), (0, jsx_runtime_1.jsxs)("span", { children: ["Updated: ", importStatistic.updated] })] })] }, 'results-data')
9
+ ];
10
+ };
11
+ exports.default = ResultsTab;
12
+ //# sourceMappingURL=ResultsTab.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ResultsTab.js","sourceRoot":"","sources":["../../../src/components/ChangesModal/ResultsTab.tsx"],"names":[],"mappings":";;;AAAA,6CAAsE;AAOtE,MAAM,UAAU,GAAG,CAAC,EAClB,eAAe,EAGhB,EAAE,EAAE;IACH,OAAO;QACL,6DAAQ,gBAAgB,CAAoB;QAC5C,iCAAwB,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,aACnF,iCAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,aACnD,uBAAC,2BAAmB,IAAC,KAAK,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,KAAK,EAAE,GAAI,EACxE,0DAAgB,eAAe,CAAC,OAAO,IAAQ,IAC3C,EACN,iCAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,aACnD,uBAAC,oBAAY,IAAC,KAAK,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,KAAK,EAAE,GAAI,EACjE,0DAAgB,eAAe,CAAC,OAAO,IAAQ,IAC3C,KARC,cAAc,CASjB;KACP,CAAA;AACH,CAAC,CAAA;AAED,kBAAe,UAAU,CAAC"}
@@ -0,0 +1 @@
1
+ export * from './ChangesModal';
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./ChangesModal"), exports);
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/ChangesModal/index.ts"],"names":[],"mappings":";;;AAAA,yDAA+B"}
@@ -0,0 +1,12 @@
1
+ export interface AuthorProps {
2
+ id: string;
3
+ name: string;
4
+ }
5
+ interface CommentProps {
6
+ key: string;
7
+ content: string;
8
+ author: AuthorProps;
9
+ date: string;
10
+ }
11
+ declare const Comment: React.FC<CommentProps>;
12
+ export default Comment;
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const dayjs_1 = tslib_1.__importDefault(require("dayjs"));
6
+ const antd_style_1 = require("antd-style");
7
+ const CommentAvatar_1 = tslib_1.__importDefault(require("./CommentAvatar"));
8
+ const useStyles = (0, antd_style_1.createStyles)(() => {
9
+ return {
10
+ /**
11
+ * Styles for the ant-descriptions component to show edit icon on hover
12
+ */
13
+ commentStyles: {
14
+ display: 'flex',
15
+ alignItems: 'flex-start',
16
+ gap: '10px'
17
+ }
18
+ };
19
+ });
20
+ const Comment = ({ content, author, date, ...rest }) => {
21
+ const { styles } = useStyles();
22
+ return ((0, jsx_runtime_1.jsxs)("div", { className: styles.commentStyles, ...rest, children: [(0, jsx_runtime_1.jsx)(CommentAvatar_1.default, { author: author }), (0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("strong", { children: author.name }), (0, jsx_runtime_1.jsx)("p", { children: content }), (0, jsx_runtime_1.jsx)("small", { style: { color: '#888' }, children: (0, dayjs_1.default)(date).format('DD.MM.YYYY HH:mm') })] })] }));
23
+ };
24
+ exports.default = Comment;
25
+ //# sourceMappingURL=Comment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Comment.js","sourceRoot":"","sources":["../../../src/components/Comment/Comment.tsx"],"names":[],"mappings":";;;;AAAA,0DAA0B;AAC1B,2CAA0C;AAC1C,4EAA4C;AAc5C,MAAM,SAAS,GAAG,IAAA,yBAAY,EAAC,GAAG,EAAE;IAClC,OAAO;QACL;;WAEG;QACH,aAAa,EAAE;YACb,OAAO,EAAE,MAAM;YACf,UAAU,EAAE,YAAY;YACxB,GAAG,EAAE,MAAM;SACZ;KACF,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,MAAM,OAAO,GAA2B,CAAC,EACvC,OAAO,EACP,MAAM,EACN,IAAI,EACJ,GAAG,IAAI,EACR,EAAE,EAAE;IACH,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,EAAE,CAAC;IAE/B,OAAO,CACL,iCACE,SAAS,EAAE,MAAM,CAAC,aAAa,KAC3B,IAAI,aAER,uBAAC,uBAAa,IAAC,MAAM,EAAE,MAAM,GAAI,EACjC,4CACE,6CAAS,MAAM,CAAC,IAAI,GAAU,EAC9B,wCAAI,OAAO,GAAK,EAChB,kCAAO,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,YAAG,IAAA,eAAK,EAAC,IAAI,CAAC,CAAC,MAAM,CAAC,kBAAkB,CAAC,GAAS,IAC7E,IACF,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,kBAAe,OAAO,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { AuthorProps } from "./Comment";
2
+ import React from "react";
3
+ interface CommentProps {
4
+ author: AuthorProps;
5
+ }
6
+ declare const CommentAvatar: React.FC<CommentProps>;
7
+ export default CommentAvatar;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const jsx_runtime_1 = require("react/jsx-runtime");
4
+ const antd_1 = require("antd");
5
+ const ColorList = [
6
+ '#f56a00',
7
+ '#7265e6',
8
+ '#ffbf00',
9
+ '#00a2ae',
10
+ '#b45d7e',
11
+ '#ace665',
12
+ '#6e3aaf',
13
+ '#54ae00'
14
+ ];
15
+ const getColorByAuthor = (authorId) => {
16
+ return ColorList[parseInt(authorId, 36) % ColorList.length];
17
+ };
18
+ const CommentAvatar = ({ author, }) => {
19
+ return ((0, jsx_runtime_1.jsx)(antd_1.Avatar, { style: { backgroundColor: getColorByAuthor(author.id), verticalAlign: 'middle', flexShrink: 0 }, size: "large", children: author.name.slice(0, 1) }));
20
+ };
21
+ exports.default = CommentAvatar;
22
+ //# sourceMappingURL=CommentAvatar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CommentAvatar.js","sourceRoot":"","sources":["../../../src/components/Comment/CommentAvatar.tsx"],"names":[],"mappings":";;;AAAA,+BAA8B;AAQ9B,MAAM,SAAS,GAAG;IAChB,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;CACV,CAAC;AAEF,MAAM,gBAAgB,GAAG,CAAC,QAAgB,EAAE,EAAE;IAC5C,OAAO,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,CAAA;AAC7D,CAAC,CAAA;AAED,MAAM,aAAa,GAA2B,CAAC,EAC7C,MAAM,GACP,EAAE,EAAE;IACH,OAAO,CACL,uBAAC,aAAM,IAAC,KAAK,EAAE,EAAE,eAAe,EAAE,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,aAAa,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,EAAE,EAAE,IAAI,EAAC,OAAO,YAClH,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GACjB,CACV,CAAC;AACJ,CAAC,CAAC;AAEF,kBAAe,aAAa,CAAC"}
@@ -0,0 +1,6 @@
1
+ import React from 'react';
2
+ interface CommentFormProps {
3
+ onSubmit: (content: string) => void;
4
+ }
5
+ declare const CommentForm: React.FC<CommentFormProps>;
6
+ export default CommentForm;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const jsx_runtime_1 = require("react/jsx-runtime");
4
+ const react_1 = require("react");
5
+ const antd_1 = require("antd");
6
+ const CommentForm = ({ onSubmit }) => {
7
+ const [content, setContent] = (0, react_1.useState)('');
8
+ const handleSubmit = () => {
9
+ if (content.trim()) {
10
+ onSubmit(content);
11
+ setContent('');
12
+ }
13
+ };
14
+ return ((0, jsx_runtime_1.jsxs)(antd_1.Form, { layout: "vertical", onFinish: handleSubmit, children: [(0, jsx_runtime_1.jsx)("div", { children: (0, jsx_runtime_1.jsx)(antd_1.Form.Item, { label: "Leave a comment:", children: (0, jsx_runtime_1.jsx)(antd_1.Input.TextArea, { value: content, onChange: (e) => setContent(e.target.value), autoSize: { minRows: 3, maxRows: 6 } }) }) }), (0, jsx_runtime_1.jsx)(antd_1.Button, { type: "primary", htmlType: "submit", style: { width: 100 }, children: "Send" })] }));
15
+ };
16
+ exports.default = CommentForm;
17
+ //# sourceMappingURL=CommentForm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CommentForm.js","sourceRoot":"","sources":["../../../src/components/Comment/CommentForm.tsx"],"names":[],"mappings":";;;AAAA,iCAAwC;AACxC,+BAA2C;AAM3C,MAAM,WAAW,GAA+B,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE;IAC/D,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,IAAA,gBAAQ,EAAC,EAAE,CAAC,CAAC;IAE3C,MAAM,YAAY,GAAG,GAAG,EAAE;QACxB,IAAI,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;YACnB,QAAQ,CAAC,OAAO,CAAC,CAAC;YAClB,UAAU,CAAC,EAAE,CAAC,CAAC;QACjB,CAAC;IACH,CAAC,CAAC;IAEF,OAAO,CACL,wBAAC,WAAI,IAAC,MAAM,EAAC,UAAU,EAAC,QAAQ,EAAE,YAAY,aAC5C,0CACE,uBAAC,WAAI,CAAC,IAAI,IAAC,KAAK,EAAC,kBAAkB,YACjC,uBAAC,YAAK,CAAC,QAAQ,IACb,KAAK,EAAE,OAAO,EACd,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAC3C,QAAQ,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,GACpC,GACQ,GACR,EACN,uBAAC,aAAM,IAAC,IAAI,EAAC,SAAS,EAAC,QAAQ,EAAC,QAAQ,EAAC,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,qBAErD,IACJ,CACR,CAAC;AACJ,CAAC,CAAC;AAEF,kBAAe,WAAW,CAAC"}
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ interface CommentFormProps {
3
+ isOpen: boolean;
4
+ setIsOpen: (open: boolean) => void;
5
+ onSubmit: (content: string) => void;
6
+ children?: React.ReactNode;
7
+ title?: string;
8
+ }
9
+ declare const CommentFormModal: React.FC<CommentFormProps>;
10
+ export default CommentFormModal;