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
package/src/Dropdown.jsx DELETED
@@ -1,339 +0,0 @@
1
- import { useState, useEffect } from 'react';
2
- import { BaseComponent } from './Base';
3
- import { Images } from './Themes/Images';
4
- import { ModalClass } from './Modal';
5
- // ==================================================================================================================================================================
6
- export function Dropdown(props) {
7
- let dd = null;
8
-
9
- const [ddState, setState] = useState({ dd: dd, ind: 0 });
10
-
11
- if (ddState.dd) {
12
- dd = ddState.dd;
13
- }
14
- else {
15
- dd = new DropdownClass(props);
16
- }
17
-
18
- if (props.init && !ModalClass._isFake) {
19
- props.init(dd);
20
- }
21
-
22
- dd.refreshState = function () {
23
- setState({ dd: dd, ind: dd.stateind++ });
24
- }
25
-
26
- useEffect(() => {
27
- dd.setupEvents();
28
-
29
- return () => {
30
- dd.clearEvents();
31
- }
32
- }, [dd])
33
-
34
- return (dd.render());
35
- }
36
- // -------------------------------------------------------------------------------------------------------------------------------------------------------------
37
- export class DropdownClass extends ModalClass {
38
- constructor(props) {
39
- super(props);
40
-
41
- const dd = this;
42
-
43
- dd.getItems = props.getItems || function () { return new Promise(function (resolve) { resolve([]) }); };
44
-
45
- window._dropdownSeq = window._dropdownSeq || 0;
46
-
47
- dd.id = window._dropdownSeq++;
48
-
49
- dd.pageNumber = 1;
50
- dd.pageSize = props.pageSize || 20;
51
- dd.items = props.items || [];
52
-
53
- dd.menuItemClass = props.menuItemClass || BaseComponent.theme.menuItemClass;
54
- dd.menuClass = props.menuClass || BaseComponent.theme.menuClass;
55
-
56
- dd.stateind = 0;
57
-
58
- dd.opt.onItemClick = props.onItemClick;
59
- dd.opt.onClose = props.onClose;
60
-
61
- dd.opt.parentRect = props.parentRect;
62
-
63
- dd.maxW = props.maxW;
64
-
65
- dd.opt.closeWhenEscape = true;
66
- dd.opt.noHeader = true;
67
- dd.opt.noFooter = true;
68
- dd.opt.resizable = false;
69
- dd.opt.noPadding = true;
70
- dd.opt.hiddenOverlay = true;
71
-
72
- dd.opt.onItemMouseEnter = props.onItemMouseEnter;
73
- dd.opt.onItemMouseLeave = props.onItemMouseLeave;
74
-
75
- dd.renderContent = dd.renderDropdownContent;
76
-
77
- dd.visible = dd.items.length > 0;
78
- }
79
- // -------------------------------------------------------------------------------------------------------------------------------------------------------------
80
- appendItems() {
81
- const dd = this;
82
-
83
- dd.pageNumber++;
84
-
85
- dd.getItems({ filter: dd.filter }).then(
86
- items => {
87
- dd.items = items;
88
-
89
- dd.refreshState();
90
- }
91
- );
92
- }
93
- // -------------------------------------------------------------------------------------------------------------------------------------------------------------
94
- render() {
95
- return super.render();
96
- }
97
- // -------------------------------------------------------------------------------------------------------------------------------------------------------------
98
- renderDropdownContent() {
99
- const dd = this;
100
-
101
- if (!dd.items || dd.waitingItems) {
102
- return dd.Spinner(dd.id);
103
- }
104
-
105
- return (
106
- <>
107
- {
108
- dd.allowUserFilter ? <></> : <></>
109
- }
110
- <ul
111
- key={`dropdown_${dd.id}_`}
112
- className={`dropdown-ul ${dd.menuClass || ''}`}
113
- style={{ overflowX: 'hidden', padding: '0', margin: '0' }}
114
- >
115
- {
116
- dd.items.map((item, ind) => {
117
- return (
118
- <li
119
- dropdown-item={`${dd.id}_${item.id}_`}
120
- key={`dropdownitem_${dd.id}_${item.id}_${ind}_`}
121
- title={dd.translate(item.title || item.text)}
122
- className={dd.menuItemClass + (dd.activeItem === item ? ' active' : '')}
123
- style={{
124
- listStyleType: 'none',
125
- display: 'flex',
126
- justifyContent: 'start',
127
- flexWrap: 'nowrap',
128
- alignItems: 'center',
129
- paddingRight: item.items && item.items.length > 0 ? '' : '1em',
130
- height: '1.5em',
131
- }}
132
- onClick={(e) => dd.onItemClick(e, item.id)}
133
- onMouseEnter={(e) => {
134
- if (!dd.opt.onItemMouseEnter) return;
135
- dd.opt.onItemMouseEnter(e, item);
136
- }}
137
- onMouseLeave={(e) => {
138
- if (!dd.opt.onItemMouseLeave) return;
139
- dd.opt.onItemMouseLeave(e, item);
140
- }}
141
- >
142
- <div style={{ width: '2em' }}>
143
- {item.img ? item.img() : ''}
144
- </div>
145
- <div
146
- style={{
147
- display: 'flex',
148
- justifyContent: 'space-between',
149
- flexWrap: 'nowrap',
150
- alignItems: 'center',
151
- width: '100%',
152
- }}
153
- >
154
- <span>{dd.translate(item.text)}</span>
155
- {item.items && item.items.length > 0 ? Images.images.submenu(20, 10) : ''}
156
- </div>
157
- </li>
158
- );
159
- })
160
- }
161
- {
162
- dd.allowUpload && dd.pageSize > 0 && dd.items.length === dd.pageSize * dd.pageNumber ?
163
- <ul className={`dropdown-ul ${dd.menuClass || ''}`}
164
- key={`dropdownadd_${dd.id}_`}
165
- >
166
- <li dropdown-item={`${dd.id}_append_`}
167
- key={`dropdownitem_$${dd.id}_append_`}
168
- title={dd.translate('load more records')}
169
- className={dd.menuItemClass}
170
- style={{ listStyleType: 'none', display: 'flex', flexWrap: 'nowrap' }}
171
- onClick={(e) => dd.onItemClick(e, 'append')}
172
- >
173
- ${dd.translate('more') + '...'}
174
- </li>
175
- </ul>
176
- : <></>
177
- }
178
- </ul>
179
- </>
180
- );
181
- }
182
- // -------------------------------------------------------------------------------------------------------------------------------------------------------------
183
- calcPos(e) {
184
- const dd = this;
185
-
186
- const rect = dd.getDimensionsByContent();
187
- const parentRect = dd.opt.parentRect ? dd.opt.parentRect : { x: e.clientX, y: e.clientY, width: e.width || 0, height: e.height || 0 };
188
-
189
- dd.opt.pos = {
190
- x: parentRect.x,
191
- y: parentRect.y + parseInt(parentRect.height),
192
- w: Math.max(rect.w, parentRect.width),
193
- h: rect.h
194
- };
195
-
196
- if (dd.maxW != null) {
197
- dd.opt.pos.w = Math.min(dd.opt.pos.w, dd.maxW);
198
- }
199
- }
200
- // -------------------------------------------------------------------------------------------------------------------------------------------------------------
201
- popup(e) {
202
- const dd = this;
203
-
204
- function afterGetItems(newItems) {
205
- dd.waitingItems = false;
206
-
207
- if (newItems && newItems.length > 0) {
208
- dd.items.push(...newItems);
209
- }
210
-
211
- dd.lastPageNumber = dd.pageNumber;
212
-
213
- dd.visible = dd.items.length > 0;
214
-
215
- if (dd.items.length <= 0 && !dd.opt.allowUserFilter) return;
216
-
217
- dd.calcPos(e);
218
- //log(' DropdownPos w = ' + dd.pos.w + ', h = ' + dd.pos.h);
219
-
220
- dd.refreshState();
221
- }
222
-
223
- if (!dd.lastPageNumber || dd.lastPageNumber !== dd.pageNumber || dd.items.length <= 0) {
224
- dd.waitingItems = true;
225
- dd.visible = true;
226
- dd.calcPos(e);
227
-
228
- dd.refreshState();
229
-
230
- dd.getItems({ self: dd, filter: dd.filter, pageSize: dd.pageSize, pageNumber: dd.pageNumber }).then(
231
- items => {
232
- afterGetItems(items);
233
- }
234
- ).finally(() => {
235
- dd.waitingItems = false;
236
- dd.refreshState();
237
- });
238
- }
239
- else {
240
- afterGetItems();
241
- }
242
- }
243
- // -------------------------------------------------------------------------------------------------------------------------------------------------------------
244
- close() {
245
- const dd = this;
246
-
247
- dd.items = [];
248
- delete dd.activeItem;
249
- delete dd.lastPageNumber;
250
-
251
- super.close();
252
- }
253
- // -------------------------------------------------------------------------------------------------------------------------------------------------------------
254
- onItemClick(e, itemId) {
255
- const dd = this;
256
-
257
- if (itemId === 'append') {
258
- dd.appendItems();
259
- }
260
- else {
261
- if (dd.opt.onItemClick) {
262
- dd.opt.onItemClick({ owner: dd.opt.owner, itemId: itemId, self: dd, clientX: e.clientX, clientY: e.clientY, target: e.target });
263
- }
264
-
265
- const clickedItem = dd.items.find(function (item) {
266
- return item.id === itemId;
267
- });
268
-
269
- if (!clickedItem || !clickedItem.noClose) {
270
- dd.close();
271
- }
272
- }
273
- }
274
- // -------------------------------------------------------------------------------------------------------------------------------------------------------------
275
- setupEvents() {
276
- const dd = this;
277
-
278
- super.setupEvents();
279
-
280
- function onKeyDown(e) {
281
- const key = e && e.key ? e.key.toLowerCase() : '';
282
-
283
- let ind;
284
-
285
- switch (key) {
286
- case 'enter':
287
- if (!dd.activeItem) return;
288
-
289
- dd.opt.onItemClick({ owner: dd.opt.owner, itemId: dd.activeItem.id, self: dd });
290
- dd.close();
291
- break;
292
- case 'down':
293
- case 'arrowdown':
294
- if (dd.activeItem) {
295
- ind = dd.items.indexOf(dd.activeItem);
296
-
297
- if (ind < 0 || ind === dd.items.length - 1) return;
298
-
299
- dd.activeItem = dd.items[ind + 1];
300
- }
301
- else if (dd.items.length > 0) {
302
- dd.activeItem = dd.items[0];
303
- }
304
-
305
- dd.refreshState();
306
- break;
307
- case 'up':
308
- case 'arrowup':
309
- if (dd.activeItem) {
310
- ind = dd.items.indexOf(dd.activeItem);
311
-
312
- if (ind <= 0) return;
313
-
314
- dd.activeItem = dd.items[ind - 1];
315
- }
316
- else if (dd.items.length > 0) {
317
- dd.activeItem = dd.items[0];
318
- }
319
-
320
- dd.refreshState();
321
- break;
322
- case 'tab':
323
- dd.close();
324
- break;
325
- default:
326
- break;
327
- }
328
- }
329
-
330
- document.addEventListener('keydown', onKeyDown);
331
-
332
- const remClearEvents = dd.clearEvents;
333
- dd.clearEvents = function () {
334
- remClearEvents();
335
- document.removeEventListener('keydown', onKeyDown);
336
- }
337
- }
338
- }
339
- // ==================================================================================================================================================================