@refinitiv-ui/efx-grid 6.0.84 → 6.0.86

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 (46) hide show
  1. package/lib/core/dist/core.js +241 -153
  2. package/lib/core/dist/core.min.js +1 -1
  3. package/lib/core/es6/data/DataView.d.ts +4 -0
  4. package/lib/core/es6/data/DataView.js +23 -0
  5. package/lib/core/es6/grid/Core.d.ts +0 -4
  6. package/lib/core/es6/grid/Core.js +34 -22
  7. package/lib/core/es6/grid/plugins/SortableTitlePlugin.d.ts +13 -3
  8. package/lib/core/es6/grid/plugins/SortableTitlePlugin.js +184 -131
  9. package/lib/grid/index.js +1 -1
  10. package/lib/rt-grid/dist/rt-grid.js +275 -159
  11. package/lib/rt-grid/dist/rt-grid.min.js +1 -1
  12. package/lib/rt-grid/es6/ColumnDefinition.js +1 -2
  13. package/lib/rt-grid/es6/Grid.js +7 -7
  14. package/lib/tr-grid-checkbox/es6/Checkbox.d.ts +2 -0
  15. package/lib/tr-grid-checkbox/es6/Checkbox.js +38 -0
  16. package/lib/tr-grid-column-grouping/es6/ColumnGrouping.js +3 -4
  17. package/lib/tr-grid-filter-input/es6/FilterInput.js +32 -3
  18. package/lib/tr-grid-row-filtering/es6/RowFiltering.d.ts +4 -1
  19. package/lib/tr-grid-row-filtering/es6/RowFiltering.js +3 -0
  20. package/lib/tr-grid-textformatting/es6/TextFormatting.js +13 -2
  21. package/lib/tr-grid-util/es6/Dom.d.ts +1 -1
  22. package/lib/tr-grid-util/es6/Dom.js +1 -1
  23. package/lib/tr-grid-util/es6/ExpressionParser.js +1 -1
  24. package/lib/tr-grid-util/es6/FieldFormatter.js +4 -2
  25. package/lib/tr-grid-util/es6/FilterBuilder.d.ts +1 -1
  26. package/lib/tr-grid-util/es6/FilterBuilder.js +1 -1
  27. package/lib/tr-grid-util/es6/NumberFormatter.js +2 -2
  28. package/lib/tr-grid-util/es6/PercentBar.d.ts +1 -1
  29. package/lib/tr-grid-util/es6/PercentBar.js +1 -1
  30. package/lib/tr-grid-util/es6/RangeBar.d.ts +1 -1
  31. package/lib/tr-grid-util/es6/RangeBar.js +8 -7
  32. package/lib/tr-grid-util/es6/TextHighlighter.d.ts +0 -2
  33. package/lib/tr-grid-util/es6/TextHighlighter.js +1 -6
  34. package/lib/tr-grid-util/es6/formula/Formula.js +1 -1
  35. package/lib/tr-grid-util/es6/formula/VariableToken.js +1 -1
  36. package/lib/tr-grid-util/es6/formula/functions/Excel.d.ts +1 -1
  37. package/lib/tr-grid-util/es6/formula/functions/Excel.js +1 -1
  38. package/lib/tr-grid-util/es6/index.js +1 -1
  39. package/lib/tr-grid-util/es6/jet/DataGenerator.d.ts +1 -1
  40. package/lib/tr-grid-util/es6/jet/DataGenerator.js +1 -1
  41. package/lib/types/es6/Core/data/DataView.d.ts +4 -0
  42. package/lib/types/es6/Core/grid/Core.d.ts +0 -4
  43. package/lib/types/es6/Core/grid/plugins/SortableTitlePlugin.d.ts +13 -3
  44. package/lib/types/es6/RowFiltering.d.ts +4 -1
  45. package/lib/versions.json +6 -6
  46. package/package.json +1 -1
