@refinitiv-ui/efx-grid 6.0.98 → 6.0.100

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.
@@ -31,6 +31,8 @@ import { CoralItems } from "../../tr-grid-util/es6/CoralItems.js";
31
31
  * @property {Element=} autoSuggest=null Element of ef-autosuggest or atlas-autosuggest for handled with input cell
32
32
  * @property {boolean=} closingOnScroll=true If disabled, the editor will not be automatically closed when scrolling grid.
33
33
  * @property {boolean=} autoHiding=true If disabled, the editor will not be automatically closed when losing its focus.
34
+ * @property {boolean=} readonly=false If disabled, the editor will not be able to open, this property overwrite `editableContent` and `editableTitle`
35
+ * @property {(string|boolean)=} starterText=false if enable it, it will be show placeholder when no ric in grid, given string to overwrite wording
34
36
  */
35
37
 
36
38
  /** @typedef {Object} InCellEditingPlugin~Cache
@@ -171,6 +173,8 @@ let InCellEditingPlugin = function (options) {
171
173
  t._onMultiSelectionValueChanged = t._onMultiSelectionValueChanged.bind(t);
172
174
  t._onMultiSelectionEditorChanged = t._onMultiSelectionEditorChanged.bind(t);
173
175
  t._onAutoSuggestItemSelected = t._onAutoSuggestItemSelected.bind(t);
176
+ t._firstRendered = t._firstRendered.bind(t);
177
+ t._onGridKeyDown = t._onGridKeyDown.bind(t);
174
178
  t._hosts = [];
175
179
 
176
180
  if(options) {
@@ -341,10 +345,26 @@ InCellEditingPlugin.prototype._closingOnScroll = true;
341
345
  * @private
342
346
  */
343
347
  InCellEditingPlugin.prototype._autoHiding = true;
348
+ /** @type {boolean}
349
+ * @private
350
+ */
351
+ InCellEditingPlugin.prototype._readonly = false;
352
+ /** @type {string}
353
+ * @private
354
+ */
355
+ InCellEditingPlugin.prototype._starterText = "";
356
+ /** @type {Object}
357
+ * @private
358
+ */
359
+ InCellEditingPlugin.prototype._starterTextPopup = null;
344
360
  /** @type {number}
345
361
  * @private
346
362
  */
347
363
  InCellEditingPlugin.prototype._editorTimerId = 0;
364
+ /** @type {Object}
365
+ * @private
366
+ */
367
+ InCellEditingPlugin.prototype._rowSelectionPlugin = null;
348
368
  /** @type {boolean}
349
369
  * @private
350
370
  */
@@ -369,6 +389,11 @@ InCellEditingPlugin._styles = prettifyCss([
369
389
  ],
370
390
  ":host .cell.editing", [
371
391
  "z-index: 2;"
392
+ ],
393
+ ":host .starter-text", [
394
+ "padding: var(--grid-cell-padding,0 8px 0 8px);",
395
+ "pointer-events: none;",
396
+ "line-height: 28px" // WARNING: hardcode, it can be calculate with row height
372
397
  ]
373
398
  ]);
374
399
 
@@ -551,6 +576,9 @@ InCellEditingPlugin.prototype.initialize = function (host, options) {
551
576
  }
552
577
 
553
578
  host.listen("columnAdded", this._onColumnAdded);
579
+ host.listen("firstRendered", this._firstRendered);
580
+ host.listen("keydown", this._onGridKeyDown);
581
+
554
582
  host.getVScrollbar().listen("scroll", this._onScroll);
555
583
  host.getHScrollbar().listen("scroll", this._onScroll);
556
584
 
@@ -604,6 +632,14 @@ InCellEditingPlugin.prototype._afterInit = function () {
604
632
  this._elfVersion = ElfUtil.getElfVersion();
605
633
  };
606
634
 
635
+ /** @private
636
+ */
637
+ InCellEditingPlugin.prototype._firstRendered = function () {
638
+ if(!this._readonly && this._starterText) {
639
+ this.showStarterText();
640
+ }
641
+ };
642
+
607
643
  /** @public
608
644
  * @param {Object=} options
609
645
  */
