@revolist/revogrid 4.22.0 → 4.23.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 (130) hide show
  1. package/dist/cjs/{cell-renderer-uZmDBXz7.js → cell-renderer-DWJ9Px9f.js} +9 -3
  2. package/dist/cjs/{column.drag.plugin-CM_5mKV3.js → column.drag.plugin-CaEBDG-Q.js} +409 -267
  3. package/dist/cjs/{column.service-DvQDqxxx.js → column.service-f612L4ql.js} +1 -1
  4. package/dist/cjs/{dimension.helpers-CaIsYC99.js → dimension.helpers-B9HgANnM.js} +14 -146
  5. package/dist/cjs/{edit.utils-CwMzSIVF.js → edit.utils-pKeiYFLJ.js} +22 -1
  6. package/dist/cjs/{header-cell-renderer-B1dJwgTO.js → header-cell-renderer-4yq9_WbM.js} +1 -1
  7. package/dist/cjs/index-DxaSE5uZ.js +136 -0
  8. package/dist/cjs/index.cjs.js +45 -31
  9. package/dist/cjs/revo-grid.cjs.entry.js +35 -15
  10. package/dist/cjs/revogr-attribution_7.cjs.entry.js +44 -26
  11. package/dist/cjs/revogr-clipboard_3.cjs.entry.js +11 -9
  12. package/dist/cjs/revogr-data_4.cjs.entry.js +132 -178
  13. package/dist/cjs/revogr-filter-panel.cjs.entry.js +2 -1
  14. package/dist/cjs/{text-editor-BTnGaIl3.js → text-editor-B4W-m-r-.js} +3 -3
  15. package/dist/cjs/{throttle-CI4MsAqs.js → throttle-BCwEuJJq.js} +59 -24
  16. package/dist/cjs/viewport.helpers-BND76K2j.js +140 -0
  17. package/dist/cjs/{viewport.store-Dcjud-a-.js → viewport.store-BlKQ4x9H.js} +16 -16
  18. package/dist/collection/components/clipboard/revogr-clipboard.js +1 -1
  19. package/dist/collection/components/data/revogr-data.js +5 -3
  20. package/dist/collection/components/header/header-group-renderer.js +2 -1
  21. package/dist/collection/components/header/header-renderer.js +6 -5
  22. package/dist/collection/components/header/revogr-header-style.css +13 -3
  23. package/dist/collection/components/header/revogr-header.js +105 -42
  24. package/dist/collection/components/order/order-row.service.js +6 -5
  25. package/dist/collection/components/overlay/keyboard.service.js +25 -3
  26. package/dist/collection/components/overlay/selection.utils.js +8 -6
  27. package/dist/collection/components/revoGrid/revo-grid.js +6 -5
  28. package/dist/collection/components/revoGrid/viewport.service.js +2 -1
  29. package/dist/collection/components/scroll/revogr-viewport-scroll.js +10 -6
  30. package/dist/collection/components/scrollable/revogr-scroll-virtual.js +4 -10
  31. package/dist/collection/plugins/filter/filter.panel.js +2 -1
  32. package/dist/collection/plugins/filter/filter.plugin.js +11 -4
  33. package/dist/collection/plugins/groupingRow/grouping.row.plugin.js +25 -1
  34. package/dist/collection/plugins/moveColumn/column.drag.plugin.js +18 -15
  35. package/dist/collection/plugins/sorting/sorting.func.js +173 -15
  36. package/dist/collection/plugins/sorting/sorting.plugin.js +167 -84
  37. package/dist/collection/plugins/sorting/sorting.sign.js +7 -1
  38. package/dist/collection/serve/controller.js +98 -37
  39. package/dist/collection/serve/data.js +273 -144
  40. package/dist/collection/services/dimension.provider.js +16 -1
  41. package/dist/collection/services/local.scroll.service.js +59 -24
  42. package/dist/collection/services/scroll.dimension.helpers.js +83 -0
  43. package/dist/collection/services/selection.store.connector.js +4 -1
  44. package/dist/collection/store/dimension/dimension.recalculate.plugin.js +22 -9
  45. package/dist/collection/store/dimension/dimension.store.js +4 -2
  46. package/dist/collection/store/vp/viewport.helpers.js +9 -0
  47. package/dist/collection/store/vp/viewport.store.js +5 -16
  48. package/dist/collection/types/events.js +4 -0
  49. package/dist/collection/utils/key.utils.js +20 -0
  50. package/dist/collection/utils/store.utils.js +3 -3
  51. package/dist/{revo-grid/cell-renderer-K_BKH7Kx.js → esm/cell-renderer-8UiGd-s7.js} +9 -3
  52. package/dist/esm/{column.drag.plugin-DEqZ2qXJ.js → column.drag.plugin-BsfhsfmB.js} +402 -266
  53. package/dist/esm/{column.service-Cdz3dYqZ.js → column.service-DbpulTog.js} +1 -1
  54. package/dist/{revo-grid/debounce-BfO9dz9v.js → esm/debounce-PCRWZliA.js} +1 -1
  55. package/dist/{revo-grid/dimension.helpers-DzxqJQqN.js → esm/dimension.helpers-CGKwSvw6.js} +7 -128
  56. package/dist/esm/{edit.utils-CzfeG98N.js → edit.utils-Dnnbd0xG.js} +22 -2
  57. package/dist/{revo-grid/header-cell-renderer-DXhxZMly.js → esm/header-cell-renderer-DGI2FAD8.js} +1 -1
  58. package/dist/esm/index-Db3qZoW5.js +127 -0
  59. package/dist/esm/index.js +15 -10
  60. package/dist/esm/revo-grid.entry.js +34 -14
  61. package/dist/esm/revogr-attribution_7.entry.js +43 -25
  62. package/dist/esm/revogr-clipboard_3.entry.js +12 -10
  63. package/dist/esm/revogr-data_4.entry.js +133 -179
  64. package/dist/esm/revogr-filter-panel.entry.js +3 -2
  65. package/dist/esm/{text-editor-C1ks5eQ4.js → text-editor-C3RUSwH5.js} +2 -2
  66. package/dist/esm/{throttle-BEjFQa2l.js → throttle-CaUDyxyU.js} +60 -25
  67. package/dist/esm/viewport.helpers-CoCAvmZs.js +133 -0
  68. package/dist/{revo-grid/viewport.store-saAZJHRo.js → esm/viewport.store-COAfzAyu.js} +15 -17
  69. package/dist/{esm/cell-renderer-K_BKH7Kx.js → revo-grid/cell-renderer-8UiGd-s7.js} +9 -3
  70. package/dist/revo-grid/{column.drag.plugin-DEqZ2qXJ.js → column.drag.plugin-BsfhsfmB.js} +402 -266
  71. package/dist/revo-grid/{column.service-Cdz3dYqZ.js → column.service-DbpulTog.js} +1 -1
  72. package/dist/{esm/debounce-BfO9dz9v.js → revo-grid/debounce-PCRWZliA.js} +1 -1
  73. package/dist/{esm/dimension.helpers-DzxqJQqN.js → revo-grid/dimension.helpers-CGKwSvw6.js} +7 -128
  74. package/dist/revo-grid/{edit.utils-CzfeG98N.js → edit.utils-Dnnbd0xG.js} +22 -2
  75. package/dist/{esm/header-cell-renderer-DXhxZMly.js → revo-grid/header-cell-renderer-DGI2FAD8.js} +1 -1
  76. package/dist/revo-grid/index-Db3qZoW5.js +127 -0
  77. package/dist/revo-grid/index.esm.js +15 -10
  78. package/dist/revo-grid/revo-grid.entry.js +34 -14
  79. package/dist/revo-grid/revogr-attribution_7.entry.js +43 -25
  80. package/dist/revo-grid/revogr-clipboard_3.entry.js +12 -10
  81. package/dist/revo-grid/revogr-data_4.entry.js +133 -179
  82. package/dist/revo-grid/revogr-filter-panel.entry.js +3 -2
  83. package/dist/revo-grid/{text-editor-C1ks5eQ4.js → text-editor-C3RUSwH5.js} +2 -2
  84. package/dist/revo-grid/{throttle-BEjFQa2l.js → throttle-CaUDyxyU.js} +60 -25
  85. package/dist/revo-grid/viewport.helpers-CoCAvmZs.js +133 -0
  86. package/dist/{esm/viewport.store-saAZJHRo.js → revo-grid/viewport.store-COAfzAyu.js} +15 -17
  87. package/dist/types/components/header/header-group-renderer.d.ts +1 -0
  88. package/dist/types/components/header/header-renderer.d.ts +1 -0
  89. package/dist/types/components/header/revogr-header.d.ts +6 -0
  90. package/dist/types/components/overlay/keyboard.service.d.ts +5 -0
  91. package/dist/types/plugins/groupingRow/grouping.row.plugin.d.ts +8 -0
  92. package/dist/types/plugins/moveColumn/column.drag.plugin.d.ts +29 -3
  93. package/dist/types/plugins/sorting/sorting.func.d.ts +25 -2
  94. package/dist/types/plugins/sorting/sorting.plugin.d.ts +84 -9
  95. package/dist/types/plugins/sorting/sorting.sign.d.ts +5 -1
  96. package/dist/types/plugins/sorting/sorting.types.d.ts +46 -1
  97. package/dist/types/services/local.scroll.service.d.ts +10 -2
  98. package/dist/types/services/scroll.dimension.helpers.d.ts +20 -0
  99. package/dist/types/store/vp/viewport.helpers.d.ts +2 -0
  100. package/dist/types/types/events.d.ts +1 -1
  101. package/dist/types/types/interfaces.d.ts +11 -0
  102. package/dist/types/utils/key.utils.d.ts +8 -0
  103. package/hydrate/index.js +791 -539
  104. package/hydrate/index.mjs +791 -539
  105. package/package.json +1 -1
  106. package/standalone/column.service.js +1 -1
  107. package/standalone/data.store.js +1 -1
  108. package/standalone/debounce.js +1 -1
  109. package/standalone/dimension.helpers.js +1 -1
  110. package/standalone/index.js +1 -1
  111. package/standalone/local.scroll.timer.js +1 -1
  112. package/standalone/revo-grid.js +1 -1
  113. package/standalone/revogr-clipboard2.js +1 -1
  114. package/standalone/revogr-data2.js +1 -1
  115. package/standalone/revogr-edit.js +1 -1
  116. package/standalone/revogr-edit2.js +1 -1
  117. package/standalone/revogr-filter-panel.js +1 -1
  118. package/standalone/revogr-header2.js +1 -1
  119. package/standalone/revogr-order-editor2.js +1 -1
  120. package/standalone/revogr-overlay-selection2.js +1 -1
  121. package/standalone/revogr-row-headers.js +1 -1
  122. package/standalone/revogr-row-headers2.js +1 -1
  123. package/standalone/revogr-scroll-virtual2.js +1 -1
  124. package/standalone/revogr-viewport-scroll2.js +1 -1
  125. package/standalone/selection.utils.js +1 -1
  126. package/standalone/throttle.js +1 -1
  127. package/standalone/toNumber.js +1 -1
  128. package/dist/cjs/viewport.helpers-BAovztDd.js +0 -58
  129. package/dist/esm/viewport.helpers-VXhsJZtn.js +0 -52
  130. package/dist/revo-grid/viewport.helpers-VXhsJZtn.js +0 -52
