@refinitiv-ui/efx-grid 6.0.62 → 6.0.64

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