@@ -679,6 +715,16 @@ InCellEditingPlugin.prototype.config = function(options) {
679
715
  if(pluginOption["autoHiding"] == false) {
680
716
  t._autoHiding = false;
681
717
  }
718
+ if(pluginOption["readonly"] == true) {
719
+ t._readonly = true;
720
+ }
721
+ if(pluginOption["starterText"] !== null) {
722
+ if(typeof pluginOption["starterText"] === "string") {
723
+ t._starterText = pluginOption["starterText"];
724
+ } else {
725
+ t._starterText = pluginOption["starterText"] ? "Type to add" : false;
726
+ }
727
+ }
682
728
 
683
729
  // event callback
684
730
  t.addListener(pluginOption, "preEditorOpening");
@@ -773,6 +819,15 @@ InCellEditingPlugin.prototype.getConfigObject = function (out_obj) {
773
819
  dirty |= _setBooleanOption(extOptions, "uiBlocking", this._uiBlocking, false);
774
820
  dirty |= _setBooleanOption(extOptions, "closingOnScroll", this._closingOnScroll, true);
775
821
  dirty |= _setBooleanOption(extOptions, "autoHiding", this._autoHiding, true);
822
+ dirty |= _setBooleanOption(extOptions, "readonly", this._readonly, false);
823
+
824
+ if(this._starterText) {
825
+ if(this._starterText === "Type to add") {
826
+ extOptions["starterText"] = true;
827
+ } else {
828
+ extOptions["starterText"] = this._starterText;
829
+ }
830
+ }
776
831
 
777
832
  if(this._contentSource !== "textContent") {
778
833
  dirty = 1;
@@ -831,6 +886,9 @@ InCellEditingPlugin.prototype.unload = function (host) {
831
886
  window.removeEventListener("scroll", this._onScroll);
832
887
  }
833
888
 
889
+ if(this._starterTextPopup) {
890
+ this._starterTextPopup.dispose();
891
+ }
834
892
  this._dispose();
835
893
  };
836
894
 
@@ -848,6 +906,9 @@ InCellEditingPlugin.prototype.openEditor = function (colIndex, rowIndex, section
848
906
  return;
849
907
  }
850
908
  }
909
+ if(this._readonly) {
910
+ return;
911
+ }
851
912
 
852
913
  let sectionSettings = grid.getSectionSettings(sectionRef || "content");
853
914
  let activePos = this._activePos;
@@ -937,6 +998,114 @@ InCellEditingPlugin.prototype.disableDblClick = function (opt_disabled) {
937
998
  }
938
999
  };
939
1000
 