@@ -4,14 +4,15 @@
4
4
  'use strict';
5
5
 
6
6
  var index = require('./index-Dq8Xzj5l.js');
7
- var dimension_helpers = require('./dimension.helpers-CaIsYC99.js');
7
+ var dimension_helpers = require('./dimension.helpers-B9HgANnM.js');
8
8
  var events = require('./events-DeLDyZlb.js');
9
- var column_service = require('./column.service-DvQDqxxx.js');
10
- var edit_utils = require('./edit.utils-CwMzSIVF.js');
9
+ var column_service = require('./column.service-f612L4ql.js');
10
+ var edit_utils = require('./edit.utils-pKeiYFLJ.js');
11
+ var index$1 = require('./index-DxaSE5uZ.js');
11
12
  var debounce = require('./debounce-CcpHiH2p.js');
12
- var viewport_store = require('./viewport.store-Dcjud-a-.js');
13
- var viewport_helpers = require('./viewport.helpers-BAovztDd.js');
14
- var throttle = require('./throttle-CI4MsAqs.js');
13
+ var viewport_store = require('./viewport.store-BlKQ4x9H.js');
14
+ var viewport_helpers = require('./viewport.helpers-BND76K2j.js');
15
+ var throttle = require('./throttle-BCwEuJJq.js');
15
16
 
