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,624 @@
1
+ const require_jsx_runtime$1 = require("./index7.js");
2
+ const require_Base = require("./index8.js");
3
+ const require_Overlay = require("./index9.js");
4
+ const require_server_browser$1 = require("./index14.js");
5
+ let react = require("react");
6
+ var import_server_browser = require_server_browser$1.default;
7
+ var import_jsx_runtime = require_jsx_runtime$1.default;
8
+ function Grid(props) {
9
+ let grid = null;
10
+ const [gridState, setState] = (0, react.useState)({
11
+ grid,
12
+ ind: 0
13
+ });
14
+ grid = gridState.grid;
15
+ let needGetRows = false;
16
+ if (!grid || grid.uid !== props.uid && props.uid != null) {
17
+ grid = null;
18
+ if (props.findGrid) grid = props.findGrid(props);
19
+ grid = grid || new GridClass(props);
20
+ needGetRows = !props.noAutoRefresh;
21
+ }
22
+ if (props.init) props.init(grid);
23
+ grid.opt.selectedRowClass = props.selectedRowClass || require_Base.BaseComponent.theme.selectedRowClass || "";
24
+ grid.refreshState = function() {
25
+ setState({
26
+ grid,
27
+ ind: grid.stateind++
28
+ });
29
+ };
30
+ grid._waitingRows = needGetRows && (grid.rows.length <= 0 || grid.columns.length <= 0);
31
+ (0, react.useEffect)(() => {
32
+ grid.setupEvents(grid);
33
+ if (grid._waitingRows) grid.getRows({
34
+ filters: grid.collectFilters(),
35
+ grid
36
+ }).then((rows) => {
37
+ grid.rows = rows;
38
+ grid.afterGetRows();
39
+ grid.refreshState();
40
+ }).finally(() => {
41
+ grid._waitingRows = false;
42
+ grid.refreshState();
43
+ });
44
+ else if (grid.columns.length <= 0 && grid.getColumns) grid.prepareColumns().then(() => grid.refreshState());
45
+ return () => {
46
+ grid.clearEvents();
47
+ };
48
+ }, [grid]);
49
+ return grid.render();
50
+ }
51
+ var GridClass = class GridClass extends require_Base.BaseComponent {
52
+ constructor(props) {
53
+ super(props);
54
+ const grid = this;
55
+ grid.opt = { zInd: props.zInd || 1 };
56
+ grid.id = GridClass._seq++;
57
+ if (props.getRows) grid.getRows = props.getRows;
58
+ grid._waitingRows = true;
59
+ grid.getColumns = props.getColumns || grid.getColumns;
60
+ grid.selectedRowIndex = 0;
61
+ grid.keyField = props.keyField;
62
+ grid.nameField = props.nameField;
63
+ if (props.renderCell) {
64
+ grid.defaultRenderCell = grid.renderCell;
65
+ grid.renderCell = props.renderCell;
66
+ }
67
+ grid.dateFormat = props.dateFormat || require_Base.BaseComponent.dateFormat || "dd.MM.yyyy";
68
+ grid.dateTimeFormat = props.dateTimeFormat || require_Base.BaseComponent.dateTimeFormat || "dd.MM.yyyy HH:mm:ss";
69
+ grid.rows = [];
70
+ grid.columns = [];
71
+ grid.stateind = 0;
72
+ grid.frozenHeader = props.frozenHeader == null ? true : props.frozenHeader;
73
+ grid.opt.selectedRowClass = props.selectedRowClass || require_Base.BaseComponent.theme.selectedRowClass || "";
74
+ }
75
+ static _seq = 0;
76
+ log(message, pref) {
77
+ pref = pref || `grid#${this.id}`;
78
+ require_Base.log(`${pref} : ${message}`);
79
+ }
80
+ afterGetRowsEvents() {
81
+ const grid = this;
82
+ grid.calculatePagesCount();
83
+ grid.getSelectedRowIndex();
84
+ grid.onSelectedRowChanged({
85
+ grid,
86
+ prev: grid.selectedRowIndex,
87
+ new: grid.selectedRowIndex,
88
+ source: "afterGetRows"
89
+ });
90
+ }
91
+ afterGetRows() {
92
+ const grid = this;
93
+ grid._waitingRows = false;
94
+ grid.log(`afterGetRows(). rows = ${grid.rows.length}. state = ${grid.stateind}`);
95
+ if (grid.totalRows == null && grid.pageSize <= 0) grid.totalRows = grid.rows && grid.rows.length ? grid.rows.length : 0;
96
+ if (grid.columns.length <= 0) grid.prepareColumns().then(() => {
97
+ grid.afterGetRowsEvents();
98
+ grid.refreshState();
99
+ });
100
+ else grid.afterGetRowsEvents();
101
+ }
102
+ getSelectedRowIndex() {
103
+ const grid = this;
104
+ if (grid.selectedRowIndex == null || grid.selectedRowIndex < 0) grid.selectedRowIndex = 0;
105
+ }
106
+ setupEvents() {
107
+ const grid = this;
108
+ grid.clearEvents = function() {};
109
+ }
110
+ calculatePagesCount() {
111
+ const grid = this;
112
+ grid.pagesCount = (grid.totalRows / grid.pageSize | 0) + (grid.totalRows % grid.pageSize > 0 ? 1 : 0);
113
+ }
114
+ refresh() {
115
+ const grid = this;
116
+ grid._waitingRows = true;
117
+ grid.refreshState();
118
+ grid.getRows({
119
+ filters: grid.collectFilters(),
120
+ grid
121
+ }).then((rows) => {
122
+ grid.rows = rows;
123
+ grid.afterGetRows();
124
+ grid._waitingRows = false;
125
+ grid.refreshState();
126
+ }).catch(() => {
127
+ grid._waitingRows = false;
128
+ }).finally(() => {
129
+ grid._waitingRows = false;
130
+ grid.refreshState();
131
+ });
132
+ }
133
+ collectFilters() {
134
+ return [];
135
+ }
136
+ render() {
137
+ const grid = this;
138
+ grid.getGridWidth();
139
+ grid.log(`render(). rows = ${grid.rows.length}. columns = ${grid.columns.length}. state = ${grid.stateind}`);
140
+ require_Base.log(" -------------------------------------------------------------------------------------------------------------------------------------- ");
141
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
142
+ className: "grid-div",
143
+ style: {
144
+ maxHeight: grid.getGridMaxHeight(),
145
+ overflowY: grid.frozenHeader ? "auto" : "hidden"
146
+ },
147
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("table", {
148
+ className: grid.opt.gridClass || require_Base.BaseComponent.theme.gridClass || "grid-default",
149
+ style: {
150
+ width: grid._currW + "px",
151
+ tableLayout: "fixed"
152
+ },
153
+ children: [grid.renderHeader(), grid.renderBody()]
154
+ }, `grid_${grid.id}_`)
155
+ }, `gridDiv_${grid.id}_`);
156
+ }
157
+ getGridMaxHeight() {
158
+ return this.frozenHeader ? "40vh" : "";
159
+ }
160
+ getGridWidth() {
161
+ const grid = this;
162
+ let w = 0;
163
+ for (let col of grid.columns) {
164
+ if (col.visible === false) continue;
165
+ w += col.w;
166
+ }
167
+ grid._currW = w;
168
+ return grid._currW;
169
+ }
170
+ keyAdd() {
171
+ return "";
172
+ }
173
+ keyCellAdd() {
174
+ return this.stateind;
175
+ }
176
+ getHeaderGridTemplateColumns() {
177
+ return "auto 8px";
178
+ }
179
+ getHeaderMinHeight() {
180
+ return "1em";
181
+ }
182
+ renderHeader(columns, context) {
183
+ const grid = this;
184
+ columns = columns || grid.columns;
185
+ if (!columns) return "";
186
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("thead", { children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("tr", { children: [context !== "fake" ? grid.renderSelectColumnHeader() : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, {}), columns.map((col, ind) => {
187
+ return col.visible === false ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, {}) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)("th", {
188
+ "grid-header": `${grid.id}_${col.id}_${col.w}_`,
189
+ className: `${grid.opt.columnClass ? grid.opt.columnClass : ""} grid-header-th`,
190
+ style: {
191
+ position: grid.frozenHeader ? "sticky" : "inherit",
192
+ top: grid.frozenHeader ? 0 : void 0,
193
+ zIndex: grid.frozenHeader ? 1 : void 0,
194
+ width: col.w + "px",
195
+ overflow: "hidden"
196
+ },
197
+ onMouseDown: (e) => grid.mouseDownColumnDrag(e, col),
198
+ onMouseEnter: (e) => grid.mouseOverColumnDrag(e, col),
199
+ onMouseLeave: (e) => grid.mouseOutColumnDrag(e, col),
200
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
201
+ style: {
202
+ overflow: "hidden",
203
+ verticalAlign: "top",
204
+ display: "grid",
205
+ gridTemplateColumns: "calc(100% - 6px) 6px"
206
+ },
207
+ disabled: grid._waitingRows || col.disabled ? "disabled" : "",
208
+ children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
209
+ className: `grid-header-div-default ${grid.opt.headerDivClass || "grid-header-div"}`,
210
+ style: {
211
+ display: "grid",
212
+ gridTemplateColumns: grid.getHeaderGridTemplateColumns(col),
213
+ alignItems: "center",
214
+ justifyItems: "start",
215
+ gridTemplateRows: "1.5em auto",
216
+ gridAutoFlow: "row",
217
+ width: "calc(100% + 8px)"
218
+ },
219
+ children: grid.renderHeaderCell(col, context)
220
+ }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
221
+ "grid-rsz-x": `${grid.id}_${col.id}`,
222
+ style: {
223
+ position: "relative",
224
+ minHeight: grid.getHeaderMinHeight(col),
225
+ cursor: "e-resize",
226
+ height: "100%",
227
+ width: "6px",
228
+ left: "0px",
229
+ zIndex: grid.opt.zInd + 1
230
+ },
231
+ onMouseDown: (e) => {
232
+ e.detail === 2 ? grid.mouseResizerDoubleClick(e, col) : grid.mouseResizerClick(e, col);
233
+ }
234
+ })]
235
+ })
236
+ }, `headerCell_${grid.id}_${col.id}_${col.w}_${ind}_${grid.keyAdd()}_`);
237
+ })] }) });
238
+ }
239
+ renderSelectColumnHeader() {
240
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, {});
241
+ }
242
+ renderHeaderCell(col) {
243
+ return this.translate(col.title || col.name);
244
+ }
245
+ renderBody() {
246
+ const grid = this;
247
+ if (grid._waitingRows || !grid.columns || !grid.rows) return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("tbody", { children: grid.rows && grid.rows.length > 0 ? grid.rows.map((row, rind) => {
248
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("tr", {
249
+ className: "grid-waiting",
250
+ style: {
251
+ borderTop: "0",
252
+ borderBottom: "0"
253
+ },
254
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("td", {
255
+ colSpan: grid.columns ? grid.columns.length : 0,
256
+ className: "grid-waiting",
257
+ children: rind === Math.min(Math.floor(grid.rows.length / 2), 10) ? grid.Spinner(grid.id, Math.min(Math.max(grid._currW, 100), window.innerWidth), window.innerWidth) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { children: "\xA0" })
258
+ })
259
+ }, `gridRowWait_${grid.id}_${rind}_`);
260
+ }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)("tr", { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("td", {
261
+ colSpan: grid.columns ? grid.columns.length : 0,
262
+ className: "grid-waiting",
263
+ children: grid.Spinner(grid.id, Math.min(Math.max(grid._currW, 100), window.innerWidth), window.innerWidth)
264
+ }) }, `gridRowWait_${grid.id}_0_`) });
265
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("tbody", { children: [grid.rows.map((row, rind) => {
266
+ let selected = grid.isRowSelected(row, rind);
267
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("tr", {
268
+ className: selected ? `grid-selected-row ${grid.opt.selectedRowClass || ""}` : "",
269
+ onDoubleClick: (e) => {
270
+ if (!grid._clicksDisabled) grid.onRowDblClick(e, row);
271
+ e.stopPropagation();
272
+ },
273
+ onClick: (e) => {
274
+ if (!grid._clicksDisabled) grid.onSelectGridRow(e);
275
+ e.stopPropagation();
276
+ },
277
+ children: grid.renderRow(row, rind, selected)
278
+ }, `gridRow_${grid.id}_${rind}_${row[grid.keyField]}_${grid.keyAdd()}_${grid.keyCellAdd(selected)}_`);
279
+ }), grid.renderAdditionalRows()] });
280
+ }
281
+ renderAdditionalRows() {
282
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, {});
283
+ }
284
+ isRowSelected(row, rowInd) {
285
+ return this.selectedRowIndex === rowInd;
286
+ }
287
+ renderRow(row, rowInd, selected) {
288
+ const grid = this;
289
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, { children: grid.columns.map((col, cind) => {
290
+ return col.visible === false ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, {}) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)("td", { children: grid.renderCell(grid, col, row, selected) }, `gridCell_${grid.id}_${rowInd}_${cind}_${grid.keyAdd()}_${row[grid.keyField]}_`);
291
+ }) });
292
+ }
293
+ renderCell(grid, col, row) {
294
+ let val = row[col.name];
295
+ if (col.type === "date" && val != null) try {
296
+ val = grid.formatDate(val, grid.dateFormat);
297
+ } catch {}
298
+ else if (col.type === "datetime" && val != null) try {
299
+ val = grid.formatDate(val, grid.dateTimeFormat);
300
+ } catch {}
301
+ if (col.allowVerticalResize) return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
302
+ style: { display: "flex" },
303
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("textarea", {
304
+ className: col.inputClass,
305
+ value: val != null ? val : "",
306
+ style: {
307
+ width: "calc(100% - 0px)",
308
+ minHeight: !col.inputClass ? col.textareaH : col.h,
309
+ height: "1.8em",
310
+ padding: "0",
311
+ boxSizing: "border-box",
312
+ gridColumn: "span 3",
313
+ resize: "vertical",
314
+ overflow: "hidden",
315
+ border: "0"
316
+ },
317
+ readOnly: true
318
+ }, `cellTextarea_${col.id}_`)
319
+ });
320
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
321
+ className: "grid-cell",
322
+ style: {
323
+ display: "block",
324
+ whiteSpace: "nowrap",
325
+ overflow: "hidden",
326
+ textOverflow: "clip"
327
+ },
328
+ children: val != null ? val : ""
329
+ });
330
+ }
331
+ getColumns() {
332
+ const grid = this;
333
+ const res = [];
334
+ grid.colDict = {};
335
+ for (let row of grid.rows) for (let key in row) {
336
+ if (grid.colDict[key]) continue;
337
+ const col = grid.createColumn(key);
338
+ grid.colDict[col.name] = col;
339
+ res.push(col);
340
+ }
341
+ return res;
342
+ }
343
+ createColumn(name) {
344
+ return { name };
345
+ }
346
+ getSortedString() {}
347
+ afterGetColumns() {
348
+ const grid = this;
349
+ grid.columns = grid.columns || [];
350
+ grid.colDict = grid.colDict || {};
351
+ let id = 0;
352
+ for (let col of grid.columns) {
353
+ col.id = id++;
354
+ col.title = col.title || col.name;
355
+ col.w = col.w || 100;
356
+ col.initW = col.initW || 100;
357
+ col.minW = col.minW || 50;
358
+ col.grid = grid;
359
+ grid.colDict[col.id] = grid.colDict[col.name] = grid.colDict[col.name.toLowerCase()] = col;
360
+ }
361
+ if (!grid.columnsDefaultOrder) {
362
+ grid.columnsDefaultOrder = [];
363
+ Object.assign(grid.columnsDefaultOrder, grid.columns);
364
+ }
365
+ grid.getSortedString();
366
+ delete grid._waitingColumns;
367
+ }
368
+ async prepareColumns() {
369
+ const grid = this;
370
+ if (grid._waitingColumns) return;
371
+ grid._waitingColumns = true;
372
+ if (grid.getColumns && (!grid.columns || grid.columns.length <= 0)) {
373
+ grid.columns = await grid.getColumns();
374
+ grid.afterGetColumns();
375
+ } else grid.afterGetColumns();
376
+ }
377
+ resetColumnsOrderToDefault() {
378
+ const grid = this;
379
+ let columns = [];
380
+ Object.assign(columns, grid.columnsDefaultOrder);
381
+ grid.refreshState();
382
+ grid.columns = columns;
383
+ }
384
+ resetColumnsWidthsToDefault() {
385
+ const grid = this;
386
+ for (let col of grid.columns) {
387
+ if (col.w === col.initW) continue;
388
+ col.w = col.initW;
389
+ }
390
+ grid.refreshState();
391
+ }
392
+ onSelectedRowChanged() {}
393
+ mouseDownColumnDrag(e, column) {
394
+ const grid = this;
395
+ if (grid.columns.length < 2) return;
396
+ if (e.target.tagName === "INPUT" || e.target.hasAttribute("grid-rsz-x")) return;
397
+ const th = e.target.closest("TH");
398
+ if (!th || !th.hasAttribute("grid-header")) return;
399
+ grid._movingColumn = column;
400
+ let fakeGrid;
401
+ function drawMovingColumn(pageX) {
402
+ fakeGrid = fakeGrid || grid.addFakeGrid(e, column, th);
403
+ const x = pageX + 10;
404
+ fakeGrid.style.left = x + "px";
405
+ }
406
+ function onMouseMove(ev) {
407
+ drawMovingColumn(ev.clientX);
408
+ grid._skipClickColumn = column;
409
+ }
410
+ document.addEventListener("mousemove", onMouseMove);
411
+ document.addEventListener("mouseup", onMouseUp);
412
+ function onMouseUp() {
413
+ document.removeEventListener("mousemove", onMouseMove);
414
+ document.removeEventListener("mouseup", onMouseUp);
415
+ if (fakeGrid) fakeGrid.remove();
416
+ grid.clearMovingClass(th);
417
+ if (grid._movingColumn && grid._targetColumn && grid._movingColumn !== grid._targetColumn) {
418
+ const newColumns = [];
419
+ for (let col of grid.columns) switch (col) {
420
+ case grid._movingColumn: break;
421
+ case grid._targetColumn:
422
+ if (grid.columns.indexOf(grid._movingColumn) > grid.columns.indexOf(grid._targetColumn)) {
423
+ newColumns.push(grid._movingColumn);
424
+ newColumns.push(grid._targetColumn);
425
+ } else {
426
+ newColumns.push(grid._targetColumn);
427
+ newColumns.push(grid._movingColumn);
428
+ }
429
+ break;
430
+ default:
431
+ newColumns.push(col);
432
+ break;
433
+ }
434
+ grid.columns = newColumns;
435
+ grid.afterDragColumn(column);
436
+ grid.refreshState();
437
+ }
438
+ delete grid._movingColumn;
439
+ delete grid._targetColumn;
440
+ }
441
+ }
442
+ addFakeGrid(e, column, th) {
443
+ const grid = this;
444
+ const rect = th.getBoundingClientRect();
445
+ const fakeGrid = document.createElement("table");
446
+ fakeGrid.className = grid.opt.gridClass || require_Base.BaseComponent.theme.gridClass || "grid-default";
447
+ fakeGrid.style = grid.opt.style || "";
448
+ fakeGrid.style.zIndex = ++require_Overlay.OverlayClass._zInd || 1e3;
449
+ fakeGrid.style.position = "fixed";
450
+ fakeGrid.style.top = (e.offsetY || 0 + rect.top + 5) + "px";
451
+ fakeGrid.style.width = rect.width + "px";
452
+ fakeGrid.style.height = rect.height + "px";
453
+ fakeGrid.innerHTML = (0, import_server_browser.renderToStaticMarkup)(grid.renderHeader([column], "fake"));
454
+ document.body.append(fakeGrid);
455
+ return fakeGrid;
456
+ }
457
+ clearMovingClass = function(th) {
458
+ if (th.classList.contains("grid-header-drag-over")) th.classList.remove("grid-header-drag-over");
459
+ };
460
+ mouseOverColumnDrag(e, column) {
461
+ const grid = this;
462
+ if (!grid._movingColumn || !grid.colDict) return;
463
+ const th = e.target.closest("TH");
464
+ if (!th || !th.hasAttribute("grid-header")) return;
465
+ grid._targetColumn = column;
466
+ th.classList.add("grid-header-drag-over");
467
+ }
468
+ mouseOutColumnDrag(e) {
469
+ const grid = this;
470
+ const th = e.target.closest("TH");
471
+ if (!th || !th.hasAttribute("grid-header")) return;
472
+ if (!grid._movingColumn) return;
473
+ grid.clearMovingClass(th);
474
+ delete grid._targetColumn;
475
+ }
476
+ onRowDblClick() {}
477
+ async canLeaveRow() {
478
+ return true;
479
+ }
480
+ async onSelectGridRow(e) {
481
+ const grid = this;
482
+ const gridElement = e.target.closest("TABLE");
483
+ if (!gridElement) return;
484
+ const rows = gridElement.tBodies[0].rows;
485
+ const clickedRow = e.target.closest("TR");
486
+ const prevSelectedIndex = grid.selectedRowIndex;
487
+ const newSelectedIndex = clickedRow.rowIndex - 1;
488
+ if (newSelectedIndex === prevSelectedIndex) return;
489
+ if (!await grid.canLeaveRow(prevSelectedIndex)) return;
490
+ const prevSelRow = rows[grid.selectedRowIndex];
491
+ if (prevSelRow) {
492
+ prevSelRow.classList.remove("grid-selected-row");
493
+ if (grid.opt.selectedRowClass) prevSelRow.classList.remove(grid.opt.selectedRowClass);
494
+ }
495
+ grid.selectedRowIndex = newSelectedIndex;
496
+ const newSelRow = rows[grid.selectedRowIndex];
497
+ newSelRow.classList.add(`grid-selected-row`);
498
+ if (grid.opt.selectedRowClass) newSelRow.classList.add(grid.opt.selectedRowClass);
499
+ grid.onSelectedRowChanged({
500
+ grid,
501
+ prev: prevSelectedIndex,
502
+ new: grid.selectedRowIndex,
503
+ source: "rowClick"
504
+ });
505
+ }
506
+ getKeyColumn() {
507
+ const grid = this;
508
+ if (grid.keyField) return grid.keyField;
509
+ if (!grid.columns || grid.columns.length <= 0) return "";
510
+ for (let col of grid.columns) if (col.name.toLowerCase() === "id") {
511
+ grid.keyField = col.name;
512
+ break;
513
+ }
514
+ grid.keyField = grid.keyField || grid.columns[0].name;
515
+ return grid.keyField;
516
+ }
517
+ selectedRow() {
518
+ const grid = this;
519
+ if (grid.selectedRowIndex == null || !grid.rows || grid.rows.length <= 0 || grid.selectedRowIndex < 0 || grid.selectedRowIndex >= grid.rows.length) return;
520
+ return grid.rows[grid.selectedRowIndex];
521
+ }
522
+ selectedValue() {
523
+ const grid = this;
524
+ const keyColumn = grid.getKeyColumn();
525
+ const row = grid.selectedRow();
526
+ return row != null ? row[keyColumn] : "";
527
+ }
528
+ selectedText() {
529
+ const grid = this;
530
+ if (!grid.nameField) return "";
531
+ const row = grid.selectedRow();
532
+ return row != null ? row[grid.nameField] : "";
533
+ }
534
+ selectedValues() {
535
+ const grid = this;
536
+ const keyColumn = grid.getKeyColumn();
537
+ const row = grid.selectedRow();
538
+ return row != null ? [{
539
+ value: row[keyColumn],
540
+ label: row[grid.nameField]
541
+ }] : [];
542
+ }
543
+ mouseResizerDoubleClick(e, column) {
544
+ const grid = this;
545
+ const th = e.target.closest("TH");
546
+ if (!th || !th.hasAttribute("grid-header")) return;
547
+ const initW = parseInt(th.style.width);
548
+ const fakeDiv = document.createElement("div");
549
+ fakeDiv.className = "grid-header-div-default " + (grid.opt.headerDivClass || "grid-header-div");
550
+ fakeDiv.style.opacity = 0;
551
+ fakeDiv.style.position = "fixed";
552
+ fakeDiv.innerHTML = (0, import_server_browser.renderToStaticMarkup)(grid.renderHeaderCell(column, "fake"));
553
+ document.body.append(fakeDiv);
554
+ let contentSize = Math.max(column.minW, parseInt(getComputedStyle(fakeDiv).width));
555
+ fakeDiv.className = "";
556
+ for (let row of grid.rows) {
557
+ fakeDiv.innerHTML = (0, import_server_browser.renderToStaticMarkup)(grid.renderCell(grid, column, row, false));
558
+ contentSize = Math.max(contentSize, parseInt(getComputedStyle(fakeDiv).width));
559
+ }
560
+ if (column.maxW != null) contentSize = Math.min(contentSize, +column.maxW);
561
+ const newW = contentSize + 12;
562
+ if (newW !== initW) {
563
+ grid._currW = grid._currW - column.w + newW;
564
+ column.w = newW;
565
+ grid.afterResizeColumn(column);
566
+ grid.refreshState();
567
+ }
568
+ fakeDiv.remove();
569
+ }
570
+ mouseResizerClick(e, column) {
571
+ const grid = this;
572
+ const th = e.target.closest("TH");
573
+ if (!th || !th.hasAttribute("grid-header")) return;
574
+ const gridElement = th.closest("TABLE");
575
+ const initW = parseInt(getComputedStyle(th).width);
576
+ const shiftX = e.pageX;
577
+ let otherColsW = grid._currW - column.w;
578
+ let resizing;
579
+ function resize(pageX) {
580
+ if (shiftX > 0) {
581
+ let w = initW + pageX - shiftX;
582
+ const prevW = column.w;
583
+ column.w = (!column.maxW || w <= column.maxW) && (!column.minW || w >= column.minW) ? w : column.w;
584
+ if (column.w !== prevW) {
585
+ grid._currW = otherColsW + column.w;
586
+ gridElement.style.width = "";
587
+ th.style.width = column.w + "px";
588
+ gridElement.style.width = grid._currW + "px";
589
+ }
590
+ }
591
+ }
592
+ function onMouseMove(e$1) {
593
+ resizing = true;
594
+ resize(e$1.pageX);
595
+ }
596
+ const remDS = gridElement.ondragstart;
597
+ gridElement.ondragstart = function() {
598
+ return false;
599
+ };
600
+ const remSS = gridElement.onselectstart;
601
+ gridElement.onselectstart = function() {
602
+ return false;
603
+ };
604
+ function onMouseUp() {
605
+ document.removeEventListener("mousemove", onMouseMove);
606
+ document.removeEventListener("mouseup", onMouseUp);
607
+ gridElement.ondragstart = remDS;
608
+ gridElement.onselectstart = remSS;
609
+ if (resizing) {
610
+ resizing = false;
611
+ if (initW !== column.w) {
612
+ grid.afterResizeColumn(column);
613
+ grid.refreshState();
614
+ }
615
+ }
616
+ }
617
+ document.addEventListener("mousemove", onMouseMove);
618
+ document.addEventListener("mouseup", onMouseUp);
619
+ }
620
+ afterResizeColumn() {}
621
+ afterDragColumn() {}
622
+ };
623
+ exports.Grid = Grid;
624
+ exports.GridClass = GridClass;
@@ -0,0 +1,6 @@
1
+ var __commonJSMin = (cb, mod) => () => (mod || cb((mod = { exports: {} }).exports, mod), mod.exports);
2
+ var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, { get: (a, b) => (typeof require !== "undefined" ? require : a)[b] }) : x)(function(x) {
3
+ if (typeof require !== "undefined") return require.apply(this, arguments);
4
+ throw Error("Calling `require` for \"" + x + "\" in an environment that doesn't expose the `require` function.");
5
+ });
6
+ export { __commonJSMin, __require };
package/dist/index2.js ADDED
@@ -0,0 +1,2 @@
1
+ var __commonJSMin = (cb, mod) => () => (mod || cb((mod = { exports: {} }).exports, mod), mod.exports);
2
+ exports.__commonJSMin = __commonJSMin;