@refinitiv-ui/efx-grid 6.0.84 → 6.0.86

Sign up to get free protection for your applications and to get access to all the features.
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",