1001
+ /** @private
1002
+ * @param {Object} e
1003
+ */
1004
+ InCellEditingPlugin.prototype._onGridKeyDown = function (e) {
1005
+ if (e.key.length !== 1) { // Special character
1006
+ return;
1007
+ }
1008
+ if(this._starterText && this._starterTextPopup.isShown()) {
1009
+ let rsp = this._getPlugin("RowSelectionPlugin");
1010
+ if(rsp && rsp.getSelectedRowCount() > 0) {
1011
+ return;
1012
+ }
1013
+ let grid = this._hosts[0];
1014
+ grid.scrollToRow("content", 0, true);
1015
+ if(!this.isEditing()) {
1016
+ let firstEditableCol = this._getFirstEditableColumnIndex();
1017
+ if(firstEditableCol === 0) {
1018
+ return;
1019
+ }
1020
+ let cell = grid.getCell("content", firstEditableCol, 0);
1021
+ this._openEditor(cell, grid);
1022
+ }
1023
+ }
1024
+ };
1025
+
1026
+ /**
1027
+ * @description Show starter text when the grid is no ric
1028
+ * @public
1029
+ * @param {boolean=} bool
1030
+ */
1031
+ InCellEditingPlugin.prototype.showStarterText = function (bool) {
1032
+ setTimeout(this._showStarterText.bind(this, bool), 0); // Need to delay to wait scrollbar or editor closed
1033
+ };
1034
+
1035
+
1036
+ /**
1037
+ * @private
1038
+ * @param {boolean=} bool
1039
+ */
1040
+ InCellEditingPlugin.prototype._showStarterText = function (bool) {
1041
+ if(!this._realTimeGrid || !this._starterText) {
1042
+ return;
1043
+ }
1044
+ let allRics = this._realTimeGrid.getAllRics();
1045
+ if(allRics.length > 0) {
1046
+ return;
1047
+ }
1048
+ let popupElem;
1049
+ if(!this._starterTextPopup) {
1050
+ popupElem = this._starterTextPopup = this._createStaterTextElement();
1051
+ } else {
1052
+ popupElem = this._starterTextPopup;
1053
+ }
1054
+ if(bool === false) {
1055
+ popupElem.hide();
1056
+ return;
1057
+ }
1058
+ let grid = this._hosts[0];
1059
+
1060
+ let editableColIndex = this._getFirstEditableColumnIndex();
1061
+ if(editableColIndex < 0) { // not editable
1062
+ return;
1063
+ }
1064
+ grid.scrollToRow("content", 0, true);
1065
+ let editableCell = grid.getCell("content", editableColIndex, 0);
1066
+ popupElem.attachTo(editableCell.getElement());
1067
+ popupElem.show(bool, grid.getElement().parentElement);
1068
+ };
1069
+
1070
+ /** @private
1071
+ * @return {number}
1072
+ */
1073
+ InCellEditingPlugin.prototype._getFirstEditableColumnIndex = function () {
1074
+ if(this._readonly || !this._editableContent) {
1075
+ return -1;
1076
+ }
1077
+
1078
+ let colCount = this.getColumnCount();
1079
+ for (let i = 0; i < colCount; i++) {
1080
+ let editableCol = this.isColumnEditable(i);
1081
+ if(editableCol) {
1082
+ return i;
1083
+ }
1084
+ }
1085
+ return -1;
1086
+ };
1087
+
1088
+ /** @private
1089
+ * @return {Object}
1090
+ */
1091
+ InCellEditingPlugin.prototype._createStaterTextElement = function () {
1092
+ let container = document.createElement("div");
1093
+ container.textContent = this._starterText;
1094
+ container.className = "starter-text";
1095
+ let popup = new Popup(container, { positioning: "over"});
1096
+ popup.disableAutoHiding(true);
1097
+ popup.disableHideOnScroll(true);
1098
+ return popup;
1099
+ };
1100
+
1101
+ /** @public
1102
+ * @description This is for testing purpose to compare element
1103
+ * @ignore
1104
+ * @return {Object}
1105
+ */
1106
+ InCellEditingPlugin.prototype.getStarterTextelement = function () {
1107
+ return this._starterTextPopup;
1108
+ };
940
1109
  /** Checking Editing is in process.
941
1110
  * @public
942
1111
  * @return {boolean}
@@ -1090,9 +1259,27 @@ InCellEditingPlugin.prototype.enableAutoCommitText = function (opt_enable) {
1090
1259
  * @return {boolean}
1091
1260
  */
1092
1261
  InCellEditingPlugin.prototype.isColumnEditable = function (colIndex) {
1262
+ if(this._readonly) {
1263
+ return false;
1264
+ }
1093
1265
  let val = this._getColumnOption(colIndex, "editableContent");
1094
1266
  return val == null ? this._editableContent : val;
1095
1267
  };
1268
+
1269
+ /**
1270
+ * @public
1271
+ * @param {boolean} bool
1272
+ */
1273
+ InCellEditingPlugin.prototype.enableReadonly = function (bool) {
1274
+ this._readonly = bool !== false;
1275
+ };
1276
+ /**
1277
+ * @public
1278
+ * @param {boolean} bool
1279
+ */
1280
+ InCellEditingPlugin.prototype.disableReadonly = function () {
1281
+ this.enableReadonly(false);
1282
+ };
1096
1283
  /** @public
1097
1284
  * @description Supply an keyboard input. This is for testing purpose.
1098
1285
  * @ignore
@@ -1105,6 +1292,16 @@ InCellEditingPlugin.prototype.supplyKey = function(keyName, context) {
1105
1292
  this._onTextKeyUp(eventObj);
1106
1293
  };
1107
1294
  /** @public
1295
+ * @description Supply an keyboard input. This is for testing purpose.
1296
+ * @ignore
1297
+ * @param {string} keyName
1298
+ * @param {Object=} context
1299
+ */
1300
+ InCellEditingPlugin.prototype.supplyGridKeydown = function(keyName, context) {
1301
+ let eventObj = this._mockKeyboardEvent(keyName, context);
1302
+ this._onGridKeyDown(eventObj);
1303
+ };
1304
+ /** @public
1108
1305
  * @description Supply an double click event. This is for testing purpose.
1109
1306
  * @ignore
1110
1307
  * @param {number} colIndex
@@ -1122,6 +1319,9 @@ InCellEditingPlugin.prototype.mockDoubleClick = function(colIndex, rowIndex, con
1122
1319
  */
