@revolist/revogrid 4.8.0 → 4.8.2

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 (157) hide show
  1. package/dist/cjs/base.plugin-75fc9e81.js.map +1 -1
  2. package/dist/cjs/{column.service-b3b5a4ee.js → column.service-43f8c476.js} +2 -2
  3. package/dist/cjs/{column.service-b3b5a4ee.js.map → column.service-43f8c476.js.map} +1 -1
  4. package/dist/cjs/{filter.button-147884a8.js → filter.button-35f508a0.js} +3 -3
  5. package/dist/cjs/filter.button-35f508a0.js.map +1 -0
  6. package/dist/cjs/{header-cell-renderer-96a37624.js → header-cell-renderer-a3b43bca.js} +2 -2
  7. package/dist/cjs/{header-cell-renderer-96a37624.js.map → header-cell-renderer-a3b43bca.js.map} +1 -1
  8. package/dist/cjs/index.cjs.js +1 -1
  9. package/dist/cjs/{key.utils-be4d0b46.js → key.utils-4a384064.js} +17 -12
  10. package/dist/cjs/key.utils-4a384064.js.map +1 -0
  11. package/dist/cjs/revo-grid.cjs.entry.js +14 -9
  12. package/dist/cjs/revo-grid.cjs.entry.js.map +1 -1
  13. package/dist/cjs/revogr-attribution_6.cjs.entry.js +41 -12
  14. package/dist/cjs/revogr-attribution_6.cjs.entry.js.map +1 -1
  15. package/dist/cjs/revogr-clipboard_3.cjs.entry.js +5 -3
  16. package/dist/cjs/revogr-clipboard_3.cjs.entry.js.map +1 -1
  17. package/dist/cjs/revogr-data_4.cjs.entry.js +10 -9
  18. package/dist/cjs/revogr-data_4.cjs.entry.js.map +1 -1
  19. package/dist/cjs/revogr-filter-panel.cjs.entry.js +13 -8
  20. package/dist/cjs/revogr-filter-panel.cjs.entry.js.map +1 -1
  21. package/dist/cjs/{selection.helpers-032d7192.js → selection.helpers-26d856ba.js} +67 -20
  22. package/dist/cjs/selection.helpers-26d856ba.js.map +1 -0
  23. package/dist/collection/components/clipboard/revogr-clipboard.js +1 -0
  24. package/dist/collection/components/clipboard/revogr-clipboard.js.map +1 -1
  25. package/dist/collection/components/data/revogr-data.js +1 -1
  26. package/dist/collection/components/data/revogr-data.js.map +1 -1
  27. package/dist/collection/components/editors/text-editor.js +4 -3
  28. package/dist/collection/components/editors/text-editor.js.map +1 -1
  29. package/dist/collection/components/header/header-renderer.js +2 -2
  30. package/dist/collection/components/header/header-renderer.js.map +1 -1
  31. package/dist/collection/components/overlay/keyboard.service.js +15 -5
  32. package/dist/collection/components/overlay/keyboard.service.js.map +1 -1
  33. package/dist/collection/components/overlay/revogr-overlay-selection.js +44 -5
  34. package/dist/collection/components/overlay/revogr-overlay-selection.js.map +1 -1
  35. package/dist/collection/components/revoGrid/revo-grid.js +3 -3
  36. package/dist/collection/components/revoGrid/revo-grid.js.map +1 -1
  37. package/dist/collection/plugins/base.plugin.js.map +1 -1
  38. package/dist/collection/plugins/column.auto-size.plugin.js.map +1 -1
  39. package/dist/collection/plugins/column.stretch.plugin.js.map +1 -1
  40. package/dist/collection/plugins/filter/filter.button.js +2 -2
  41. package/dist/collection/plugins/filter/filter.button.js.map +1 -1
  42. package/dist/collection/plugins/filter/filter.plugin.js +7 -2
  43. package/dist/collection/plugins/filter/filter.plugin.js.map +1 -1
  44. package/dist/collection/plugins/filter/filter.pop.js +13 -8
  45. package/dist/collection/plugins/filter/filter.pop.js.map +1 -1
  46. package/dist/collection/plugins/groupingRow/grouping.row.plugin.js.map +1 -1
  47. package/dist/collection/plugins/moveColumn/column.drag.plugin.js.map +1 -1
  48. package/dist/collection/plugins/sorting/sorting.plugin.js.map +1 -1
  49. package/dist/collection/plugins/sorting/sorting.sign.js +2 -1
  50. package/dist/collection/plugins/sorting/sorting.sign.js.map +1 -1
  51. package/dist/collection/services/selection.store.connector.js +62 -19
  52. package/dist/collection/services/selection.store.connector.js.map +1 -1
  53. package/dist/collection/store/selection/selection.store.js +4 -0
  54. package/dist/collection/store/selection/selection.store.js.map +1 -1
  55. package/dist/collection/types/interfaces.js.map +1 -1
  56. package/dist/collection/types/plugin.js.map +1 -1
  57. package/dist/collection/types/plugin.types.js.map +1 -1
  58. package/dist/collection/types/selection.js.map +1 -1
  59. package/dist/collection/utils/key.codes.js +6 -2
  60. package/dist/collection/utils/key.codes.js.map +1 -1
  61. package/dist/collection/utils/key.utils.js +25 -13
  62. package/dist/collection/utils/key.utils.js.map +1 -1
  63. package/dist/esm/base.plugin-e6e2bac2.js.map +1 -1
  64. package/dist/esm/{column.service-ffe99cfc.js → column.service-6aab6fac.js} +2 -2
  65. package/dist/esm/{column.service-ffe99cfc.js.map → column.service-6aab6fac.js.map} +1 -1
  66. package/dist/esm/{filter.button-f132c10a.js → filter.button-f9883a78.js} +3 -3
  67. package/dist/esm/filter.button-f9883a78.js.map +1 -0
  68. package/dist/esm/{header-cell-renderer-cac333a3.js → header-cell-renderer-b8663a21.js} +2 -2
  69. package/dist/esm/{header-cell-renderer-cac333a3.js.map → header-cell-renderer-b8663a21.js.map} +1 -1
  70. package/dist/esm/index.js +1 -1
  71. package/dist/esm/{key.utils-9120fde7.js → key.utils-c4a27968.js} +17 -12
  72. package/dist/esm/key.utils-c4a27968.js.map +1 -0
  73. package/dist/esm/revo-grid.entry.js +14 -9
  74. package/dist/esm/revo-grid.entry.js.map +1 -1
  75. package/dist/esm/revogr-attribution_6.entry.js +41 -12
  76. package/dist/esm/revogr-attribution_6.entry.js.map +1 -1
  77. package/dist/esm/revogr-clipboard_3.entry.js +5 -3
  78. package/dist/esm/revogr-clipboard_3.entry.js.map +1 -1
  79. package/dist/esm/revogr-data_4.entry.js +10 -9
  80. package/dist/esm/revogr-data_4.entry.js.map +1 -1
  81. package/dist/esm/revogr-filter-panel.entry.js +13 -8
  82. package/dist/esm/revogr-filter-panel.entry.js.map +1 -1
  83. package/dist/esm/{selection.helpers-0f3ed629.js → selection.helpers-dbf69cc1.js} +67 -20
  84. package/dist/esm/selection.helpers-dbf69cc1.js.map +1 -0
  85. package/dist/revo-grid/base.plugin-e6e2bac2.js.map +1 -1
  86. package/dist/revo-grid/{column.service-ffe99cfc.js → column.service-6aab6fac.js} +2 -2
  87. package/dist/revo-grid/{filter.button-f132c10a.js → filter.button-f9883a78.js} +2 -2
  88. package/dist/revo-grid/filter.button-f9883a78.js.map +1 -0
  89. package/dist/revo-grid/{header-cell-renderer-cac333a3.js → header-cell-renderer-b8663a21.js} +2 -2
  90. package/dist/revo-grid/index.esm.js +1 -1
  91. package/dist/revo-grid/{key.utils-9120fde7.js → key.utils-c4a27968.js} +2 -2
  92. package/dist/revo-grid/key.utils-c4a27968.js.map +1 -0
  93. package/dist/revo-grid/revo-grid.entry.js +1 -1
  94. package/dist/revo-grid/revo-grid.entry.js.map +1 -1
  95. package/dist/revo-grid/revogr-attribution_6.entry.js +1 -1
  96. package/dist/revo-grid/revogr-attribution_6.entry.js.map +1 -1
  97. package/dist/revo-grid/revogr-clipboard_3.entry.js +1 -1
  98. package/dist/revo-grid/revogr-clipboard_3.entry.js.map +1 -1
  99. package/dist/revo-grid/revogr-data_4.entry.js +1 -1
  100. package/dist/revo-grid/revogr-data_4.entry.js.map +1 -1
  101. package/dist/revo-grid/revogr-filter-panel.entry.js +1 -1
  102. package/dist/revo-grid/revogr-filter-panel.entry.js.map +1 -1
  103. package/dist/revo-grid/selection.helpers-dbf69cc1.js +5 -0
  104. package/dist/revo-grid/selection.helpers-dbf69cc1.js.map +1 -0
  105. package/dist/types/components/overlay/keyboard.service.d.ts +1 -1
  106. package/dist/types/components/overlay/revogr-overlay-selection.d.ts +9 -1
  107. package/dist/types/components.d.ts +5 -0
  108. package/dist/types/plugins/base.plugin.d.ts +8 -8
  109. package/dist/types/plugins/column.auto-size.plugin.d.ts +26 -16
  110. package/dist/types/plugins/column.stretch.plugin.d.ts +1 -1
  111. package/dist/types/plugins/filter/filter.button.d.ts +1 -1
  112. package/dist/types/plugins/filter/filter.plugin.d.ts +24 -16
  113. package/dist/types/plugins/groupingRow/grouping.row.plugin.d.ts +2 -2
  114. package/dist/types/plugins/moveColumn/column.drag.plugin.d.ts +3 -3
  115. package/dist/types/plugins/sorting/sorting.plugin.d.ts +8 -8
  116. package/dist/types/services/selection.store.connector.d.ts +20 -0
  117. package/dist/types/store/selection/selection.store.d.ts +1 -0
  118. package/dist/types/types/interfaces.d.ts +2 -2
  119. package/dist/types/types/plugin.d.ts +23 -0
  120. package/dist/types/types/plugin.types.d.ts +20 -0
  121. package/dist/types/types/selection.d.ts +24 -0
  122. package/dist/types/utils/key.codes.d.ts +5 -2
  123. package/dist/types/utils/key.utils.d.ts +2 -1
  124. package/hydrate/index.js +153 -59
  125. package/hydrate/index.mjs +153 -59
  126. package/package.json +1 -1
  127. package/readme.md +43 -16
  128. package/standalone/column.service.js +66 -19
  129. package/standalone/column.service.js.map +1 -1
  130. package/standalone/filter.button.js +2 -2
  131. package/standalone/filter.button.js.map +1 -1
  132. package/standalone/revo-grid.js +10 -5
  133. package/standalone/revo-grid.js.map +1 -1
  134. package/standalone/revogr-clipboard2.js +1 -0
  135. package/standalone/revogr-clipboard2.js.map +1 -1
  136. package/standalone/revogr-data2.js +1 -1
  137. package/standalone/revogr-data2.js.map +1 -1
  138. package/standalone/revogr-edit2.js +19 -13
  139. package/standalone/revogr-edit2.js.map +1 -1
  140. package/standalone/revogr-filter-panel.js +12 -7
  141. package/standalone/revogr-filter-panel.js.map +1 -1
  142. package/standalone/revogr-header2.js +5 -4
  143. package/standalone/revogr-header2.js.map +1 -1
  144. package/standalone/revogr-overlay-selection2.js +39 -10
  145. package/standalone/revogr-overlay-selection2.js.map +1 -1
  146. package/dist/cjs/filter.button-147884a8.js.map +0 -1
  147. package/dist/cjs/key.utils-be4d0b46.js.map +0 -1
  148. package/dist/cjs/selection.helpers-032d7192.js.map +0 -1
  149. package/dist/esm/filter.button-f132c10a.js.map +0 -1
  150. package/dist/esm/key.utils-9120fde7.js.map +0 -1
  151. package/dist/esm/selection.helpers-0f3ed629.js.map +0 -1
  152. package/dist/revo-grid/filter.button-f132c10a.js.map +0 -1
  153. package/dist/revo-grid/key.utils-9120fde7.js.map +0 -1
  154. package/dist/revo-grid/selection.helpers-0f3ed629.js +0 -5
  155. package/dist/revo-grid/selection.helpers-0f3ed629.js.map +0 -1
  156. /package/dist/revo-grid/{column.service-ffe99cfc.js.map → column.service-6aab6fac.js.map} +0 -0
  157. /package/dist/revo-grid/{header-cell-renderer-cac333a3.js.map → header-cell-renderer-b8663a21.js.map} +0 -0
