react-graph-grid 0.1.3 → 0.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (88) hide show
  1. package/README.md +4 -0
  2. package/dist/index.esm.js +21 -0
  3. package/dist/index.js +56 -0
  4. package/dist/index10.esm.js +3844 -0
  5. package/dist/index10.js +3848 -0
  6. package/dist/index11.esm.js +4121 -0
  7. package/dist/index11.js +4125 -0
  8. package/dist/index12.esm.js +5238 -0
  9. package/dist/index12.js +5242 -0
  10. package/dist/index13.esm.js +5466 -0
  11. package/dist/index13.js +5470 -0
  12. package/dist/index14.esm.js +22 -0
  13. package/dist/index14.js +26 -0
  14. package/dist/index15.esm.js +402 -0
  15. package/dist/index15.js +403 -0
  16. package/dist/index16.esm.js +507 -0
  17. package/dist/index16.js +507 -0
  18. package/dist/index17.esm.js +256 -0
  19. package/dist/index17.js +257 -0
  20. package/dist/index18.esm.js +261 -0
  21. package/dist/index18.js +263 -0
  22. package/dist/index19.esm.js +623 -0
  23. package/dist/index19.js +624 -0
  24. package/dist/index2.esm.js +6 -0
  25. package/dist/index2.js +2 -0
  26. package/dist/index20.esm.js +219 -0
  27. package/dist/index20.js +220 -0
  28. package/dist/index21.esm.js +298 -0
  29. package/dist/index21.js +299 -0
  30. package/dist/index22.esm.js +662 -0
  31. package/dist/index22.js +663 -0
  32. package/dist/index23.esm.js +340 -0
  33. package/dist/index23.js +341 -0
  34. package/dist/index24.esm.js +269 -0
  35. package/dist/index24.js +270 -0
  36. package/dist/index25.esm.js +600 -0
  37. package/dist/index25.js +601 -0
  38. package/dist/index26.esm.js +245 -0
  39. package/dist/index26.js +246 -0
  40. package/dist/index27.esm.js +136 -0
  41. package/dist/index27.js +137 -0
  42. package/dist/index28.esm.js +70 -0
  43. package/dist/index28.js +70 -0
  44. package/dist/index29.esm.js +748 -0
  45. package/dist/index29.js +748 -0
  46. package/dist/index30.esm.js +363 -0
  47. package/dist/index30.js +363 -0
  48. package/dist/index4.esm.js +27 -0
  49. package/dist/index4.js +27 -0
  50. package/dist/index5.esm.js +35 -0
  51. package/dist/index5.js +39 -0
  52. package/dist/index6.esm.js +200 -0
  53. package/dist/index6.js +204 -0
  54. package/dist/index7.esm.js +9 -0
  55. package/dist/index7.js +13 -0
  56. package/dist/index8.esm.js +65 -0
  57. package/dist/index8.js +68 -0
  58. package/dist/index9.esm.js +102 -0
  59. package/dist/index9.js +103 -0
  60. package/{src/css/default.css → dist/react-graph-grid.css} +2 -1
  61. package/package.json +6 -6
  62. package/eslint.config.js +0 -29
  63. package/index.html +0 -13
  64. package/index.js +0 -19
  65. package/npm.aps +0 -0
  66. package/src/Base.jsx +0 -81
  67. package/src/Card.jsx +0 -333
  68. package/src/Dropdown.jsx +0 -339
  69. package/src/FieldEdit.jsx +0 -376
  70. package/src/Graph.jsx +0 -482
  71. package/src/Grid.jsx +0 -887
  72. package/src/GridCD.jsx +0 -180
  73. package/src/GridDB.jsx +0 -897
  74. package/src/GridFE.jsx +0 -753
  75. package/src/GridFL.jsx +0 -468
  76. package/src/GridGR.jsx +0 -311
  77. package/src/GridPK.jsx +0 -414
  78. package/src/Modal.jsx +0 -511
  79. package/src/Overlay.jsx +0 -140
  80. package/src/Tests/DebugApp.jsx +0 -334
  81. package/src/Tests/TestData.jsx +0 -251
  82. package/src/Themes/DefaultGridTheme.jsx +0 -36
  83. package/src/Themes/Images.jsx +0 -438
  84. package/src/Themes/Translate.jsx +0 -76
  85. package/src/css/default_.css +0 -945
  86. package/src/main.jsx +0 -10
  87. package/vite.config.js +0 -14
  88. /package/{public → dist}/IM.svg +0 -0