@@ -1001,8 +1001,7 @@ ColumnDefinition.prototype._setField = function(field, columnOption) {
1001
1001
  if(!field) {
1002
1002
  field = "";
1003
1003
  }
1004
- // Trim white spaces -- equivalent to String.trim(), which is not support in IE8
1005
- field = field.replace(/^\s+|\s+$/gm, "");
1004
+ field = field.trim();
1006
1005
 
1007
1006
  var formulaStr = columnOption ? columnOption["formula"] : "";
1008
1007
  if(this._fnEngine) {
@@ -65,10 +65,10 @@ import { ElementWrapper } from "../../core/es6/grid/components/ElementWrapper.js
65
65
  * @property {boolean=} columnVirtualization=false If enabled, all columns will be rendered. This will greatly impact grid's performance if the column set is huge.
66
66
  * @property {(number|null|boolean)=} topFreezingCount=null If number >= 0 will fix number of frozen title section, If false = disabled scrollbar, if null then title section will freeze auto when new section added, this option will not work with scrollbar option.
67
67
  * @property {(number|null)=} bottomFreezingCount=null If number >= 0 will fix nuber of frozen footer section, if null then footer section will freeze auto when new section added, this option will not work with scrollbar option.
68
- * @property {boolean=} borders=true Lines around grid element
69
- * @property {boolean=} gridlines=true Horizontal and Vertical lines for ONLY content sections
70
- * @property {boolean=} verticalLines=true Vertical lines for all sections
71
- * @property {boolean=} contentVerticalLines=true Vertical lines for all content section
68
+ * @property {boolean=} borders=false Lines around grid element
69
+ * @property {boolean=} gridlines Horizontal and Vertical lines for ONLY content sections
70
+ * @property {boolean=} verticalLines=false Vertical lines for all sections
71
+ * @property {boolean=} contentVerticalLines=false Vertical lines for all content section
72
72
  * @property {boolean=} horizontalLines=true Horizontal lines for all sections
73
73
  * @property {*=} RTK=null rtk toolkit instance
74
74
  * @property {Grid~ADCOptions=} ADC=null ADC requesting level config object from adc team
@@ -1778,7 +1778,7 @@ Grid.prototype.restoreColumns = function(columns, byId) {
1778
1778
  }
1779
1779
  }
1780
1780
  if (!found) {
1781
- removingFields.push(previousColumns[i].field);
1781
+ removingFields.push(i);
1782
1782
  }
1783
1783
  }
1784
1784
 