@@ -10,9 +10,9 @@ const index$1 = require('./index-a9f1b728.js');
10
10
  const dimension_helpers = require('./dimension.helpers-8e234f00.js');
11
11
  require('./toNumber-838e6ff5.js');
12
12
  const events = require('./events-b28cc194.js');
13
- const column_service = require('./column.service-b3b5a4ee.js');
14
- const key_utils = require('./key.utils-be4d0b46.js');
15
- const selection_helpers = require('./selection.helpers-032d7192.js');
13
+ const column_service = require('./column.service-43f8c476.js');
14
+ const key_utils = require('./key.utils-4a384064.js');
15
+ const selection_helpers = require('./selection.helpers-26d856ba.js');
16
16
  const debounce = require('./debounce-e2b7c6fb.js');
17
17
  const viewport_store = require('./viewport.store-c4b986f9.js');
18
18
  const throttle = require('./throttle-46478b04.js');
@@ -259,11 +259,11 @@ class KeyboardService {
259
259
  }
260
260
  // tab key means same as arrow right
261
261
  if (key_utils.codesLetter.TAB === e.code) {
262
- this.keyChangeSelection(e, canRange);
262
+ await this.keyChangeSelection(e, canRange);
263
263
  return;
264
264
  }
265
265
  // pressed enter