16
17
  const Attribution = class {
17
18
  constructor(hostRef) {
@@ -109,8 +110,8 @@ function getCurrentCell({ x, y }, { el, rows, cols }) {
109
110
  cellX = width - 1;
110
111
  }
111
112
  // Get the row and column items based on the cell position
112
- const rgRow = dimension_helpers.getItemByPosition(rows, cellY);
113
- const rgCol = dimension_helpers.getItemByPosition(cols, cellX);
113
+ const rgRow = dimension_helpers.getItemByPosition(rows, cellY + (rows.renderOffset || 0));
114
+ const rgCol = dimension_helpers.getItemByPosition(cols, cellX + (cols.renderOffset || 0));
114
115
  // Set the row and column index to 0 if they are before the first item
115
116
  if (rgCol.itemIndex < 0) {
116
117
  rgCol.itemIndex = 0;
@@ -180,10 +181,12 @@ function styleByCellProps(styles) {
180
181
  };
181
182
  }
182
183
  function getCell({ x, y, x1, y1 }, dimensionRow, dimensionCol) {
183
- const top = dimension_helpers.getItemByIndex(dimensionRow, y).start;
184
- const left = dimension_helpers.getItemByIndex(dimensionCol, x).start;
185
- const bottom = dimension_helpers.getItemByIndex(dimensionRow, y1).end;
186
- const right = dimension_helpers.getItemByIndex(dimensionCol, x1).end;
184
+ const rowOffset = dimensionRow.renderOffset || 0;
185
+ const colOffset = dimensionCol.renderOffset || 0;
186
+ const top = dimension_helpers.getItemByIndex(dimensionRow, y).start - rowOffset;
187
+ const left = dimension_helpers.getItemByIndex(dimensionCol, x).start - colOffset;
188
+ const bottom = dimension_helpers.getItemByIndex(dimensionRow, y1).end - rowOffset;
189
+ const right = dimension_helpers.getItemByIndex(dimensionCol, x1).end - colOffset;
187
190
  return {
188
191
  left,
189
192
  right,
@@ -281,9 +284,29 @@ class KeyboardService {
281
284
  constructor(sv) {
282
285
  this.sv = sv;
283
286
  }
287
+ /**
288
+ * Appends printable key input that arrives after edit mode was requested
289
+ * but before the editor input has mounted or received focus.
290
+ */
291
+ appendPendingEditValue(e) {
292
+ if (edit_utils.isShortcutModifier(e) ||
293
+ e.key.length !== 1 ||
294
+ (e.target instanceof HTMLElement && edit_utils.isEditInput(e.target))) {
295
+ return false;
296
+ }
297
+ const editCell = this.sv.selectionStore.get('edit');
298
+ if (typeof (editCell === null || editCell === void 0 ? void 0 : editCell.val) !== 'string') {
299
+ return false;
300
+ }
301
+ this.sv.selectionStore.set('edit', Object.assign(Object.assign({}, editCell), { val: `${editCell.val}${e.key}` }));
302
+ return true;
303
+ }
284
304
  async keyDown(e, canRange, isEditMode, { range, focus }) {
285
305
  // IF EDIT MODE
286
306
  if (isEditMode) {
307
+ if (this.appendPendingEditValue(e)) {
308
+ return;
309
+ }
287
310
  switch (e.code) {
288
311
  case dimension_helpers.codesLetter.ESCAPE:
289
312
  this.sv.cancel();
@@ -335,7 +358,7 @@ class KeyboardService {
335
358
  return;
336
359
  }
337
360
  // pressed letter key
338
- if (e.key.length === 1) {
361
+ if (!edit_utils.isShortcutModifier(e) && e.key.length === 1) {
339
362
  this.sv.change(e.key);
340
363
  return;
341
364
  }
@@ -362,7 +385,7 @@ class KeyboardService {
362
385
  // this interval needed for several cases
363
386
  // grid could be resized before next click
364
387
  // at this case to avoid screen jump we use this interval
365
- await dimension_helpers.timeout(dimension_helpers.RESIZE_INTERVAL + 30);
388
+ await index$1.timeout(dimension_helpers.RESIZE_INTERVAL + 30);
366
389
  const range = this.sv.selectionStore.get('range');
367
390
  const focus = this.sv.selectionStore.get('focus');
368
391
  return this.keyPositionChange(data.changes, range, focus, data.isMulti);
@@ -377,7 +400,8 @@ class KeyboardService {
377
400
  }
378
401
  const eData = this.sv.getData();
379
402
  if (isMulti) {
380
- if (isAfterLast(data.end, eData.lastCell) || isBeforeFirst(data.start)) {
403
+ const isOutOfBounds = [data.start, data.end].some(cell => isAfterLast(cell, eData.lastCell) || isBeforeFirst(cell));
404
+ if (isOutOfBounds) {
381
405
  return false;
382
406
  }
383
407
  const range = column_service.getRange(data.start, data.end);
@@ -1288,15 +1312,9 @@ const RevogrScrollVirtual = class {
1288
1312
  */
1289
1313
  async changeScroll(e) {
1290
1314
  if (e.delta) {
1291
- switch (e.dimension) {
1292
- case 'rgCol':
1293
- e.coordinate = this.element.scrollLeft + e.delta;
1294
- break;
1295
- case 'rgRow':
1296
- e.coordinate = this.element.scrollTop + e.delta;
1297
- break;
1298
- }
1299
- this.setScroll(e);
1315
+ const scrollProperty = e.dimension === 'rgRow' ? 'scrollTop' : 'scrollLeft';
1316
+ const currentPhysicalCoordinate = this.element[scrollProperty];
1317
+ return this.localScrollService.setScrollByDelta(e, currentPhysicalCoordinate);
1300
1318
  }
1301
1319
  return e;
1302
1320
  }
@@ -1317,7 +1335,7 @@ const RevogrScrollVirtual = class {
1317
1335
  this.autohideScrollPlugin.clear();
1318
1336
  }
1319
1337
  componentWillLoad() {
1320
- this.scrollSize = dimension_helpers.getScrollbarSize(document);
1338
+ this.scrollSize = index$1.getScrollbarSize(document);
1321
1339
  }
1322
1340
  componentDidRender() {
1323
1341
  let scrollSize = 0;
@@ -1359,7 +1377,7 @@ const RevogrScrollVirtual = class {
1359
1377
  }
1360
1378
  render() {
1361
1379
  const size = throttle.getContentSize(this.realSize, this.dimension === 'rgRow' ? this.element.clientHeight : this.element.clientWidth, this.clientSize);
1362
- return (index.h(index.Host, { key: '57f81ec9deb2395e96b283338c03b9ad44f1e929', onScroll: (e) => this.onScroll(e) }, index.h("div", { key: '1a8c869adab53b362c351dae8d53664f33c4212c', style: {
1380
+ return (index.h(index.Host, { key: '7213817ef941eee4050b714266598ec0c2961ee9', onScroll: (e) => this.onScroll(e) }, index.h("div", { key: '501da49c63253ab943172494b9dbf5399be56cee', style: {
1363
1381
  [this.dimension === 'rgRow' ? 'height' : 'width']: `${size}px`,
1364
1382
  } })));
1365
1383
  }
@@ -4,10 +4,11 @@
4
4
  'use strict';
5
5
 
6
6
  var index = require('./index-Dq8Xzj5l.js');
7
- var dimension_helpers = require('./dimension.helpers-CaIsYC99.js');
8
- var textEditor = require('./text-editor-BTnGaIl3.js');
9
- var edit_utils = require('./edit.utils-CwMzSIVF.js');
7
+ var dimension_helpers = require('./dimension.helpers-B9HgANnM.js');
8
+ var textEditor = require('./text-editor-B4W-m-r-.js');
9
+ var edit_utils = require('./edit.utils-pKeiYFLJ.js');
10
10
  var debounce = require('./debounce-CcpHiH2p.js');
11
+ require('./index-DxaSE5uZ.js');
11
12
 
12
13
  const Clipboard = class {
13
14
  constructor(hostRef) {
@@ -86,8 +87,8 @@ const Clipboard = class {
86
87
  return;
87
88
  }
88
89
  const data = this.getData(beforeCopy.detail.event);
89
- this.copyRegion.emit(data || undefined);
90
90
  e.preventDefault();
91
+ this.copyRegion.emit(data || undefined);
91
92
  }
92
93
  /**
93
94
  * Listen to copy event and emit copy region event
@@ -334,11 +335,12 @@ class RowOrderService {
334
335
  getRow(y, { el, rows }) {
335
336
  const { top } = el.getBoundingClientRect();
336
337
  const topRelative = y - top;
337
- const rgRow = dimension_helpers.getItemByPosition(rows, topRelative);
338
+ const rowOffset = rows.renderOffset || 0;
339
+ const rgRow = dimension_helpers.getItemByPosition(rows, topRelative + rowOffset);
338
340
  const absolutePosition = {
339
341
  itemIndex: rgRow.itemIndex,
340
- start: rgRow.start + top,
341
- end: rgRow.end + top,
342
+ start: rgRow.start - rowOffset + top,
343
+ end: rgRow.end - rowOffset + top,
342
344
  };
343
345
  return absolutePosition;
344
346
  }
@@ -347,8 +349,8 @@ class RowOrderService {
347
349
  const { top, left } = el.getBoundingClientRect();
348
350
  const topRelative = y - top;
349
351
  const leftRelative = x - left;
350
- const rgRow = dimension_helpers.getItemByPosition(rows, topRelative);
351
- const rgCol = dimension_helpers.getItemByPosition(cols, leftRelative);
352
+ const rgRow = dimension_helpers.getItemByPosition(rows, topRelative + (rows.renderOffset || 0));
353
+ const rgCol = dimension_helpers.getItemByPosition(cols, leftRelative + (cols.renderOffset || 0));
352
354
  return { x: rgCol.itemIndex, y: rgRow.itemIndex };
353
355
  }
354
356
  }