@refinitiv-ui/efx-grid 6.0.62 → 6.0.64

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.
package/lib/grid/index.js CHANGED
@@ -1,3 +1,3 @@
1
1
  import {Grid} from "./lib/efx-grid.js";
2
2
  export {Grid}
3
- window.EFX_GRID = { version: "6.0.62" };
3
+ window.EFX_GRID = { version: "6.0.64" };
@@ -4,6 +4,7 @@ import { ExpanderIcon } from "../../tr-grid-util/es6/ExpanderIcon.js";
4
4
  import { ElfUtil } from "../../tr-grid-util/es6/ElfUtil.js";
5
5
  import { RowPainter } from "../../tr-grid-util/es6/RowPainter.js";
6
6
  import { injectCss, prettifyCss } from "../../tr-grid-util/es6/Util.js";
7
+ import { Conflator } from "../../tr-grid-util/es6/Conflator.js";
7
8
 
8
9
  declare namespace RowSegmentingPlugin {
9
10
 
@@ -33,6 +34,8 @@ declare class RowSegmentingPlugin extends GridPlugin {
33
34
 
34
35
  public initialize(host: any, options?: any): void;
35
36
 
37
+ public requestSeparatorRefresh(): void;
38
+
36
39
  public unload(host?: any): void;
37
40
 
38
41
  public config(options?: any): void;
@@ -4,6 +4,7 @@ import { ExpanderIcon } from "../../tr-grid-util/es6/ExpanderIcon.js";
4
4
  import { ElfUtil } from "../../tr-grid-util/es6/ElfUtil.js";
5
5
  import { RowPainter } from "../../tr-grid-util/es6/RowPainter.js";
6
6
  import { injectCss, prettifyCss } from "../../tr-grid-util/es6/Util.js";
7
+ import { Conflator } from "../../tr-grid-util/es6/Conflator.js";
7
8
 
8
9
  /** @typedef {Object} RowSegmentingPlugin~Options
9
10
  * @description The options can be specified by `rowSegmenting` property of the main grid's options
@@ -37,6 +38,8 @@ var RowSegmentingPlugin = function (options) {
37
38
  t._updateHeader = t._updateHeader.bind(t);
38
39
  t._onArrowClick = t._onArrowClick.bind(t);
39
40
  t._rtSortingLogic = t._rtSortingLogic.bind(t);
41
+ t._refreshSegmentSeparator = t._refreshSegmentSeparator.bind(t);
42
+ t._separatorRefreshConflator = new Conflator(10, t._refreshSegmentSeparator);
40
43
 
41
44
  t._hosts = [];
42
45
  this.config({ rowSegmenting: options });
@@ -51,6 +54,10 @@ RowSegmentingPlugin.prototype._userSortingLogic = null;
51
54
  * @private
52
55
  */
53
56
  RowSegmentingPlugin.prototype._spanning = true;
57
+ /** @type {boolean}
58
+ * @private
59
+ */
60
+ RowSegmentingPlugin.prototype._prevSegmentBySegmentId = false;
54
61
  /** @type {Array.<number>}
55
62
  * @private
56
63
  */
@@ -83,6 +90,10 @@ RowSegmentingPlugin.prototype._segmentIdField = "SEGMENT_ID";
83
90
  * @private
84
91
  */
85
92
  RowSegmentingPlugin.prototype._runningId = 0;
93
+ /** @type {Conflator}
94
+ * @private
95
+ */
96
+ RowSegmentingPlugin.prototype._separatorRefreshConflator = null;
86
97
  /** @type {Object}
87
98
  * @private
88
99
  */
@@ -125,7 +136,6 @@ RowSegmentingPlugin.prototype.initialize = function (host, options) {
125
136
  }
126
137
 
127
138
  ExpanderIcon.loadExpanderStyles();
128
- ExpanderIcon.injectExpanderStyles(host.getElement());
129
139
 
130
140
  this._hosts.push(host);
131
141
  host.listen("preSectionDataBinding", this._onPreSectionDataBinding);
@@ -146,19 +156,34 @@ RowSegmentingPlugin.prototype.initialize = function (host, options) {
146
156
  enabled = this._headerMenuClicked;
147
157
  RowPainter.enableHeaderMenu(host, enabled ? true : false);
148
158
  };
149
- /**
150
- * @protected
151
- * @ignore
159
+
160
+ /** request to set the segment separator with the segment ID field in row data
161
+ * @public
152
162
  */
153
- RowSegmentingPlugin.prototype._afterInit = function () {
163
+ RowSegmentingPlugin.prototype.requestSeparatorRefresh = function () {
164
+ if(this._separatorRefreshConflator.conflate()) {
165
+ return;
166
+ }
167
+ this._refreshSegmentSeparator();
168
+ };
169
+
170
+ /** remove all segment separators then set the segment separator with the segment ID field in row data
171
+ * @private
172
+ */
173
+ RowSegmentingPlugin.prototype._refreshSegmentSeparator = function () {
174
+ if(this._prevSegmentBySegmentId) { // Check only the segmentation set by the segment ID field and exclude the segment separator set by the runtime API using the setSegmentSeparator method
175
+ this._prevSegmentBySegmentId = false;
176
+ this.unsetAllSegmentSeparators();
177
+ }
154
178
  var dv = this._getDataView();
155
179
  if(dv) {
156
- var rowIds = dv.getAllRowIds();
180
+ var dt = dv.getDataSource();
181
+ var rowIds = dt.getAllRowIds();
157
182
  var rowCount = rowIds.length;
158
183
  var separatorMapping = {};
159
184
  for (var i = 0; i < rowCount; i++) {
160
185
  var rowId = rowIds[i];
161
- var rowData = this._rowGetter(dv.getRowData(rowId));
186
+ var rowData = this._rowGetter(dt.getRowData(rowId));
162
187
  var segmentId = rowData[this._segmentIdField];
163
188
  // TODO: supports collapsed and expanded for save/restore
164
189
 
@@ -169,8 +194,8 @@ RowSegmentingPlugin.prototype._afterInit = function () {
169
194
  separatorMapping[segmentId] = rowId;
170
195
  this.setSegmentSeparator(rowId);
171
196
  }
197
+ this._prevSegmentBySegmentId = true;
172
198
  }
173
-
174
199
  }
175
200
  }
176
201
  };
@@ -184,6 +209,9 @@ RowSegmentingPlugin.prototype.unload = function (host) {
184
209
  }
185
210
  host.unlisten("preSectionDataBinding", this._onPreSectionDataBinding);
186
211
  this._hosts.splice(at, 1);
212
+ if(this._hosts.length <= 0) {
213
+ this._separatorRefreshConflator.reset();
214
+ }
187
215
  this._dispose();
188
216
  };
189
217
 
@@ -233,6 +261,7 @@ RowSegmentingPlugin.prototype.config = function (options) {
233
261
  this.addListener(option, "clicked");
234
262
  this.addListener(option, "segmentSeparatorBinding");
235
263
  this.addListener(option, "nonSegmentSeparatorBinding");
264
+ this.requestSeparatorRefresh();
236
265
  };
237
266
 
238
267
  /** @public
@@ -83,7 +83,8 @@ import { CoralItems } from "../../tr-grid-util/es6/CoralItems.js";
83
83
  * @description Fired after the text editor has been closed and all operations are done. This is useful to clean up left over resource and get result text entered.
84
84
  * @type {Object}
85
85
  * @property {string=} text Text that user has entered
86
- * @property {boolean=} groupHeader if the row is header of row, it will be groupHeader
86
+ * @property {boolean=} groupHeader This value is set to true if the editing row is a group header.
87
+ * @property {boolean=} segmentSeparator This value is set to true if the editing row is a segment separator.
87
88
  * @property {Object} suggestionDetail Suggestion detail for auto suggest "item-select" event
88
89
  * @property {boolean} cancelled Readonly flag. Indicates whether the commit operation has been cancelled
89
90
  * @property {boolean} committed Readonly flag. The opposite of `cancelled` flag
@@ -94,7 +95,8 @@ import { CoralItems } from "../../tr-grid-util/es6/CoralItems.js";
94
95
  * @type {Object}
95
96
  * @property {string=} text Text that user has entered
96
97
  * @property {boolean=} cancel Set to true to cancel the commit operation.
97
- * @property {boolean=} groupHeader if the row is header of row, it will be groupHeader
98
+ * @property {boolean=} groupHeader This value is set to true if the editing row is a group header.
99
+ * @property {boolean=} segmentSeparator This value is set to true if the editing row is a segment separator.
98
100
  * @property {Object} suggestionDetail Suggestion detail for auto suggest "item-select" event
99
101
  * @example
100
102
  * var cep = new InCellEditingPlugin();
@@ -1012,6 +1014,13 @@ InCellEditingPlugin.prototype._onDoubleClick = function (e, opt_host) {
1012
1014
  } else if (sectionType === "header") {
1013
1015
  return;
1014
1016
  }
1017
+ var dataSource = arg["dataSource"];
1018
+ if (dataSource != null) {
1019
+ var rowId = dataSource.getRowId(arg["rowIndex"]);
1020
+ if (dataSource.getGroupByRowId(rowId)) {
1021
+ return;
1022
+ }
1023
+ }
1015
1024
 
1016
1025
  // Initialize internal states
1017
1026
  if (e["preventDefault"]) {
@@ -1069,7 +1078,8 @@ InCellEditingPlugin.prototype._openEditor = function (e, host, arg) {
1069
1078
  var dataSource = arg["dataSource"];
1070
1079
  if (dataSource != null) {
1071
1080
  var rowId = arg["rowId"] = this._getRowId(arg["rowIndex"]);
1072
- arg["groupHeader"] = dataSource.isSegmentSeparator(rowId) || dataSource.getGroupByRowId(rowId);
1081
+ arg["segmentSeparator"] = dataSource.isSegmentSeparator(rowId);
1082
+ arg["groupHeader"] = dataSource.getGroupByRowId(rowId);
1073
1083
  arg["rowData"] = this._getRow(dataSource, rowId);
1074
1084
  }
1075
1085
 
@@ -1,7 +1,8 @@
1
- import {Ext} from '../../tr-grid-util/es6/Ext.js';
2
- import {GridPlugin} from '../../tr-grid-util/es6/GridPlugin.js';
3
- import {FilterBuilder} from '../../tr-grid-util/es6/FilterBuilder.js';
4
- import {ElfUtil} from '../../tr-grid-util/es6/ElfUtil.js';
1
+ import {Ext} from "../../tr-grid-util/es6/Ext.js";
2
+ import {GridPlugin} from "../../tr-grid-util/es6/GridPlugin.js";
3
+ import {FilterBuilder} from "../../tr-grid-util/es6/FilterBuilder.js";
4
+ import {FilterOperators} from "../../tr-grid-util/es6/FilterOperators.js";
5
+ import {ElfUtil} from "../../tr-grid-util/es6/ElfUtil.js";
5
6
  import { injectCss, prettifyCss } from "../../tr-grid-util/es6/Util.js";
6
7
 
7
8
  declare namespace RowFilteringPlugin {
@@ -1,9 +1,10 @@
1
1
  function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
2
2
 
3
- import { Ext } from '../../tr-grid-util/es6/Ext.js';
4
- import { GridPlugin } from '../../tr-grid-util/es6/GridPlugin.js';
5
- import { FilterBuilder } from '../../tr-grid-util/es6/FilterBuilder.js';
6
- import { ElfUtil } from '../../tr-grid-util/es6/ElfUtil.js';
3
+ import { Ext } from "../../tr-grid-util/es6/Ext.js";
4
+ import { GridPlugin } from "../../tr-grid-util/es6/GridPlugin.js";
5
+ import { FilterBuilder } from "../../tr-grid-util/es6/FilterBuilder.js";
6
+ import { FilterOperators } from "../../tr-grid-util/es6/FilterOperators.js";
7
+ import { ElfUtil } from "../../tr-grid-util/es6/ElfUtil.js";
7
8
  import { injectCss, prettifyCss } from "../../tr-grid-util/es6/Util.js";
8
9
  /** @event RowFilteringPlugin#click
9
10
  * @description click event is dispatched when a user clicks the column filter icon.
@@ -70,7 +71,7 @@ The expression can take various forms:<br>
70
71
  * @description Extension column options that can be specified on each individual grid's column option:
71
72
  * @property {RowFilteringPlugin~Expression=} filter An expression string or Function
72
73
  * @property {*=} filterState Context object that will be passed as the third parameter for the filter logic
73
- * @property {boolean=} filterIcon=true If disabled, filter icon will not be shown. This property only works with 'always' mode
74
+ * @property {boolean=} filterIcon=true If disabled, filter icon will not be shown. This property only works with "always" mode
74
75
  */
75
76
 
76
77
  /** @typedef {Object} RowFilteringPlugin~FilterDialogOptions
@@ -121,6 +122,7 @@ var RowFilteringPlugin = function RowFilteringPlugin() {
121
122
  t._onPreSectionRender = t._onPreSectionRender.bind(t);
122
123
  t._onColumnAdded = t._onColumnAdded.bind(t);
123
124
  t._onColumnRemoved = t._onColumnRemoved.bind(t);
125
+ t._onPreLoadedDialog = t._onPreLoadedDialog.bind(t);
124
126
  t._onIconClicked = t._onIconClicked.bind(t);
125
127
  t._filterLogic = t._filterLogic.bind(t);
126
128
  t._updateAllColumnIcons = t._updateAllColumnIcons.bind(t);
@@ -219,6 +221,11 @@ RowFilteringPlugin.prototype._rowTransform = null;
219
221
  */
220
222
 
221
223
  RowFilteringPlugin.prototype._filterDialog = null;
224
+ /** @type {boolean}
225
+ * @private
226
+ */
227
+
228
+ RowFilteringPlugin.prototype._dialogInitialized = false;
222
229
  /** @type {RowFilteringPlugin~FilterDialogOptions}
223
230
  * @private
224
231
  */
@@ -229,6 +236,12 @@ RowFilteringPlugin.prototype._dialogOptions = null;
229
236
  */
230
237
 
231
238
  RowFilteringPlugin._filterBuilder = null;
239
+ /** @type {string}
240
+ * @private
241
+ */
242
+
243
+ RowFilteringPlugin._dialogTagName; // intentionally left undefined
244
+
232
245
  /** Array of DataView objects
233
246
  * @type {!Array.<Object>}
234
247
  * @private
@@ -292,8 +305,50 @@ RowFilteringPlugin.prototype.unload = function (host) {
292
305
  host.unlisten("columnAdded", this._onColumnAdded);
293
306
  host.unlisten("columnRemoved", this._onColumnRemoved);
294
307
 
308
+ if (!this._hosts.length) {
309
+ if (this._filterDialog) {
310
+ this._filterDialog.hide(); // Remove the dialog from document
311
+
312
+
313
+ this._filterDialog = null;
314
+ this._dialogInitialized = false;
315
+ }
316
+ }
317
+
295
318
  this._dispose();
296
319
  };
320
+ /**
321
+ * @protected
322
+ * @ignore
323
+ */
324
+
325
+
326
+ RowFilteringPlugin.prototype._afterInit = function () {
327
+ if (!this._filterDialog) {
328
+ this._filterDialog = RowFilteringPlugin._createDialog();
329
+ this._dialogInitialized = false;
330
+
331
+ if (this._filterDialog) {
332
+ this._filterDialog.style.display = "none";
333
+ document.body.appendChild(this._filterDialog);
334
+ setTimeout(this._onPreLoadedDialog, 10);
335
+ }
336
+ }
337
+ };
338
+ /** @private
339
+ */
340
+
341
+
342
+ RowFilteringPlugin.prototype._onPreLoadedDialog = function () {
343
+ if (this._filterDialog) {
344
+ this._filterDialog.style.display = "";
345
+ var pn = this._filterDialog.parentNode;
346
+
347
+ if (pn) {
348
+ pn.removeChild(this._filterDialog);
349
+ }
350
+ }
351
+ };
297
352
  /** @public
298
353
  * @param {Object=} options
299
354
  */
@@ -881,10 +936,10 @@ RowFilteringPlugin.prototype._removeColumnFilters = function (colIndex) {
881
936
  this._setColumnFilterOption(colIndex, null); // filterChanged fired
882
937
 
883
938
 
884
- var inputExt = this._getPlugin('FilterInputPlugin'); // TODO: Use the event instead
939
+ var inputExt = this._getPlugin("FilterInputPlugin"); // TODO: Use the event instead
885
940
 
886
941
 
887
- inputExt && inputExt.updateUI(colIndex, '');
942
+ inputExt && inputExt.updateUI(colIndex, "");
888
943
 
889
944
  this._requestFilterRefresh();
890
945
  }
@@ -909,7 +964,7 @@ RowFilteringPlugin.prototype.removeAllColumnFilters = function () {
909
964
  if (this._columnFilters.length) {
910
965
  this._columnFilters.length = 0;
911
966
 
912
- var inputExt = this._getPlugin('FilterInputPlugin');
967
+ var inputExt = this._getPlugin("FilterInputPlugin");
913
968
 
914
969
  var colCount = this._getColumnCount();
915
970
 
@@ -917,7 +972,7 @@ RowFilteringPlugin.prototype.removeAllColumnFilters = function () {
917
972
  this._setColumnFilterOption(i, null); // filterChanged fired
918
973
 
919
974
 
920
- inputExt && inputExt.updateUI(i, ''); // TODO: Use the event instead
975
+ inputExt && inputExt.updateUI(i, ""); // TODO: Use the event instead
921
976
  }
922
977
 
923
978
  this._updateAllColumnIcons();
@@ -1598,6 +1653,29 @@ RowFilteringPlugin.prototype.getUniqueValues = function (field, formatter, fmtFi
1598
1653
 
1599
1654
  return uniqueValues;
1600
1655
  };
1656
+ /** @private
1657
+ * @function
1658
+ * @returns {Element}
1659
+ */
1660
+
1661
+
1662
+ RowFilteringPlugin._createDialog = function () {
1663
+ var tag = RowFilteringPlugin._dialogTagName;
1664
+
1665
+ if (tag == null) {
1666
+ var dialogVersion = ElfUtil.hasComponent("filter-dialog"); // WARNING: this cannot detect version 2 or less
1667
+
1668
+ if (dialogVersion) {
1669
+ RowFilteringPlugin._dialogTagName = dialogVersion >= 3 ? "filter-dialog" : "tr-grid-filter-dialog";
1670
+ } else {
1671
+ RowFilteringPlugin._dialogTagName = "";
1672
+ }
1673
+
1674
+ tag = RowFilteringPlugin._dialogTagName;
1675
+ }
1676
+
1677
+ return tag ? document.createElement(tag) : null;
1678
+ };
1601
1679
  /** @public
1602
1680
  * @param {number} colIndex
1603
1681
  * @param {RowFilteringPlugin~FilterDialogOptions=} runtimeDialogOptions
@@ -1607,28 +1685,27 @@ RowFilteringPlugin.prototype.getUniqueValues = function (field, formatter, fmtFi
1607
1685
  RowFilteringPlugin.prototype.openDialog = function (colIndex, runtimeDialogOptions) {
1608
1686
  var stp = this._getPlugin("SortableTitlePlugin");
1609
1687
 
1610
- if (!this._filterDialog) {
1611
- // Check if dialog is filter v1 or v3
1612
- var dialogVersion = ElfUtil.hasComponent('filter-dialog');
1613
-
1614
- if (!dialogVersion) {
1615
- console.log("Filter dialog doesn't exist");
1616
- return;
1688
+ if (!this._filterDialog || !this._dialogInitialized) {
1689
+ if (!this._filterDialog) {
1690
+ this._filterDialog = RowFilteringPlugin._createDialog();
1617
1691
  }
1618
1692
 
1619
- if (dialogVersion >= 3) {
1620
- this._filterDialog = document.createElement("filter-dialog");
1621
- } else if (dialogVersion < 2) {
1622
- this._filterDialog = document.createElement("tr-grid-filter-dialog");
1623
- }
1693
+ if (this._filterDialog) {
1694
+ this._dialogInitialized = true;
1624
1695
 
1625
- if (!stp) {
1626
- this._filterDialog.hideSortUI();
1627
- } else {
1628
- this._filterDialog.addEventListener("sortChanged", this._onDialogSortChanged.bind(this));
1696
+ if (!stp) {
1697
+ this._filterDialog.hideSortUI();
1698
+ } else {
1699
+ this._filterDialog.addEventListener("sortChanged", this._onDialogSortChanged.bind(this));
1700
+ }
1701
+
1702
+ this._filterDialog.addEventListener("filterChanged", this._onDialogFilterChanged.bind(this));
1629
1703
  }
1704
+ }
1630
1705
 
1631
- this._filterDialog.addEventListener("filterChanged", this._onDialogFilterChanged.bind(this));
1706
+ if (!this._filterDialog) {
1707
+ console.log("Filter dialog does not exist");
1708
+ return;
1632
1709
  }
1633
1710
 
1634
1711
  if (this._filterDialog.isShown) {
@@ -1920,12 +1997,16 @@ RowFilteringPlugin.prototype._onDialogFilterChanged = function (e) {
1920
1997
 
1921
1998
  for (var m = 0; m < condCount; ++m) {
1922
1999
  var cond = conditions[m];
1923
- var inputVal = cond[1]; // inputVal is hardcoded at index 1
2000
+ var opDef = FilterOperators[cond[0]]; // string type has no need for formatted data or raw data. What is in display is the most important
1924
2001
 
1925
- var rawValues = uniqueValues[inputVal];
2002
+ if (opDef && opDef.type !== "string") {
2003
+ var inputVal = cond[1]; // inputVal is hardcoded at index 1
1926
2004
 
1927
- if (rawValues) {
1928
- cond[1] = rawValues[0];
2005
+ var rawValues = uniqueValues[inputVal];
2006
+
2007
+ if (rawValues != null) {
2008
+ cond[1] = rawValues[0];
2009
+ }
1929
2010
  }
1930
2011
  }
1931
2012
 
@@ -399,7 +399,6 @@ RowGroupingPlugin.prototype.initialize = function (host, options) {
399
399
  this._hosts.push(host);
400
400
 
401
401
  ExpanderIcon.loadExpanderStyles();
402
- ExpanderIcon.injectExpanderStyles(host.getElement());
403
402
 
404
403
  host.unloadPlugin("CollapsibleHeaderPlugin");
405
404
  host.listen("columnMoved", this._onColumnIndexChanged);
@@ -1,5 +1,4 @@
1
1
  import { Ext } from "./Ext.js";
2
- import { injectCss, prettifyCss } from "./Util.js";
3
2
  import { ElementWrapper } from "./ElementWrapper.js";
4
3
  import { ElfUtil } from "./ElfUtil.js";
5
4
 
@@ -9,8 +8,6 @@ declare class ExpanderIcon extends ElementWrapper {
9
8
 
10
9
  public static loadExpanderStyles(): void;
11
10
 
12
- public static injectExpanderStyles(elem: Element|null): void;
13
-
14
11
  public expand(): void;
15
12
 
16
13
  public collapse(): void;
@@ -1,9 +1,7 @@
1
1
  import { Ext } from "./Ext.js";
2
- import { injectCss, prettifyCss } from "./Util.js";
3
2
  import { ElementWrapper } from "./ElementWrapper.js";
4
3
  import { ElfUtil } from "./ElfUtil.js";
5
4
 
6
-
7
5
  /**
8
6
  * @constructor
9
7
  * @extends {ElementWrapper}
@@ -33,44 +31,6 @@ Ext.inherits(ExpanderIcon, ElementWrapper);
33
31
  */
34
32
  ExpanderIcon._iconName = ""; // static variable
35
33
 
36
- /** @description .expander is the actual arrow <br>
37
- * .folder is an element hosting .expander arrow
38
- * @type {string}
39
- * @private
40
- */
41
- ExpanderIcon._styles = prettifyCss([
42
- ".tr-grid.expander-disabled .expander", [
43
- "cursor: default;"
44
- ],
45
- ".tr-grid.folder-disabled .cell.folder", [
46
- "cursor: default;"
47
- ],
48
- ".tr-grid .expander", [
49
- "cursor: pointer;",
50
- "display: inline-block;" // For transformation
51
- ],
52
- ".tr-grid .folder .expander:before", [
53
- "content: none !important;" // Prevent deprecated styling
54
- ],
55
- ".tr-grid .fallback-arrow", [
56
- "vertical-align: middle;",
57
- "font-size: 7px;",
58
- "line-height: 1;",
59
- "display: inline-block;", // For transformation
60
- "transform: scaleX(1.5);",
61
- "font-family: Arial;"
62
- ],
63
- ".tr-grid .expander.closed", [
64
- "transform: translate(0px, -1px) rotate(-90deg);"
65
- ],
66
- ".tr-grid .cell.closed .expander", [
67
- "transform: translate(0px, -1px) rotate(-90deg);"
68
- ],
69
- ".tr-grid .tr-lg .cell.folder.content-header", [ // Used for header row in contentAsHeader mode, espectially with solar theme
70
- "background-color: inherit;"
71
- ]
72
- ]);
73
-
74
34
  /** @private
75
35
  * @param {Event} e
76
36
  */
@@ -98,15 +58,6 @@ ExpanderIcon.loadExpanderStyles = function() {
98
58
  }
99
59
  }
100
60
  };
101
- /** @public
102
- * @param {Element} elem
103
- */
104
- ExpanderIcon.injectExpanderStyles = function(elem) {
105
- if(elem && elem.nodeType === 1 && !elem._expanderStyles) {
106
- elem._expanderStyles = true; // Prevent loading the same style twice
107
- injectCss(ExpanderIcon._styles, elem);
108
- }
109
- };
110
61
 
111
62
  /** @private
112
63
  * @param {Object} cell
@@ -432,8 +432,6 @@ FilterBuilder.prototype.buildFilter = function() {
432
432
  }
433
433
 
434
434
  // Prepare user value to be in ready to use form to boost performance
435
- var fieldName = this._fieldName;
436
- var fmtFieldName = this._formattedFieldName;
437
435
  var formatter = this._formatter;
438
436
  var conds = this._conditions.slice();
439
437
  for(var i = 0; i < condCount; ++i) {
@@ -456,12 +454,7 @@ FilterBuilder.prototype.buildFilter = function() {
456
454
  cond.useUTCTime != null ? cond.useUTCTime : this._useUTCTime
457
455
  );
458
456
  } else if(opType === "string") {
459
- if(formatter) { // WARNING: This is not in sync when _formattedDataAccessor exists
460
- var dummyRow = {};
461
- dummyRow[fieldName] = value;
462
- dummyRow[fmtFieldName] = value;
463
- value = formatter(dummyRow); // WARNING: dummyRow may not provide enough data for formatting correctly
464
- }
457
+ // There is no need to format user input in the user condition
465
458
  value = convertToString(value);
466
459
  if(!opDef.caseSensitive) {
467
460
  value = value.toLowerCase();
@@ -120,6 +120,36 @@ RowPainter._styles = prettifyCss([
120
120
  "--grid-expanded-tag-bg-color: #4D4D4D;",
121
121
  "--grid-row-menu-icon-color: #CCCCCC;",
122
122
  "--grid-row-menu-icon-hover-color: #FFFFFF;"
123
+ ],
124
+ ".tr-grid.expander-disabled .expander", [
125
+ "cursor: default;"
126
+ ],
127
+ ".tr-grid.folder-disabled .cell.folder", [
128
+ "cursor: default;"
129
+ ],
130
+ ".tr-grid .expander", [
131
+ "cursor: pointer;",
132
+ "display: inline-block;" // For transformation
133
+ ],
134
+ ".tr-grid .folder .expander:before", [
135
+ "content: none !important;" // Prevent deprecated styling
136
+ ],
137
+ ".tr-grid .fallback-arrow", [
138
+ "vertical-align: middle;",
139
+ "font-size: 7px;",
140
+ "line-height: 1;",
141
+ "display: inline-block;", // For transformation
142
+ "transform: scaleX(1.5);",
143
+ "font-family: Arial;"
144
+ ],
145
+ ".tr-grid .expander.closed", [
146
+ "transform: translate(0px, -1px) rotate(-90deg);"
147
+ ],
148
+ ".tr-grid .cell.closed .expander", [
149
+ "transform: translate(0px, -1px) rotate(-90deg);"
150
+ ],
151
+ ".tr-grid .tr-lg .cell.folder.content-header", [ // Used for header row in contentAsHeader mode, espectially with solar theme
152
+ "background-color: inherit;"
123
153
  ]
124
154
  ]);
125
155
 
@@ -1,7 +1,8 @@
1
- import {Ext} from '../../tr-grid-util/es6/Ext.js';
2
- import {GridPlugin} from '../../tr-grid-util/es6/GridPlugin.js';
3
- import {FilterBuilder} from '../../tr-grid-util/es6/FilterBuilder.js';
4
- import {ElfUtil} from '../../tr-grid-util/es6/ElfUtil.js';
1
+ import {Ext} from "../../tr-grid-util/es6/Ext.js";
2
+ import {GridPlugin} from "../../tr-grid-util/es6/GridPlugin.js";
3
+ import {FilterBuilder} from "../../tr-grid-util/es6/FilterBuilder.js";
4
+ import {FilterOperators} from "../../tr-grid-util/es6/FilterOperators.js";
5
+ import {ElfUtil} from "../../tr-grid-util/es6/ElfUtil.js";
5
6
  import { injectCss, prettifyCss } from "../../tr-grid-util/es6/Util.js";
6
7
 
7
8
  declare namespace RowFilteringPlugin {
@@ -4,6 +4,7 @@ import { ExpanderIcon } from "../../tr-grid-util/es6/ExpanderIcon.js";
4
4
  import { ElfUtil } from "../../tr-grid-util/es6/ElfUtil.js";
5
5
  import { RowPainter } from "../../tr-grid-util/es6/RowPainter.js";
6
6
  import { injectCss, prettifyCss } from "../../tr-grid-util/es6/Util.js";
7
+ import { Conflator } from "../../tr-grid-util/es6/Conflator.js";
7
8
 
8
9
  declare namespace RowSegmentingPlugin {
9
10
 
@@ -33,6 +34,8 @@ declare class RowSegmentingPlugin extends GridPlugin {
33
34
 
34
35
  public initialize(host: any, options?: any): void;
35
36
 
37
+ public requestSeparatorRefresh(): void;
38
+
36
39
  public unload(host?: any): void;
37
40
 
38
41
  public config(options?: any): void;
package/lib/versions.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
- "tr-grid-util": "1.3.128",
2
+ "tr-grid-util": "1.3.130",
3
3
  "tr-grid-printer": "1.0.16",
4
4
  "@grid/column-dragging": "1.0.14",
5
- "@grid/row-segmenting": "1.0.24",
5
+ "@grid/row-segmenting": "1.0.28",
6
6
  "@grid/statistics-row": "1.0.15",
7
7
  "@grid/zoom": "1.0.11",
8
8
  "tr-grid-auto-tooltip": "1.1.6",
@@ -19,13 +19,13 @@
19
19
  "tr-grid-contextmenu": "1.0.39",
20
20
  "tr-grid-filter-input": "0.9.33",
21
21
  "tr-grid-heat-map": "1.0.29",
22
- "tr-grid-in-cell-editing": "1.0.79",
22
+ "tr-grid-in-cell-editing": "1.0.80",
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.5",
26
26
  "tr-grid-row-dragging": "1.0.29",
27
- "tr-grid-row-filtering": "1.0.57",
28
- "tr-grid-row-grouping": "1.0.81",
27
+ "tr-grid-row-filtering": "1.0.59",
28
+ "tr-grid-row-grouping": "1.0.82",
29
29
  "tr-grid-row-selection": "1.0.23",
30
30
  "tr-grid-rowcoloring": "1.0.24",
31
31
  "tr-grid-textformatting": "1.0.46",
package/package.json CHANGED
@@ -66,5 +66,5 @@
66
66
  "publishConfig": {
67
67
  "access": "public"
68
68
  },
69
- "version": "6.0.62"
69
+ "version": "6.0.64"
70
70
  }