1123
1320
  InCellEditingPlugin.prototype._onDoubleClick = function (e, opt_host) {
1124
1321
  let t = this;
1322
+ if(t._readonly) {
1323
+ return;
1324
+ }
1125
1325
  let host = opt_host || t.getRelativeGrid(e);
1126
1326
  if(t.isEditing() || !host) { return; }
1127
1327
 
@@ -1318,6 +1518,7 @@ InCellEditingPlugin.prototype._openEditor = function (e, host, arg) {
1318
1518
 
1319
1519
  // Dispatch an event for user to setup stuff
1320
1520
  t._dispatch("editorOpened", arg); // User may modify the editor
1521
+ t.showStarterText(false);
1321
1522
 
1322
1523
  inputElement.focus();
1323
1524
  if(typeof inputElement.select === "function") {
@@ -1337,7 +1538,7 @@ InCellEditingPlugin.prototype.openRowEditor = function (rowIndex, grid) {
1337
1538
  let t = this;
1338
1539
  grid = grid || t._hosts[0];
1339
1540
  // if open same row we will do nothing
1340
- if(t._getRowIndex(t._activeRowId) === rowIndex || !grid) { return; }
1541
+ if(t._getRowIndex(t._activeRowId) === rowIndex || !grid || t._readonly) { return; }
1341
1542
 
1342
1543
  // close all open editor
1343
1544
  t.closeRowEditor(false, grid);
@@ -1835,6 +2036,7 @@ InCellEditingPlugin.prototype._commitText = function (committed, suggestionDetai
1835
2036
  Dom.removeParent(t._customElement);
1836
2037
 
1837
2038
  let grid = arg["grid"];
2039
+ this.showStarterText();
1838
2040
  if(grid) {
1839
2041
  t._freezeScrolling(grid, false);
1840
2042
  grid.focus();
@@ -464,12 +464,22 @@ RowDraggingPlugin.prototype.getConfigObject = function (out_obj) {
464
464
  if(!extOptions) {
465
465
  extOptions = obj.rowDragging = {};
466
466
  }
467
- // TODO: should not assign the config object if it's a default value
468
- extOptions.dragBox = this._dragBoxEnabled;
469
- extOptions.mouseInput = this._mouseInput;
470
- extOptions.autoScroll = this._autoScroll;
471
- extOptions.dataTransfer = this._dataTransfer;
472
- extOptions.disabled = this._uiDisabled;
467
+
468
+ if(this._dragBoxEnabled) {
469
+ extOptions.dragBox = this._dragBoxEnabled;
470
+ }
471
+ if(!this._mouseInput) {
472
+ extOptions.mouseInput = this._mouseInput;
473
+ }
474
+ if(!this._autoScroll) {
475
+ extOptions.autoScroll = this._autoScroll;
476
+ }
477
+ if(!this._dataTransfer) {
478
+ extOptions.dataTransfer = this._dataTransfer;
479
+ }
480
+ if(this._uiDisabled) {
481
+ extOptions.disabled = this._uiDisabled;
482
+ }
473
483
 
474
484
  return obj;
475
485
  };
@@ -1103,6 +1113,8 @@ RowDraggingPlugin.prototype._moveRows = function (srcRowRef, destRowIndex, srcGr
1103
1113
 
1104
1114
  let moveCount = movedRowIds ? movedRowIds.length : 0;
1105
1115
  if(moveCount) {
1116
+ destGrid.focus();
1117
+
1106
1118
  evtArg["originRowId"] = movedRowIds[0];
1107
1119
  evtArg["originRowIds"] = movedRowIds;
1108
1120
  evtArg["destinationRowId"] = destRowId; // Return empty string for the last row
@@ -1,9 +1,7 @@
1
1
  import { Ext } from "../../tr-grid-util/es6/Ext.js";
2
2
  import { EventDispatcher } from "../../tr-grid-util/es6/EventDispatcher.js";
3
3
  import { GridPlugin } from "../../tr-grid-util/es6/GridPlugin.js";
4
- import { isMac as isMacFn } from "../../tr-grid-util/es6/Util.js";
5
- import { isIE, prepareTSVContent } from "../../tr-grid-util/es6/Util.js";
6
- import { prettifyCss } from "../../tr-grid-util/es6/Util.js";
4
+ import { isMac as isMacFn, prepareTSVContent, prettifyCss } from "../../tr-grid-util/es6/Util.js";
7
5
 
8
6
  declare namespace RowSelectionPlugin {
9
7
 
@@ -1,9 +1,7 @@
1
1
  import { Ext } from "../../tr-grid-util/es6/Ext.js";
2
2
  import { EventDispatcher } from "../../tr-grid-util/es6/EventDispatcher.js";
3
3
  import { GridPlugin } from "../../tr-grid-util/es6/GridPlugin.js";
4
- import { isMac as isMacFn } from "../../tr-grid-util/es6/Util.js";
5
- import { isIE, prepareTSVContent } from "../../tr-grid-util/es6/Util.js";
6
- import { prettifyCss } from "../../tr-grid-util/es6/Util.js";
4
+ import { isMac as isMacFn, prepareTSVContent, prettifyCss } from "../../tr-grid-util/es6/Util.js";
7
5
 
8
6
  /** @private
9
7
  * @type {boolean}
@@ -43,7 +41,6 @@ const IS_MAC = isMacFn();
43
41
  let RowSelectionPlugin = function (options) {
44
42
  let t = this;
45
43
  t._onMouseDown = t._onMouseDown.bind(t);
46
- t._onMouseMove = t._onMouseMove.bind(t);
47
44
  t._onClick = t._onClick.bind(t);
48
45
  t._onKeyDown = t._onKeyDown.bind(t);
49
46
  t._onBeforeRowRemoved = t._onBeforeRowRemoved.bind(t);
@@ -53,7 +50,6 @@ let RowSelectionPlugin = function (options) {
53
50
  t._updateMenuIcon = t._updateMenuIcon.bind(t);
54
51
 
55
52
  t._hosts = [];
56
- t._isIE = isIE();
57
53
  t._textRange = document.createRange();
58
54
 
59
55
  if(options) {
@@ -101,10 +97,6 @@ RowSelectionPlugin.prototype._selectionField = "SELECTED_ROW";
101
97
  * @description use with _basedOnContent mode for tracking current anchor row
102
98
  */
103
99
  RowSelectionPlugin.prototype._anchorRowId = "";
104
- /** @type {boolean}
105
- * @private
106
- */
107
- RowSelectionPlugin.prototype._isIE = false;
108
100
  /** @type {Range}
109
101
  * @private
110
102
  */
@@ -578,19 +570,40 @@ RowSelectionPlugin.prototype.disableMultiSelection = function (disabled) {
578
570
  this._singleSelMode = disabled !== false;
579
571
  };
580
572
 
573
+ /** Focus the active grid only if there is no selected text
574
+ * @private
575
+ * @param {boolean=} force
576
+ * @returns {boolean} Returns true if there is any change
577
+ */
578
+ RowSelectionPlugin.prototype._focusGrid = function (force) {
579
+ if(this._activeGrid) {
580
+ if(force || !window.getSelection().toString()) {
581
+ this._activeGrid.focus();
582
+ return true;
583
+ }
584
+ }
585
+ return false;
586
+ };
581
587
  /** @private
582
588
  * @param {Event} e
583
589
  */
584
590
  RowSelectionPlugin.prototype._onClick = function (e) {
585
- if(this._pendingClickIndex >= 0 && this._anchorSection) {
586
- this._selectSingleRow(this._anchorSection, this._pendingClickIndex);
587
- let host = this.getRelativeGrid(e);
588
- this._clearPendingClickIndex(host);
591
+ if(this._pendingClickIndex >= 0) {
592
+ let performClick = (this._activeGrid && this._anchorSection) ? true : false;
593
+ if(performClick) {
594
+ let curPos = this._activeGrid.getRelativePosition(e);
595
+ performClick = curPos.rowIndex === this._pendingClickIndex && curPos.section === this._anchorSection;
596
+ }
597
+ if(performClick) {
598
+ this._selectSingleRow(this._anchorSection, this._pendingClickIndex);
599
+ this._focusGrid();
589
600
 
590
- if(!this._basedOnContent) { // Protect against rowPositionChanged and postBindingSection event
591
- this._updateMenuIcon();
601
+ if(!this._basedOnContent) { // Protect against rowPositionChanged and postBindingSection event
602
+ this._updateMenuIcon();
603
+ }
604
+ this._dispatchSelectionChanged(e);
592
605
  }
593
- this._dispatchSelectionChanged(e);
606
+ this._pendingClickIndex = -1;
594
607
  }
595
608
  };
596
609
  /** @public
@@ -634,10 +647,9 @@ RowSelectionPlugin.prototype._onMouseDown = function (e) {
634
647
  }
635
648
  }
636
649
 
650
+ this._pendingClickIndex = -1;
637
651
  let host = this.getRelativeGrid(e);
638
652
 
639
- this._clearPendingClickIndex(host);
640
-
641
653
  if(!host) {
642
654
  return;
643
655
  }
@@ -683,7 +695,8 @@ RowSelectionPlugin.prototype._onMouseDown = function (e) {
683
695
  if(singleSelection) { // Click: selects a single row
684
696
  this._anchorSection = section;
685
697
  if(prevSel) { // Click on the selected row
686
- this._setPendingClickIndex(rowIndex, host); // Delay the operation to allow drag and drop operation
698
+ // Delay the operation to allow drag and drop operation
699
+ this._pendingClickIndex = rowIndex;
687
700
  return;
688
701
  } else { // Perform single click immediately
689
702
  let prevGrid = this._activeGrid;
@@ -698,44 +711,16 @@ RowSelectionPlugin.prototype._onMouseDown = function (e) {
698
711
  }
699
712
  }
700
713
 
701
- if(this._activeGrid && !prevSel) {
702
- e.preventDefault();
703
- this._activeGrid.focus();
714
+ if(this._focusGrid(!prevSel)) {
715
+ e.preventDefault(); // Prevent changing focus due to clicking on unfocusable element
704
716
  }
705
717
 
706
718
  if(!this._basedOnContent) { // Protect against rowPositionChanged and postBindingSection event
707
719
  this._updateMenuIcon();
708
720
  }
709
721
 
710
- this._dispatchSelectionChanged(e, rowIndex, section);
711
- };
712
722
 
713
- /** To clear _pendingClickIndex when mouse move
714
- * @private
715
- * @param {Event} e
716
- */
717
- RowSelectionPlugin.prototype._onMouseMove = function (e) {
718
- let host = this.getRelativeGrid(e);
719
- this._clearPendingClickIndex(host);
720
- };
721
-
722
- /** To set _pendingClickIndex
723
- * @private
724
- * @param {number} rowIndex
725
- * @param {Object=} host core grid instance
726
- */
727
- RowSelectionPlugin.prototype._setPendingClickIndex = function (rowIndex, host) {
728
- this._pendingClickIndex = rowIndex;
729
- host && host.listen("mousemove", this._onMouseMove);
730
- };
731
-
732
- /** To clear _pendingClickIndex
733
- * @private
734
- * @param {Object=} host core grid instance
735
- */
736
- RowSelectionPlugin.prototype._clearPendingClickIndex = function (host) {
737
- this._pendingClickIndex = -1;
738
- host && host.unlisten("mousemove", this._onMouseMove);
723
+ this._dispatchSelectionChanged(e, rowIndex, section);
739
724
  };
740
725
 
741
726
  /** @private
@@ -865,7 +850,7 @@ RowSelectionPlugin.prototype.getSelectedText = function () {
865
850
  if(!this._compositeGrid && !this._realTimeGrid) return "";
866
851
 
867
852
  let selectedRows = this.getSelectedRows();
868
- let rowCount = selectedRows.length;
853
+ let rowCount = selectedRows ? selectedRows.length : 0;
869
854
  let columnCount = this.getColumnCount();
870
855
  let text = "";
871
856
  let dv = this._activeGrid.getDataSource();
@@ -938,7 +923,7 @@ RowSelectionPlugin.prototype._clearSelectedRows = function (preserveAnchor) { //
938
923
  if(!preserveAnchor) {
939
924
  this._anchorSection = null;
940
925
  }
941
- this._clearPendingClickIndex(this._activeGrid);
926
+ this._pendingClickIndex = -1;
942
927
  this._clearMenuIcon();
943
928
  };
944
929
  /** @private
@@ -952,9 +937,7 @@ RowSelectionPlugin.prototype._selectByKey = function (direction, e, pageKey) {
952
937
 
953
938
  if(!this._anchorSection) { return; }
954
939
 
955
- if(this._activeGrid != null){
956
- this._activeGrid.focus();
957
- }
940
+ this._focusGrid(true);
958
941
 
959
942
  let shiftKey = e.shiftKey;
960
943
  let next = 0;
@@ -1267,9 +1250,7 @@ RowSelectionPlugin.prototype._gotoGrid = function (gridIndex) {
1267
1250
  let sectionIndex = this._anchorSection.getIndex();
1268
1251
  this.clearSelectedRows(); // Clear all current grid's selections
1269
1252
  this.selectSingleRow(anchorRow, sectionIndex, this._hosts[gridIndex]); // go to the next grid at the first column
1270
- if(this._activeGrid != null){
1271
- this._activeGrid.focus();
1272
- }
1253
+ this._focusGrid(true);
1273
1254
  };
1274
1255
 
1275
1256
  /** @private
@@ -236,7 +236,9 @@ declare class DataView extends EventDispatcher {
236
236
 
237
237
  public searchNext(rowRef: number|string|null, searchLogic: ((...params: any[]) => any)|null): number;
238
238
 
239
- public stall(opt_bool?: boolean|null): boolean;
239
+ public stall(bool?: boolean|null): boolean;
240
+
241
+ public stallSorting(bool?: boolean|null): boolean;
240
242
 
241
243
  public enableAutoGroupRemoval(opt_bool?: boolean|null): boolean;
242
244
 
@@ -31,7 +31,9 @@ declare namespace InCellEditingPlugin {
31
31
  rowEditorClosed?: ((...params: any[]) => any)|null,
32
32
  autoSuggest?: Element|null,
33
33
  closingOnScroll?: boolean|null,
34
- autoHiding?: boolean|null
34
+ autoHiding?: boolean|null,
35
+ readonly?: boolean|null,
36
+ starterText?: (string|boolean)|null
35
37
  };
36
38
 
37
39
  type Cache = {
@@ -81,6 +83,8 @@ declare class InCellEditingPlugin extends GridPlugin {
81
83
 
82
84
  public disableDblClick(opt_disabled?: boolean|null): void;
83
85
 
86
+ public showStarterText(bool?: boolean|null): void;
87
+
84
88
  public isEditing(): boolean;
85
89
 
86
90
  public getTextBox(columnIndex?: number|null, grid?: any): Element|null;
@@ -99,6 +103,10 @@ declare class InCellEditingPlugin extends GridPlugin {
99
103
 
100
104
  public isColumnEditable(colIndex: number): boolean;
101
105
 
106
+ public enableReadonly(bool: boolean): void;
107
+
108
+ public disableReadonly(bool: boolean): void;
109
+
102
110
  public openRowEditor(rowIndex: number, grid?: any): void;
103
111
 
104
112
  public closeRowEditor(isCommit?: boolean|null): void;
@@ -221,6 +221,8 @@ declare class Grid extends EventDispatcher {
221
221
 
222
222
  public insertRow(rowOption?: (RowDefinition.Options|string)|null, rowRef?: Grid.RowReference|null): RowDefinition|null;
223
223
 
224
+ public insertSegmentSeparator(rowOption?: RowDefinition.Options|null, rowRef?: Grid.RowReference|null): RowDefinition|null;
225
+
224
226
  public insertRows(rowOptions: (RowDefinition.Options|string)[]|null, rowRef?: Grid.RowReference|null, opt_fields?: (string)[]|null): void;
225
227
 
226
228
  public addStaticDataRows(dataRows: any[]|null, fields?: (string)[]|null): void;
@@ -285,6 +287,8 @@ declare class Grid extends EventDispatcher {
285
287
 
286
288
  public setRicData(ric: string, values: any): void;
287
289
 
290
+ public getAllRics(): (string)[]|null;
291
+
288
292
  public setRowData(rowRef: Grid.RowReference|null, values: any): void;
289
293
 
290
294
  public setStaticRowData(rowRef: Grid.RowReference|null, values: any): void;
@@ -142,7 +142,5 @@ declare const ROW_DEF: string;
142
142
 
143
143
  declare const ROW_TYPES: RowDefinition.RowTypes;
144
144
 
145
- declare function rowData(userInput: string, extractedOptions: any): boolean;
146
-
147
145
  export {RowDefinition, ROW_DEF, ROW_TYPES};
148
146
  export default RowDefinition;
@@ -1,9 +1,7 @@
1
1
  import { Ext } from "../../tr-grid-util/es6/Ext.js";
2
2
  import { EventDispatcher } from "../../tr-grid-util/es6/EventDispatcher.js";
3
3
  import { GridPlugin } from "../../tr-grid-util/es6/GridPlugin.js";
4
- import { isMac as isMacFn } from "../../tr-grid-util/es6/Util.js";
5
- import { isIE, prepareTSVContent } from "../../tr-grid-util/es6/Util.js";
6
- import { prettifyCss } from "../../tr-grid-util/es6/Util.js";
4
+ import { isMac as isMacFn, prepareTSVContent, prettifyCss } from "../../tr-grid-util/es6/Util.js";
7
5
 
8
6
  declare namespace RowSelectionPlugin {
9
7
 
package/lib/versions.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "tr-grid-util": "1.3.149",
2
+ "tr-grid-util": "1.3.151",
3
3
  "tr-grid-printer": "1.0.17",
4
4
  "@grid/column-dragging": "1.0.20",
5
5
  "@grid/row-segmenting": "1.0.31",
@@ -10,7 +10,7 @@
10
10
  "tr-grid-checkbox": "1.0.67",
11
11
  "tr-grid-column-fitter": "1.0.40",
12
12
  "tr-grid-column-formatting": "0.9.36",
13
- "tr-grid-column-grouping": "1.0.60",
13
+ "tr-grid-column-grouping": "1.0.61",
14
14
  "tr-grid-column-resizing": "1.0.28",
15
15
  "tr-grid-column-selection": "1.0.33",
16
16
  "tr-grid-column-stack": "1.0.75",
@@ -19,14 +19,14 @@
19
19
  "tr-grid-contextmenu": "1.0.41",
20
20
  "tr-grid-filter-input": "0.9.39",
21
21
  "tr-grid-heat-map": "1.0.29",
22
- "tr-grid-in-cell-editing": "1.0.84",
22
+ "tr-grid-in-cell-editing": "1.0.85",
23
23
  "tr-grid-pagination": "1.0.24",
24
24
  "tr-grid-percent-bar": "1.0.24",
25
25
  "tr-grid-range-bar": "2.0.8",
26
- "tr-grid-row-dragging": "1.0.34",
26
+ "tr-grid-row-dragging": "1.0.35",
27
27
  "tr-grid-row-filtering": "1.0.74",
28
28
  "tr-grid-row-grouping": "1.0.87",
29
- "tr-grid-row-selection": "1.0.28",
29
+ "tr-grid-row-selection": "1.0.30",
30
30
  "tr-grid-rowcoloring": "1.0.25",
31
31
  "tr-grid-textformatting": "1.0.48",
32
32
  "tr-grid-titlewrap": "1.0.22",
package/package.json CHANGED
@@ -66,5 +66,5 @@
66
66
  "publishConfig": {
67
67
  "access": "public"
68
68
  },
69
- "version": "6.0.98"
69
+ "version": "6.0.100"
70
70
  }