266
- if (key_utils.isEnterKey(e.code)) {
266
+ if (key_utils.isEnterKeyValue(e.key)) {
267
267
  this.sv.change();
268
268
  return;
269
269
  }
@@ -328,15 +328,19 @@ class KeyboardService {
328
328
  if (!data) {
329
329
  return false;
330
330
  }
331
+ const eData = this.sv.getData();
331
332
  if (isMulti) {
332
- const eData = this.sv.getData();
333
333
  if (isAfterLast(data.end, eData.lastCell) || isBeforeFirst(data.start)) {
334
334
  return false;
335
335
  }
336
336
  const range = selection_helpers.getRange(data.start, data.end);
337
337
  return this.sv.range(range);
338
338
  }
339
- return this.sv.focusNext(data.start, changes);
339
+ return this.sv.focus(data.start, changes, isAfterLast(data.start, eData.lastCell)
340
+ ? 1
341
+ : isBeforeFirst(data.start)
342
+ ? -1
343
+ : 0);
340
344
  }
341
345
  /** Monitor key direction changes */
342
346
  changeDirectionKey(e, canRange) {
@@ -344,6 +348,12 @@ class KeyboardService {
344
348
  if (DIRECTION_CODES.includes(e.code)) {
345
349
  e.preventDefault();
346
350
  }
351
+ if (e.shiftKey) {
352
+ switch (e.code) {
353
+ case key_utils.codesLetter.TAB:
354
+ return { changes: { x: -1 }, isMulti: false };
355
+ }
356
+ }
347
357
  switch (e.code) {
348
358
  case key_utils.codesLetter.ARROW_UP:
349
359
  return { changes: { y: -1 }, isMulti };
@@ -579,6 +589,7 @@ const OverlaySelection = class {
579
589
  this.beforeRegionPaste = index.createEvent(this, "beforepasteregion", 7);
580
590
  this.cellEditApply = index.createEvent(this, "celleditapply", 7);
581
591
  this.beforeFocusCell = index.createEvent(this, "beforecellfocusinit", 7);
592
+ this.beforeNextViewportFocus = index.createEvent(this, "beforenextvpfocus", 7);
582
593
  this.setEdit = index.createEvent(this, "setedit", 7);
583
594
  this.beforeApplyRange = index.createEvent(this, "beforeapplyrange", 7);
584
595
  this.beforeSetRange = index.createEvent(this, "beforesetrange", 7);
@@ -601,6 +612,7 @@ const OverlaySelection = class {
601
612
  this.keyboardService = null;
602
613
  this.autoFillService = null;
603
614
  this.revogrEdit = null;
615
+ this.unsubscribeSelectionStore = [];
604
616
  this.readonly = undefined;
605
617
  this.range = undefined;
606
618
  this.canDrag = undefined;
@@ -668,12 +680,26 @@ const OverlaySelection = class {
668
680
  });
669
681
  }
670
682
  // #endregion
671
- /** Selection & Keyboard */
683
+ /**
684
+ * Selection & Keyboard
685
+ */
672
686
  selectionServiceSet(s) {
687
+ // clear subscriptions
688
+ this.unsubscribeSelectionStore.forEach(v => v());
689
+ this.unsubscribeSelectionStore.length = 0;
690
+ this.unsubscribeSelectionStore.push(s.onChange('nextFocus', (v) => this.doFocus(v, v)));
673
691
  this.keyboardService = new KeyboardService({
674
692
  selectionStore: s,
675
693
  range: r => this.triggerRangeEvent(r),
676
- focusNext: (f, next) => this.doFocus(f, f, next),
694
+ focus: (f, changes, focusNextViewport) => {
695
+ if (focusNextViewport) {
696
+ this.beforeNextViewportFocus.emit(f);
697
+ return false;
698
+ }
699
+ else {
700
+ return this.doFocus(f, f, changes);
701
+ }
702
+ },
677
703
  change: val => {
678
704
  if (this.readonly) {
679
705
  return;
@@ -720,6 +746,9 @@ const OverlaySelection = class {
720
746
  }
721
747
  disconnectedCallback() {
722
748
  var _a;
749
+ // clear subscriptions
750
+ this.unsubscribeSelectionStore.forEach(v => v());
751
+ this.unsubscribeSelectionStore.length = 0;
723
752
  (_a = this.columnService) === null || _a === void 0 ? void 0 : _a.destroy();
724
753
  }
725
754
  async componentWillRender() {
@@ -788,17 +817,17 @@ const OverlaySelection = class {
788
817
  nodes.push(index.h("revogr-order-editor", { ref: e => (this.orderEditor = e), dataStore: this.dataStore, dimensionRow: this.dimensionRow, dimensionCol: this.dimensionCol, parent: this.element, onRowdragstartinit: e => this.rowDragStart(e) }));
789
818
  }
790
819
  }
791
- return (index.h(index.Host, { key: '676c1ac41a3658f7c2cb93ada69fbf141a51c660', class: { mobile: this.isMobileDevice }, onDblClick: (e) => this.onElementDblClick(e), onMouseDown: (e) => this.onElementMouseDown(e), onTouchStart: (e) => this.onElementMouseDown(e, true) }, nodes, index.h("slot", { key: '42f4e051d6f531bd92e22106ca0eb1808068e8d0', name: "data" })));
820
+ return (index.h(index.Host, { key: '81dee4cfcce410cefb2bd9ff2661261472fc3a75', class: { mobile: this.isMobileDevice }, onDblClick: (e) => this.onElementDblClick(e), onMouseDown: (e) => this.onElementMouseDown(e), onTouchStart: (e) => this.onElementMouseDown(e, true) }, nodes, index.h("slot", { key: '6ac75c388ae3fbc5539a27c3acd58178dd53d1af', name: "data" })));
792
821
  }
793
822
  /**
794
823
  * Executes the focus operation on the specified range of cells.
795
824
  */
796
- doFocus(focus, end, next) {
825
+ doFocus(focus, end, changes) {
797
826
  const { defaultPrevented } = this.beforeFocusCell.emit(this.columnService.getSaveData(focus.y, focus.x));
798
827
  if (defaultPrevented) {
799
828
  return false;
800
829
  }
801
- const evData = Object.assign({ range: Object.assign(Object.assign({}, focus), { x1: end.x, y1: end.y }), next }, this.types);
830
+ const evData = Object.assign({ range: Object.assign(Object.assign({}, focus), { x1: end.x, y1: end.y }), next: changes }, this.types);
802
831
  const applyEvent = this.applyFocus.emit(evData);
803
832
  if (applyEvent.defaultPrevented) {
804
833
  return false;