@@ -1794,7 +1794,7 @@ Grid.prototype.restoreColumns = function(columns, byId) {
1794
1794
  for (j = 0; j < keepingLen; j++) { // loop only keeping column
1795
1795
  if(compareLogic(columns[i], keepingColumns[j])) {
1796
1796
  found = true;
1797
- var colIndex = this.getColumnIndex(columns[i].field); // We cannot use 'i' (colIndex) in this case, as it will sort the columns. Instead, we need to obtain a new column index from the field.
1797
+ var colIndex = this.getColumnIndex(columns[i].id || columns[i].field); // We cannot use 'i' (colIndex) in this case, as it will sort the columns. Instead, we need to obtain a new column index from the field.
1798
1798
  columnOrdering.push(this.getColumnId(colIndex));
1799
1799
  break;
1800
1800
  }
@@ -3090,8 +3090,8 @@ Grid.prototype._getRowId = function(rowRef) {
3090
3090
  */
3091
3091
  Grid.prototype.getColumnIndex = function(colRef) {
3092
3092
  if(colRef) {
3093
- var colCount = this.getColumnCount();
3094
3093
  if(colRef instanceof ColumnDefinition) {
3094
+ var colCount = this.getColumnCount();
3095
3095
  for(var i = 0; i < colCount; ++i) {
3096
3096
  var colDef = this.getColumnDefinition(i);
3097
3097
  if(colDef === colRef) {
@@ -76,5 +76,7 @@ declare class CheckboxPlugin extends GridPlugin {
76
76
 
77
77
  declare function val(gridOptions?: any): any;
78
78
 
79
+ declare function newState(sectionRef: any, rowIndex: number, context?: any): void;
80
+
79
81
  export default CheckboxPlugin;
80
82
  export { CheckboxPlugin, CheckboxPlugin as Checkbox, CheckboxPlugin as CheckboxExtension };
@@ -1425,6 +1425,44 @@ CheckboxPlugin.prototype._onCheckboxChanged = function (e, toggling) {
1425
1425
 
1426
1426
  e.stopPropagation();
1427
1427
  };
1428
+
1429
+ /** @public
1430
+ * @description Check/Uncheck a specified row by a simulated mouse click input. This is for testing purpose.
1431
+ * @ignore
1432
+ * @param {Object} sectionRef Grid SectionReference object
1433
+ * @param {number} rowIndex
1434
+ * @param {Object=} context
1435
+ */
1436
+ CheckboxPlugin.prototype.toggleCheckByMouse = function(sectionRef, rowIndex, context) {
1437
+ var eventObj = context || {};
1438
+ eventObj.sectionType = sectionRef;
1439
+ eventObj = this._mockMouseEvent(this._displayColumn, rowIndex, eventObj);
1440
+
1441
+ var checkbox = this.getCheckbox(sectionRef, rowIndex);
1442
+ if(!checkbox) {
1443
+ return;
1444
+ }
1445
+ var curState = CheckboxPlugin._getCheckState(checkbox);
1446
+ CheckboxPlugin._setBooleanProp(checkbox, "checked", curState !== "checked");
1447
+ eventObj.currentTarget = eventObj.target = checkbox;
1448
+
1449
+ this._onCheckboxMousedown(eventObj);
1450
+ this._onCheckboxClicked(eventObj);
1451
+ };
1452
+ /** @public
1453
+ * @description Supply an keyboard input. This is for testing purpose.
1454
+ * @ignore
1455
+ * @param {string} keyName
1456
+ * @param {number} rowIndex
1457
+ * @param {Object} context
1458
+ */
1459
+ CheckboxPlugin.prototype.supplyKey = function(keyName, rowIndex, context) {
1460
+ var checkbox = this.getCheckbox("content", rowIndex);
1461
+ var eventObj = this._mockKeyboardEvent(keyName, context);
1462
+ eventObj.currentTarget = eventObj.target = checkbox;
1463
+ this._onCheckboxKeydown(eventObj);
1464
+ };
1465
+
1428
1466
  /** @private
1429
1467
  * @param {Event} e
1430
1468
  */
@@ -161,9 +161,7 @@ ColumnGroupingPlugin._toGroupDefinition = function (obj, groupId) {
161
161
  */
162
162
  ColumnGroupingPlugin._cloneObject = function (obj) {
163
163
  var newObj = cloneObject(obj);
164
- if (Array.isArray(newObj.children)) {
165
- newObj.children = newObj.children;
166
- } else {
164
+ if (!Array.isArray(newObj.children)) {
167
165
  newObj.children = [];
168
166
  }
169
167
  return newObj;
@@ -548,7 +546,8 @@ ColumnGroupingPlugin.prototype._evaluateGroupStructure = function () {
548
546
  this._maxDepth = maxDepth + 1; // Column header depth = maximum group depth + 1
549
547
  };
550
548
 
551
- /** @private Add pinning state to group definition for further verification.
549
+ /** Add pinning state to group definition for further verification.
550
+ * @private
552
551
  * @param {Object} groupDef
553
552
  * @param {string} side
554
553
  */
@@ -748,7 +748,7 @@ FilterInputPlugin.prototype.updateUI = function (colIndex, text) {
748
748
  };
749
749
  /** @private
750
750
  * @param {number} colIndex
751
- * @param {string} text
751
+ * @param {string|number} text
752
752
  * @param {Object=} textMap
753
753
  * @return {Object} Column option
754
754
  */
@@ -852,10 +852,11 @@ FilterInputPlugin.prototype.setInputValue = function (colIndex, value) {
852
852
  var colOpt = this._getExtColumnOption(colIndex);
853
853
 
854
854
  var type = colOpt.type ? colOpt.type.toLowerCase() : "";
855
+ var dateValue;
855
856
 
856
857
  if (type == "date") {
857
858
  var dateObj = ElfDate.from(value);
858
- value = dateObj ? dateObj.toDateString().substr(4) : "";
859
+ dateValue = dateObj ? dateObj.toDateString().substr(4) : "";
859
860
  }
860
861
 
861
862
  if (type == "multiselect") {
@@ -866,8 +867,36 @@ FilterInputPlugin.prototype.setInputValue = function (colIndex, value) {
866
867
  this.filterColumn(colIndex, "", textMap);
867
868
  } else {
868
869
  inputElem.value = value;
869
- this.filterColumn(colIndex, value);
870
+ this.filterColumn(colIndex, type == "date" ? dateValue : value);
871
+ }
872
+ };
873
+ /** @public
874
+ * @ignore
875
+ * @param {number} colIndex
876
+ * @return {Object}
877
+ */
878
+
879
+
880
+ FilterInputPlugin.prototype.getColumnFilter = function (colIndex) {
881
+ var proc = this._filterProc;
882
+
883
+ if (proc) {
884
+ return proc.getColumnFilterState(colIndex);
870
885
  }
886
+
887
+ return null;
888
+ };
889
+ /** @public
890
+ * @ignore
891
+ * @param {number} colIndex
892
+ * @return {Function}
893
+ */
894
+
895
+
896
+ FilterInputPlugin.prototype.getFilterLogic = function (colIndex) {
897
+ var option = this._getExtColumnOption(colIndex);
898
+
899
+ return option._comparingLogic;
871
900
  };
872
901
  /** Force filtering for every column
873
902
  * @public
@@ -45,7 +45,10 @@ declare namespace RowFilteringPlugin {
45
45
  click?: ((...params: any[]) => any)|null,
46
46
  clicked?: ((...params: any[]) => any)|null,
47
47
  iconCreated?: ((...params: any[]) => any)|null,
48
- filterChanged?: ((...params: any[]) => any)|null
48
+ filterChanged?: ((...params: any[]) => any)|null,
49
+ beforeDialogOpened?: ((...params: any[]) => any)|null,
50
+ dialogCommitted?: ((...params: any[]) => any)|null,
51
+ refreshed?: ((...params: any[]) => any)|null
49
52
  };
50
53
 
51
54
  }
@@ -102,6 +102,9 @@ The expression can take various forms:<br>
102
102
  * @property {Function=} clicked=null Alias to `click` event handler
103
103
  * @property {Function=} iconCreated=null Event handler dispatched when a new column filter icon is created.
104
104
  * @property {Function=} filterChanged=null Event handler dispatched whenever global or column filter is changed by either adding or removing.
105
+ * @property {Function=} beforeDialogOpened=null Event handler dispatched before dialog opening.
106
+ * @property {Function=} dialogCommitted=null Event handler dispatched whenever the new settings from dialog are applied.
107
+ * @property {Function=} refreshed=null Event handler dispatched after new filter is applied to grid's data view.
105
108
  */
106
109
 
107
110
  /** @private
@@ -30,8 +30,8 @@ import { DateTime } from '../../tr-grid-util/es6/DateTime.js';
30
30
  * @property {boolean=} precisionEnabled=true If disabled, number of decimal will remain as original.
31
31
  * @property {boolean=} plusSign=false
32
32
  * @property {boolean=} separator=false Thousands separators
33
- * @property {boolean=} percentSign=false
34
- * @property {string=} scalingUnit Value can be million or billion
33
+ * @property {boolean=} percentSign=false If the formatType is percent and the value of percentSign is not specified, the percentSign is set to true by default
34
+ * @property {string=} scalingUnit=million Value can be million or billion
35
35
  * @property {boolean=} multiplyBy100=false
36
36
  * @property {boolean=} mutiplyBy100=false Alias of multiplyBy100
37
37
  * @property {string=} dateTimeFormat="MM/DD/YYYY"
@@ -328,6 +328,14 @@ TextFormattingPlugin.prototype._setColumnFormat = function (colIndex, userObj) {
328
328
  }
329
329
  fo["decimalPlaces"] = precision;
330
330
  fo["precisionEnabled"] = precisionEnabled;
331
+ if (fot === "percent") {
332
+ var percentSign = fo["percentSign"];
333
+ if (percentSign == null) {
334
+ fo["percentSign"] = true;
335
+ } else {
336
+ colData["percentSign"] = percentSign;
337
+ }
338
+ }
331
339
  nf = new NumberFormatter(fo);
332
340
  ff.setNumberFormatter(nf.format);
333
341
  }
@@ -369,6 +377,9 @@ TextFormattingPlugin.prototype.getColumnFormatOptions = function (colIndex, opti
369
377
  } else {
370
378
  delete options["decimalPlaces"];
371
379
  }
380
+ if (options["formatType"] === "percent" && colData["percentSign"] != null) {
381
+ options["percentSign"] = colData["percentSign"];
382
+ }
372
383
  }
373
384
  }
374
385
  return options;
@@ -6,7 +6,7 @@ declare namespace Dom {
6
6
 
7
7
  function div(className?: string|null): Element;
8
8
 
9
- function text(textContent?: string|null, className?: string|null): Element;
9
+ function text(textContent?: (string|number)|null, className?: string|null): Element;
10
10
 
11
11
  function appendChild(parentElem: Element|null, children: Node|any[]|null): Element|null;
12
12
 
@@ -27,7 +27,7 @@ Dom.div = function(className) {
27
27
  /** Shorthand for creating a span element with textContent
28
28
  * @public
29
29
  * @function
30
- * @param {string=} textContent
30
+ * @param {(string|number)=} textContent
31
31
  * @param {string=} className
32
32
  * @return {!Element}
33
33
  */
@@ -42,7 +42,7 @@ var OperatorFunctions = {
42
42
  "!": function(lhs, rhs){ return !lhs; },
43
43
  "!!": function(lhs, rhs){ return !!lhs; }
44
44
  };
45
- /** @type {Object.<string, Function>}
45
+ /** @type {Object.<string, number>}
46
46
  * @private
47
47
  * @const
48
48
  */
@@ -27,6 +27,8 @@ const DATE_TIME_TYPE = {
27
27
  "TIME-DATE": true
28
28
  };
29
29
 
30
+ const DEFAULT_DATE_TIME_FORMAT = "MM/DD/YYYY";
31
+
30
32
  /* eslint-enaable */
31
33
 
32
34
  /** @public
@@ -189,7 +191,7 @@ FieldFormatter.prototype.getOptions = function(options) { // serialize
189
191
  options["field"] = this._field;
190
192
  options["formatType"] = this._userFormatType ? this._userFormatType : this._formatType; // WARNING: Beware of case sensitivity
191
193
  if(toDateTimeType(options["formatType"]) == DATE_TIME){
192
- if(this._dateTimeFormat !== "") {
194
+ if(this._dateTimeFormat && this._dateTimeFormat !== DEFAULT_DATE_TIME_FORMAT) {
193
195
  options["dateTimeFormat"] = this._dateTimeFormat;
194
196
  }
195
197
  if(this._timeZone !== "GMT") {
@@ -391,7 +393,7 @@ FieldFormatter.prototype._formatDateTime = function(val, rowData) {
391
393
  }
392
394
  val = new Date(sec * 1000); // Convert real-time raw data (second) to millisecond
393
395
  }
394
- return this._df(val, this._dateTimeFormat || "MM/DD/YYYY", this._timeZone);
396
+ return this._df(val, this._dateTimeFormat || DEFAULT_DATE_TIME_FORMAT, this._timeZone);
395
397
  };
396
398
  /** @private
397
399
  * @param {number|string|Date} val
@@ -32,7 +32,7 @@ declare class FilterBuilder {
32
32
 
33
33
  public setDataAccessors(rawDataAccessor?: ((...params: any[]) => any)|null, formattedDataAccessor?: ((...params: any[]) => any)|null): void;
34
34
 
35
- public addCondition(oper: string, value: string|number|Date|null, connector?: string|null, useUTCTime?: boolean|null): boolean;
35
+ public addCondition(oper: string, value: string|number|boolean|Date|null, connector?: string|null, useUTCTime?: boolean|null): boolean;
36
36
 
37
37
  public addConditions(conditions: FilterBuilder.Conditions|null): number;
38
38
 
@@ -375,7 +375,7 @@ FilterBuilder.prototype.setDataAccessors = function(rawDataAccessor, formattedDa
375
375
  };
376
376
  /** @public
377
377
  * @param {string} oper Operator id (e.g., "GT", "CONT", "EQ")
378
- * @param {string|number|Date} value If date type operator is specified, this should be accompanied with useUTCTime flag to indicate whether local or UTC time to be used.
378
+ * @param {string|number|boolean|Date} value If date type operator is specified, this should be accompanied with useUTCTime flag to indicate whether local or UTC time to be used.
379
379
  * @param {string=} connector Possible values are "OR" and "AND"
380
380
  * @param {boolean=} useUTCTime If the value is not specified, the default setting will be used
381
381
  * @return {boolean} Return true, if the new condition is added
@@ -161,7 +161,7 @@ NumberFormatter.prototype.init = function(options) { // deserialize
161
161
  if(val != null && val !== "") {
162
162
  this._percentSignEnabled = val ? true : false;
163
163
  } else {
164
- this._percentSignEnabled = true;
164
+ this._percentSignEnabled = false;
165
165
  }
166
166
 
167
167
  val = options["multiplyBy100"];
@@ -267,7 +267,7 @@ NumberFormatter.prototype.getOptions = function(options) { // serialize
267
267
  }
268
268
 
269
269
  if(formatType === "percent") {
270
- if(this._percentSignEnabled !== true) {
270
+ if(this._percentSignEnabled !== false) {
271
271
  options["percentSign"] = this._percentSignEnabled;
272
272
  }
273
273
  if(this._multiplyBy100Enabled !== false) {
@@ -37,7 +37,7 @@ declare class PercentBar {
37
37
 
38
38
  public hideZeroValue(hidden?: boolean|null): boolean;
39
39
 
40
- public setText(txt: string): void;
40
+ public setText(txt: string|number|null): void;
41
41
 
42
42
  public hideText(hidden?: boolean|null): boolean;
43
43
 
@@ -318,7 +318,7 @@ PercentBar.prototype.hideZeroValue = function (hidden) {
318
318
  };
319
319
 
320
320
  /** @public
321
- * @param {string} txt
321
+ * @param {string|number} txt
322
322
  */
323
323
  PercentBar.prototype.setText = function (txt) {
324
324
  if(!this._invalid) {
@@ -23,7 +23,7 @@ declare class RangeBar {
23
23
 
24
24
  public setPercent(percent?: number|null): void;
25
25
 
26
- public isPercentNaN(): boolean;
26
+ public isValid(): boolean;
27
27
 
28
28
  public isInvalid(): boolean;
29
29
 
@@ -137,7 +137,7 @@ RangeBar.prototype.setStyles = function(obj) {
137
137
  }
138
138
  }
139
139
 
140
- if(!this.isPercentNaN()) {
140
+ if(!this.isValid()) {
141
141
  this._elem.style.backgroundColor = this._styles["trackColor"];
142
142
  }
143
143
  if(this._styles["fontColor"] != null) {
@@ -185,7 +185,7 @@ RangeBar.prototype.getPercent = function() {
185
185
  RangeBar.prototype.setPercent = function(percent) {
186
186
  percent = RangeBar._limitPercent(percent);
187
187
  if(this._percent !== percent) {
188
- if(this._percent === this._percent || percent === percent) { // Prevent unnecessary update by checking NaN
188
+ if(this.isValid() || percent === percent) { // Prevent unnecessary update by checking NaN
189
189
  this._percent = percent;
190
190
  this._updateUI();
191
191
  }
@@ -226,20 +226,21 @@ RangeBar._limitPercent = function(percent) {
226
226
  /** @public
227
227
  * @return {boolean}
228
228
  */
229
- RangeBar.prototype.isPercentNaN = function() {
229
+ RangeBar.prototype.isValid = function() {
230
230
  return this._percent === this._percent;
231
231
  };
232
232
 
233
- /** Alias to {@link RangeBar#isPercentNaN}
234
- * @public
233
+ /** @public
235
234
  * @function
236
235
  * @return {boolean}
237
236
  */
238
- RangeBar.prototype.isInvalid = RangeBar.prototype.isPercentNaN;
237
+ RangeBar.prototype.isInvalid = function() {
238
+ return !this.isValid();
239
+ };
239
240
 
240
241
  /** @private */
241
242
  RangeBar.prototype._updateUI = function() {
242
- if(this.isPercentNaN()) {
243
+ if(this.isValid()) {
243
244
  var percent = ((this._percent * 10000) | 0) / 10000; // rounding number
244
245
  this._slider.style.left = "calc(" +
245
246
  (percent * 100) +
@@ -6,8 +6,6 @@ declare namespace TextHighlighter {
6
6
 
7
7
  const spaces: RegExp|null;
8
8
 
9
- const spaceTrimer: RegExp|null;
10
-
11
9
  const defaultTag: string;
12
10
 
13
11
  }
@@ -12,11 +12,6 @@ TextHighlighter.invalidChars = /[^\w-_ .]+/g;
12
12
  * @public
13
13
  */
14
14
  TextHighlighter.spaces = /\s+/;
15
- /** /^\s+|\s+$/g
16
- * @type {RegExp}
17
- * @public
18
- */
19
- TextHighlighter.spaceTrimer = /^\s+|\s+$/g;
20
15
  /** Default is &lt;mark> tag
21
16
  * @type {string}
22
17
  * @public
@@ -256,7 +251,7 @@ TextHighlighter.buildRule = function(txt, caseSensitive) {
256
251
 
257
252
  if(txt) {
258
253
  txt = txt.replace(TextHighlighter.invalidChars, " ");
259
- txt = txt.replace(TextHighlighter.spaceTrimer, "");
254
+ txt = txt.trim();
260
255
  }
261
256
  if(!txt) {
262
257
  return null;
@@ -613,7 +613,7 @@ Formula.prototype._parse = function(exp) {
613
613
  if(exp.charAt(0) === "=") { // Remove the first equal sign
614
614
  exp = exp.substr(1);
615
615
  }
616
- exp = exp.replace(/^\s+|\s+$/gm, ""); // Trim white spaces -- equivalent to String.trim(), which is not support in IE8
616
+ exp = exp.trim();
617
617
  exp = exp.replace(/<>/g, "!=");
618
618
  exp = exp.replace(/‛|‘|’/g, "'"); // Left and right single quote will be converted to simple single quote
619
619
  exp = exp.replace(/‟|“|”/g, '"'); // Left and right double quote will be converted to simple double quote
@@ -4,7 +4,7 @@
4
4
  * @param {number=} index
5
5
  */
6
6
  var VariableToken = function(str, index) {
7
- str = str.replace(/^\s+|\s+$/gm, ""); // Trim white spaces -- equivalent to String.trim(), which is not support in IE8
7
+ str = str.trim();
8
8
 
9
9
  if(this._inputConverter[str]) {
10
10
  str = this._inputConverter[str];
@@ -5,4 +5,4 @@ declare namespace Excel {
5
5
  }
6
6
 
7
7
  export default Excel;
8
- export { Excel }; ("Excel", Excel);
8
+ export { Excel };
@@ -18,4 +18,4 @@ Excel["REFERENCEDATA"] = function(/* ... args*/) {};
18
18
  Excel["SETCOLUMNCOLOR"] = function(/* ... args*/) {};
19
19
 
20
20
  export default Excel;
21
- export { Excel }; ("Excel", Excel);
21
+ export { Excel };
@@ -50,7 +50,7 @@ tr.Conflator = Conflator;
50
50
  tr.Perf = Perf;
51
51
  tr.NumberFormatter = NumberFormatter;
52
52
  tr.FieldFormatter = FieldFormatter;
53
- tr.DateTime = tr.DateTime;
53
+ tr.DateTime = DateTime;
54
54
  tr.FilterBuilder = FilterBuilder;
55
55
  tr.FilterOperators = FilterOperators;
56
56
  tr.PercentBar = PercentBar;
@@ -102,7 +102,7 @@ declare function randDate(min?: (number|any)|null, max?: (number|any)|null, seed
102
102
 
103
103
  declare function randString(min?: number|null, max?: number|null, seed?: number|null): string;
104
104
 
105
- declare function toRecords(data2D: (any[])[]|null, fields?: (string)[]|null): (any)[]|null;
105
+ declare function toRecords(data2D: (any[])[]|null, fields?: (string|number)[]|null): (any)[]|null;
106
106
 
107
107
  declare function getSeed(): number;
108
108
 
@@ -277,7 +277,7 @@ var randString = function(min, max, seed) {
277
277
  /** Convert 2D Array to Array of records
278
278
  * @public
279
279
  * @param {Array.<Array>} data2D Array of values
280
- * @param {Array.<string>=} fields Keys to be mapped on the output records.
280
+ * @param {Array.<string|number>=} fields Keys to be mapped on the output records.
281
281
  * @return {Array.<Object>} records
282
282
  */
283
283
  var toRecords = function(data2D, fields) {
@@ -218,10 +218,14 @@ declare class DataView extends EventDispatcher {
218
218
 
219
219
  public getExpansionParents(from?: number|null, to?: number|null): (string)[]|null;
220
220
 
221
+ public getExpansionParentByRowId(rid: string): string;
222
+
221
223
  public isRowExpansion(rid: string): boolean;
222
224
 
223
225
  public hasRowExpansion(rid: string): boolean;
224
226
 
227
+ public getRowExpansionCount(rowId: string): number;
228
+
225
229
  public getRowExpansionId(rid: string, idx?: number|null): string;
226
230
 
227
231
  public getRowExpansionIndex(rid: string): number;
@@ -227,10 +227,6 @@ declare class Core extends ElementWrapper {
227
227
 
228
228
  public getColumnData(colIndex: number): any;
229
229
 
230
- public setColumnData(colIndex: number, userData: any): any;
231
-
232
- public newColumnData(colIndex: number): any;
233
-
234
230
  public setAlwaysRenderColumn(colIndex: number, alwaysRender?: boolean|null): void;
235
231
 
236
232
  public getFitContentWidth(): boolean;
@@ -18,6 +18,14 @@ declare namespace SortableTitlePlugin {
18
18
  order?: SortableTitlePlugin.SortOrder|null
19
19
  };
20
20
 
21
+ type SortingDefinition = {
22
+ colIndex?: number|null,
23
+ colId?: string|null,
24
+ field?: string|null,
25
+ sortOrder?: SortableTitlePlugin.SortOrder|null,
26
+ order?: SortableTitlePlugin.SortOrder|null
27
+ };
28
+
21
29
  type ColumnOptions = {
22
30
  sortable?: boolean|null,
23
31
  sortBy?: string|null,
@@ -30,7 +38,7 @@ declare namespace SortableTitlePlugin {
30
38
  };
31
39
 
32
40
  type Options = {
33
- initialSort?: (SortableTitlePlugin.InitialSort|(SortableTitlePlugin.InitialSort)[])|null,
41
+ initialSort?: (SortableTitlePlugin.InitialSort|(SortableTitlePlugin.SortingDefinition)[])|null,
34
42
  multicolumn?: (boolean|number)|null,
35
43
  multiColumn?: (boolean|number)|null,
36
44
  threeStatesSorting?: boolean|null,
@@ -79,7 +87,7 @@ declare class SortableTitlePlugin extends EventDispatcher {
79
87
 
80
88
  public getSortedColumnIndex(priority?: number|null): number;
81
89
 
82
- public getSortPriority(colIndex: number): number;
90
+ public getSortPriority(colIndex: number, colRef?: string|null): number;
83
91
 
84
92
  public isColumnSorted(colIndex: number): boolean;
85
93
 
@@ -89,7 +97,7 @@ declare class SortableTitlePlugin extends EventDispatcher {
89
97
 
90
98
  public sortColumn(colRef: number|string|null, sortOrder?: string|null, opt_arg?: any): void;
91
99
 
92
- public sortColumns(sortOptions: (SortableTitlePlugin.InitialSort)[]|null, opt_arg?: any): void;
100
+ public sortColumns(sortOptions: (SortableTitlePlugin.SortingDefinition)[]|null, opt_arg?: any): void;
93
101
 
94
102
  public clearSortState(opt_arg?: any): void;
95
103
 
@@ -113,6 +121,8 @@ declare class SortableTitlePlugin extends EventDispatcher {
113
121
 
114
122
  public getColumnSortingFields(): (string)[];
115
123
 
124
+ public setFirstSortOrder(colIdentifier: string|number|(string|number)[]|null, sortOrder?: string|null): void;
125
+
116
126
  public disableTwoStateSorting(disabled?: boolean|null): void;
117
127
 
118
128
  public freezeIndicator(bool?: boolean|null): void;
@@ -45,7 +45,10 @@ declare namespace RowFilteringPlugin {
45
45
  click?: ((...params: any[]) => any)|null,
46
46
  clicked?: ((...params: any[]) => any)|null,
47
47
  iconCreated?: ((...params: any[]) => any)|null,
48
- filterChanged?: ((...params: any[]) => any)|null
48
+ filterChanged?: ((...params: any[]) => any)|null,
49
+ beforeDialogOpened?: ((...params: any[]) => any)|null,
50
+ dialogCommitted?: ((...params: any[]) => any)|null,
51
+ refreshed?: ((...params: any[]) => any)|null
49
52
  };
50
53
 
51
54
  }
package/lib/versions.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "tr-grid-util": "1.3.136",
2
+ "tr-grid-util": "1.3.139",
3
3
  "tr-grid-printer": "1.0.17",
4
4
  "@grid/column-dragging": "1.0.16",
5
5
  "@grid/row-segmenting": "1.0.30",
@@ -7,28 +7,28 @@
7
7
  "@grid/zoom": "1.0.11",
8
8
  "tr-grid-auto-tooltip": "1.1.6",
9
9
  "tr-grid-cell-selection": "1.0.35",
10
- "tr-grid-checkbox": "1.0.64",
10
+ "tr-grid-checkbox": "1.0.65",
11
11
  "tr-grid-column-fitter": "1.0.40",
12
12
  "tr-grid-column-formatting": "0.9.35",
13
- "tr-grid-column-grouping": "1.0.57",
13
+ "tr-grid-column-grouping": "1.0.58",
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.74",
17
17
  "tr-grid-conditional-coloring": "1.0.69",
18
18
  "tr-grid-content-wrap": "1.0.20",
19
19
  "tr-grid-contextmenu": "1.0.41",
20
- "tr-grid-filter-input": "0.9.37",
20
+ "tr-grid-filter-input": "0.9.39",
21
21
  "tr-grid-heat-map": "1.0.29",
22
22
  "tr-grid-in-cell-editing": "1.0.81",
23
23
  "tr-grid-pagination": "1.0.24",
24
24
  "tr-grid-percent-bar": "1.0.22",
25
25
  "tr-grid-range-bar": "2.0.6",
26
26
  "tr-grid-row-dragging": "1.0.31",
27
- "tr-grid-row-filtering": "1.0.67",
27
+ "tr-grid-row-filtering": "1.0.68",
28
28
  "tr-grid-row-grouping": "1.0.86",
29
29
  "tr-grid-row-selection": "1.0.27",
30
30
  "tr-grid-rowcoloring": "1.0.25",
31
- "tr-grid-textformatting": "1.0.47",
31
+ "tr-grid-textformatting": "1.0.48",
32
32
  "tr-grid-titlewrap": "1.0.21",
33
33
  "@grid/formatters": "1.0.51",
34
34
  "@grid/column-selection-dialog": "4.0.56",