@@ -0,0 +1,245 @@
1
+ import { require_jsx_runtime } from "./index7.esm.js";
2
+ import { Images } from "./index16.esm.js";
3
+ import { FieldEdit } from "./index24.esm.js";
4
+ import { GridFEClass } from "./index25.esm.js";
5
+ import { useEffect, useState } from "react";
6
+ var import_jsx_runtime = require_jsx_runtime();
7
+ function Card(props) {
8
+ let card = null;
9
+ const [gridState, setState] = useState({
10
+ grid: card,
11
+ ind: 0
12
+ });
13
+ card = gridState.grid;
14
+ let needGetRows = false;
15
+ if (!card || card.uid !== props.uid && props.uid != null) {
16
+ card = null;
17
+ if (props.findGrid) card = props.findGrid(props);
18
+ card = card || new CardClass(props);
19
+ needGetRows = !card.changedRow;
20
+ }
21
+ if (props.init) props.init(card);
22
+ card.refreshState = function() {
23
+ setState({
24
+ grid: card,
25
+ ind: card.stateind++
26
+ });
27
+ };
28
+ useEffect(() => {
29
+ card.setupEvents();
30
+ if (needGetRows && card.selectedRow() == null) card.getRows().then((rows) => {
31
+ card.rows = rows;
32
+ card.afterGetRows();
33
+ card.refreshState();
34
+ });
35
+ else if (card.columns.length <= 0 && card.getColumns) card.prepareColumns().then(() => card.refreshState());
36
+ return () => {
37
+ card.clearEvents();
38
+ if (card.graph && card.graph.nodeCount) card.graph.nodeCount--;
39
+ };
40
+ }, [card, needGetRows]);
41
+ return card.render();
42
+ }
43
+ var CardClass = class extends GridFEClass {
44
+ constructor(props) {
45
+ super(props);
46
+ const card = this;
47
+ card.visible = true;
48
+ card.allowEdit = props.allowEdit;
49
+ card.isVisible = props.isVisible || card.isVisible;
50
+ card.activeRow = props.activeRow || "";
51
+ card.refreshState = card.refreshState || (() => {});
52
+ card.reqInd = 0;
53
+ card.changedRow = {};
54
+ card.initialRow = props.cardRow;
55
+ Object.assign(card.changedRow, card.initialRow);
56
+ if (props.isNewRecord) {
57
+ card.isNewRecord = true;
58
+ card.setEditing(true);
59
+ }
60
+ card.cardButtons = [];
61
+ }
62
+ render() {
63
+ const card = this;
64
+ card.addCardButtons();
65
+ card.buttons = card.cardButtons;
66
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
67
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
68
+ className: "graph-card-toolbar",
69
+ style: { margin: "0 1em" },
70
+ children: super.renderToolbar()
71
+ }, `cardToolbarDiv_${card.id}_`),
72
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
73
+ className: "graph-card-div",
74
+ children: card.columns.map((col) => {
75
+ return card.renderField(col);
76
+ })
77
+ }, `cardBodyDiv_${card.id}_`),
78
+ super.renderPopup()
79
+ ] });
80
+ }
81
+ renderField(col) {
82
+ const card = this;
83
+ if (col.visible == false) return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, {});
84
+ const isLookup = col.type === "lookup";
85
+ let row = card.changedRow;
86
+ let value = isLookup ? row[col.keyField] : row[col.name];
87
+ value = value != null ? value : "";
88
+ if (col.type == null) col.type = "";
89
+ else if (isLookup) col.grid = card;
90
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
91
+ className: "graph-card-field",
92
+ style: { margin: "0 1em 0.5em 1em" },
93
+ children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
94
+ style: {
95
+ gridColumn: "span 3",
96
+ width: "calc(100% - 4px)"
97
+ },
98
+ children: col.title || col.name
99
+ }, `cardLookupTitle_${card.id}_${col.id}_`), /* @__PURE__ */ (0, import_jsx_runtime.jsx)(FieldEdit, {
100
+ keyPref: card.id + "_card_",
101
+ column: col,
102
+ value,
103
+ text: row[col.name],
104
+ findFieldEdit: () => {
105
+ return col._fieldEditObj;
106
+ },
107
+ large: true,
108
+ level: card.level,
109
+ disabled: card.allowEdit == null || card.allowEdit != true,
110
+ init: (fe) => {
111
+ if (card.isEditing() && !card.changedRow) {
112
+ card.changedRow = {};
113
+ Object.assign(card.changedRow, card.selectedRow());
114
+ }
115
+ row = !card.isEditing() ? card.selectedRow() : card.changedRow;
116
+ col._fieldEditObj = fe;
117
+ fe.value = isLookup ? row[col.keyField] : row[col.name];
118
+ fe.value = fe.value != null ? fe.value : "";
119
+ fe.text = row[col.name];
120
+ },
121
+ onChange: (e) => {
122
+ if (!card.changedRow) {
123
+ card.changedRow = {};
124
+ Object.assign(card.changedRow, card.selectedRow());
125
+ }
126
+ if (isLookup) {
127
+ card.changedRow[col.keyField] = e.value;
128
+ card.changedRow[col.name] = e.text;
129
+ if (!card.isEditing()) card.setEditing(true);
130
+ card.refreshState();
131
+ } else {
132
+ card.changedRow[col.name] = e.value;
133
+ card.setEditing(true);
134
+ card.refreshState();
135
+ }
136
+ }
137
+ })]
138
+ }, `cardLookupDiv_${card.id}_${col.id}_`);
139
+ }
140
+ addCardButtons() {
141
+ const card = this;
142
+ if (card._cardButtonsAdded) return;
143
+ card._cardButtonsAdded = true;
144
+ card.cardButtons.push({
145
+ id: card.cardButtons.length,
146
+ name: "commit",
147
+ title: card.translate("Commit changes"),
148
+ label: card.translate("Commit"),
149
+ img: Images.images.commit,
150
+ click: (e) => card.commitChangesNode(e),
151
+ getDisabled: (e) => card.commitChangesNodeDisabled(e)
152
+ });
153
+ card.cardButtons.push({
154
+ id: card.cardButtons.length,
155
+ name: "rollback",
156
+ title: card.translate("Rollback changes"),
157
+ label: card.translate("Rollback"),
158
+ img: Images.images.rollback,
159
+ click: (e) => {
160
+ card.rollbackChangesNode(e);
161
+ if (card.isNewRecord && card.close) card.close(e);
162
+ },
163
+ getDisabled: (e) => card.rollbackChangesNodeDisabled(e)
164
+ });
165
+ }
166
+ commitChangesNodeDisabled() {
167
+ const card = this;
168
+ if (!card.isEditing()) return true;
169
+ let requiredColumnsFilled = true;
170
+ for (let col of card.columns) {
171
+ if (!col.required || col.readonly) continue;
172
+ let val = card.changedRow[col.name];
173
+ if (col.required && (val == null || val === "")) {
174
+ requiredColumnsFilled = false;
175
+ break;
176
+ }
177
+ }
178
+ return !requiredColumnsFilled;
179
+ }
180
+ rollbackChangesNodeDisabled() {
181
+ return !this.isEditing();
182
+ }
183
+ saveRow(e) {
184
+ const card = this;
185
+ if (!card.isRowChanged(e.row, card.changedRow)) return new Promise(function(resolve) {
186
+ resolve(true);
187
+ });
188
+ return new Promise(function(resolve) {
189
+ Object.assign(card.initialRow, card.changedRow);
190
+ resolve(true);
191
+ });
192
+ }
193
+ commitChangesNode() {
194
+ const card = this;
195
+ card.saveRow({
196
+ row: card.initialRow,
197
+ changedRow: card.changedRow
198
+ }).then(() => {
199
+ if (card.isNewRecord || !card.keyField) {
200
+ card.setEditing(false);
201
+ Object.assign(card.initialRow, card.changedRow);
202
+ card.refreshState();
203
+ } else card.getRows().then((rows) => {
204
+ card.rows = rows;
205
+ card.changedRow = rows[0];
206
+ Object.assign(card.initialRow, card.changedRow);
207
+ card.setEditing(false);
208
+ card.afterGetRows();
209
+ card.refreshState();
210
+ });
211
+ }).catch((message) => {
212
+ Object.assign(card.changedRow, card.initialRow);
213
+ card.refreshState();
214
+ alert(message || "Error!");
215
+ });
216
+ }
217
+ rollbackChangesNode() {
218
+ const card = this;
219
+ if (card.isNewRecord || !card.keyField) {
220
+ card.changedRow = {};
221
+ Object.assign(card.changedRow, card.initialRow);
222
+ card.setEditing(false);
223
+ card.refreshState();
224
+ } else card.getRows().then((rows) => {
225
+ card.rows = rows;
226
+ card.changedRow = rows[0];
227
+ Object.assign(card.initialRow, card.changedRow);
228
+ card.setEditing(false);
229
+ card.afterGetRows();
230
+ card.refreshState();
231
+ });
232
+ }
233
+ selectedRow() {
234
+ return this.changedRow;
235
+ }
236
+ getRows() {
237
+ const card = this;
238
+ return new Promise(function(resolve) {
239
+ const res = [card.initialRow];
240
+ card.totalRows = 1;
241
+ resolve(res);
242
+ });
243
+ }
244
+ };
245
+ export { Card, CardClass };
@@ -0,0 +1,246 @@
1
+ const require_jsx_runtime$1 = require("./index7.js");
2
+ const require_Images = require("./index16.js");
3
+ const require_FieldEdit = require("./index24.js");
4
+ const require_GridFE = require("./index25.js");
5
+ let react = require("react");
6
+ var import_jsx_runtime = require_jsx_runtime$1.default;
7
+ function Card(props) {
8
+ let card = null;
9
+ const [gridState, setState] = (0, react.useState)({
10
+ grid: card,
11
+ ind: 0
12
+ });
13
+ card = gridState.grid;
14
+ let needGetRows = false;
15
+ if (!card || card.uid !== props.uid && props.uid != null) {
16
+ card = null;
17
+ if (props.findGrid) card = props.findGrid(props);
18
+ card = card || new CardClass(props);
19
+ needGetRows = !card.changedRow;
20
+ }
21
+ if (props.init) props.init(card);
22
+ card.refreshState = function() {
23
+ setState({
24
+ grid: card,
25
+ ind: card.stateind++
26
+ });
27
+ };
28
+ (0, react.useEffect)(() => {
29
+ card.setupEvents();
30
+ if (needGetRows && card.selectedRow() == null) card.getRows().then((rows) => {
31
+ card.rows = rows;
32
+ card.afterGetRows();
33
+ card.refreshState();
34
+ });
35
+ else if (card.columns.length <= 0 && card.getColumns) card.prepareColumns().then(() => card.refreshState());
36
+ return () => {
37
+ card.clearEvents();
38
+ if (card.graph && card.graph.nodeCount) card.graph.nodeCount--;
39
+ };
40
+ }, [card, needGetRows]);
41
+ return card.render();
42
+ }
43
+ var CardClass = class extends require_GridFE.GridFEClass {
44
+ constructor(props) {
45
+ super(props);
46
+ const card = this;
47
+ card.visible = true;
48
+ card.allowEdit = props.allowEdit;
49
+ card.isVisible = props.isVisible || card.isVisible;
50
+ card.activeRow = props.activeRow || "";
51
+ card.refreshState = card.refreshState || (() => {});
52
+ card.reqInd = 0;
53
+ card.changedRow = {};
54
+ card.initialRow = props.cardRow;
55
+ Object.assign(card.changedRow, card.initialRow);
56
+ if (props.isNewRecord) {
57
+ card.isNewRecord = true;
58
+ card.setEditing(true);
59
+ }
60
+ card.cardButtons = [];
61
+ }
62
+ render() {
63
+ const card = this;
64
+ card.addCardButtons();
65
+ card.buttons = card.cardButtons;
66
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
67
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
68
+ className: "graph-card-toolbar",
69
+ style: { margin: "0 1em" },
70
+ children: super.renderToolbar()
71
+ }, `cardToolbarDiv_${card.id}_`),
72
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
73
+ className: "graph-card-div",
74
+ children: card.columns.map((col) => {
75
+ return card.renderField(col);
76
+ })
77
+ }, `cardBodyDiv_${card.id}_`),
78
+ super.renderPopup()
79
+ ] });
80
+ }
81
+ renderField(col) {
82
+ const card = this;
83
+ if (col.visible == false) return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, {});
84
+ const isLookup = col.type === "lookup";
85
+ let row = card.changedRow;
86
+ let value = isLookup ? row[col.keyField] : row[col.name];
87
+ value = value != null ? value : "";
88
+ if (col.type == null) col.type = "";
89
+ else if (isLookup) col.grid = card;
90
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
91
+ className: "graph-card-field",
92
+ style: { margin: "0 1em 0.5em 1em" },
93
+ children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
94
+ style: {
95
+ gridColumn: "span 3",
96
+ width: "calc(100% - 4px)"
97
+ },
98
+ children: col.title || col.name
99
+ }, `cardLookupTitle_${card.id}_${col.id}_`), /* @__PURE__ */ (0, import_jsx_runtime.jsx)(require_FieldEdit.FieldEdit, {
100
+ keyPref: card.id + "_card_",
101
+ column: col,
102
+ value,
103
+ text: row[col.name],
104
+ findFieldEdit: () => {
105
+ return col._fieldEditObj;
106
+ },
107
+ large: true,
108
+ level: card.level,
109
+ disabled: card.allowEdit == null || card.allowEdit != true,
110
+ init: (fe) => {
111
+ if (card.isEditing() && !card.changedRow) {
112
+ card.changedRow = {};
113
+ Object.assign(card.changedRow, card.selectedRow());
114
+ }
115
+ row = !card.isEditing() ? card.selectedRow() : card.changedRow;
116
+ col._fieldEditObj = fe;
117
+ fe.value = isLookup ? row[col.keyField] : row[col.name];
118
+ fe.value = fe.value != null ? fe.value : "";
119
+ fe.text = row[col.name];
120
+ },
121
+ onChange: (e) => {
122
+ if (!card.changedRow) {
123
+ card.changedRow = {};
124
+ Object.assign(card.changedRow, card.selectedRow());
125
+ }
126
+ if (isLookup) {
127
+ card.changedRow[col.keyField] = e.value;
128
+ card.changedRow[col.name] = e.text;
129
+ if (!card.isEditing()) card.setEditing(true);
130
+ card.refreshState();
131
+ } else {
132
+ card.changedRow[col.name] = e.value;
133
+ card.setEditing(true);
134
+ card.refreshState();
135
+ }
136
+ }
137
+ })]
138
+ }, `cardLookupDiv_${card.id}_${col.id}_`);
139
+ }
140
+ addCardButtons() {
141
+ const card = this;
142
+ if (card._cardButtonsAdded) return;
143
+ card._cardButtonsAdded = true;
144
+ card.cardButtons.push({
145
+ id: card.cardButtons.length,
146
+ name: "commit",
147
+ title: card.translate("Commit changes"),
148
+ label: card.translate("Commit"),
149
+ img: require_Images.Images.images.commit,
150
+ click: (e) => card.commitChangesNode(e),
151
+ getDisabled: (e) => card.commitChangesNodeDisabled(e)
152
+ });
153
+ card.cardButtons.push({
154
+ id: card.cardButtons.length,
155
+ name: "rollback",
156
+ title: card.translate("Rollback changes"),
157
+ label: card.translate("Rollback"),
158
+ img: require_Images.Images.images.rollback,
159
+ click: (e) => {
160
+ card.rollbackChangesNode(e);
161
+ if (card.isNewRecord && card.close) card.close(e);
162
+ },
163
+ getDisabled: (e) => card.rollbackChangesNodeDisabled(e)
164
+ });
165
+ }
166
+ commitChangesNodeDisabled() {
167
+ const card = this;
168
+ if (!card.isEditing()) return true;
169
+ let requiredColumnsFilled = true;
170
+ for (let col of card.columns) {
171
+ if (!col.required || col.readonly) continue;
172
+ let val = card.changedRow[col.name];
173
+ if (col.required && (val == null || val === "")) {
174
+ requiredColumnsFilled = false;
175
+ break;
176
+ }
177
+ }
178
+ return !requiredColumnsFilled;
179
+ }
180
+ rollbackChangesNodeDisabled() {
181
+ return !this.isEditing();
182
+ }
183
+ saveRow(e) {
184
+ const card = this;
185
+ if (!card.isRowChanged(e.row, card.changedRow)) return new Promise(function(resolve) {
186
+ resolve(true);
187
+ });
188
+ return new Promise(function(resolve) {
189
+ Object.assign(card.initialRow, card.changedRow);
190
+ resolve(true);
191
+ });
192
+ }
193
+ commitChangesNode() {
194
+ const card = this;
195
+ card.saveRow({
196
+ row: card.initialRow,
197
+ changedRow: card.changedRow
198
+ }).then(() => {
199
+ if (card.isNewRecord || !card.keyField) {
200
+ card.setEditing(false);
201
+ Object.assign(card.initialRow, card.changedRow);
202
+ card.refreshState();
203
+ } else card.getRows().then((rows) => {
204
+ card.rows = rows;
205
+ card.changedRow = rows[0];
206
+ Object.assign(card.initialRow, card.changedRow);
207
+ card.setEditing(false);
208
+ card.afterGetRows();
209
+ card.refreshState();
210
+ });
211
+ }).catch((message) => {
212
+ Object.assign(card.changedRow, card.initialRow);
213
+ card.refreshState();
214
+ alert(message || "Error!");
215
+ });
216
+ }
217
+ rollbackChangesNode() {
218
+ const card = this;
219
+ if (card.isNewRecord || !card.keyField) {
220
+ card.changedRow = {};
221
+ Object.assign(card.changedRow, card.initialRow);
222
+ card.setEditing(false);
223
+ card.refreshState();
224
+ } else card.getRows().then((rows) => {
225
+ card.rows = rows;
226
+ card.changedRow = rows[0];
227
+ Object.assign(card.initialRow, card.changedRow);
228
+ card.setEditing(false);
229
+ card.afterGetRows();
230
+ card.refreshState();
231
+ });
232
+ }
233
+ selectedRow() {
234
+ return this.changedRow;
235
+ }
236
+ getRows() {
237
+ const card = this;
238
+ return new Promise(function(resolve) {
239
+ const res = [card.initialRow];
240
+ card.totalRows = 1;
241
+ resolve(res);
242
+ });
243
+ }
244
+ };
245
+ exports.Card = Card;
246
+ exports.CardClass = CardClass;
@@ -0,0 +1,136 @@
1
+ import { require_jsx_runtime } from "./index7.esm.js";
2
+ import { GridFEClass } from "./index25.esm.js";
3
+ import { Card } from "./index26.esm.js";
4
+ import { useEffect, useState } from "react";
5
+ var import_jsx_runtime = require_jsx_runtime();
6
+ function GridCD(props) {
7
+ let grid = null;
8
+ const [gridState, setState] = useState({
9
+ grid,
10
+ ind: 0
11
+ });
12
+ grid = gridState.grid;
13
+ let needGetRows = false;
14
+ if (!grid || grid.uid !== props.uid && props.uid != null) {
15
+ grid = null;
16
+ if (props.findGrid) grid = props.findGrid(props);
17
+ grid = grid || new GridCDClass(props);
18
+ needGetRows = !props.noAutoRefresh && !grid.hasVisibleParentGrids();
19
+ }
20
+ if (props.init) props.init(grid);
21
+ grid.refreshState = function() {
22
+ setState({
23
+ grid,
24
+ ind: grid.stateind++
25
+ });
26
+ };
27
+ useEffect(() => {
28
+ grid.setupEvents();
29
+ if (needGetRows && (grid.rows.length <= 0 || grid.columns.length <= 0) || grid._forceRefresh) {
30
+ grid._forceRefresh = false;
31
+ grid._waitingRows = true;
32
+ grid.getRows({
33
+ filters: grid.collectFilters(),
34
+ grid
35
+ }).then((rows) => {
36
+ grid.rows = rows;
37
+ grid.afterGetRows();
38
+ grid.refreshState();
39
+ }).finally(() => {
40
+ grid._waitingRows = false;
41
+ grid.refreshState();
42
+ });
43
+ } else if (grid.columns.length <= 0 && grid.getColumns) grid.prepareColumns().then(() => grid.refreshState());
44
+ return () => {
45
+ grid.clearEvents();
46
+ };
47
+ }, [grid, needGetRows]);
48
+ return grid.render();
49
+ }
50
+ var GridCDClass = class extends GridFEClass {
51
+ constructor(props) {
52
+ super(props);
53
+ const grid = this;
54
+ grid.allowView = true;
55
+ grid._buttonsDict["view"].getVisible = () => {
56
+ return true;
57
+ };
58
+ }
59
+ render() {
60
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, { children: super.render() });
61
+ }
62
+ renderPopupContent(wnd) {
63
+ const grid = this;
64
+ return grid.cardIsShowing ? grid.renderCardContent(wnd) : super.renderPopupContent(wnd);
65
+ }
66
+ renderCardContent() {
67
+ const grid = this;
68
+ return grid.allowView == false ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
69
+ className: `graph-filter-title graph-filter-required`,
70
+ children: grid.translate("Insufficient rights to view")
71
+ }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Card, {
72
+ cardRow: grid.cardRow || {},
73
+ isNewRecord: grid.isNewRecord,
74
+ allowEdit: grid.allowEdit,
75
+ uid: (grid.uid || grid.id) + "_card_",
76
+ keyField: grid.keyField,
77
+ level: grid.level + 1,
78
+ findGrid: () => {
79
+ const selRow = grid.cardRow || grid.selectedRow();
80
+ if (grid._card && selRow && grid._card.changedRow[grid.keyField] === selRow[grid.keyField]) return grid._card;
81
+ },
82
+ init: (card) => {
83
+ if (grid._card == card) return;
84
+ grid._card = card;
85
+ card.visible = true;
86
+ card.columns = [];
87
+ for (let col of grid.columns) {
88
+ const remGetRows = col.getRows;
89
+ delete col._fieldEditObj;
90
+ delete col.grid;
91
+ delete col._filterEditObj;
92
+ delete col.getRows;
93
+ let clone = structuredClone(col);
94
+ card.columns.push(clone);
95
+ clone.getRows = col.getRows = remGetRows;
96
+ col.grid = grid;
97
+ }
98
+ card.close = (e) => {
99
+ grid.onClosePopup(e);
100
+ grid.refreshState();
101
+ };
102
+ }
103
+ });
104
+ }
105
+ viewRecord(e) {
106
+ const grid = this;
107
+ const shift = (grid.level + 1) * 20;
108
+ grid.cardPos = grid.cardPos || {
109
+ x: 100 + shift,
110
+ y: 100 + shift,
111
+ w: 800,
112
+ h: 600
113
+ };
114
+ grid.popupPos = grid.cardPos;
115
+ grid.cardRow = grid.selectedRow();
116
+ grid.isNewRecord = false;
117
+ grid.cardIsShowing = true;
118
+ grid.popupIsShowing = true;
119
+ grid.popupTitle = grid.title;
120
+ grid.refreshState();
121
+ }
122
+ onClosePopup(e) {
123
+ const grid = this;
124
+ if (grid.cardIsShowing && grid._card) {
125
+ if (grid._card.isEditing() && (grid.isNewRecord || grid.isRowChanged(grid._card.changedRow, grid.selectedRow()))) {
126
+ e.cancel = !confirm(grid.translate("The row is changed. Discard changes?"));
127
+ if (e.cancel) return;
128
+ }
129
+ delete grid._card;
130
+ }
131
+ super.onClosePopup(e);
132
+ if (e.cancel) return;
133
+ if (grid.cardIsShowing) grid.cardIsShowing = false;
134
+ }
135
+ };
136
+ export { GridCD, GridCDClass };