@refinitiv-ui/efx-grid 6.0.39 → 6.0.41

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 (50) hide show
  1. package/lib/column-selection-dialog/lib/column-selection-dialog.d.ts +2 -1
  2. package/lib/column-selection-dialog/lib/column-selection-dialog.js +23 -7
  3. package/lib/core/dist/core.js +39 -28
  4. package/lib/core/dist/core.min.js +1 -1
  5. package/lib/core/es6/grid/Core.js +34 -26
  6. package/lib/core/es6/grid/plugins/SortableTitlePlugin.js +5 -2
  7. package/lib/grid/index.js +1 -1
  8. package/lib/row-segmenting/es6/RowSegmenting.js +4 -4
  9. package/lib/rt-grid/dist/rt-grid.js +2191 -1780
  10. package/lib/rt-grid/dist/rt-grid.min.js +1 -1
  11. package/lib/rt-grid/es6/ColumnDefinition.d.ts +1 -0
  12. package/lib/rt-grid/es6/ColumnDefinition.js +7 -8
  13. package/lib/rt-grid/es6/Grid.d.ts +2 -0
  14. package/lib/rt-grid/es6/Grid.js +91 -30
  15. package/lib/rt-grid/es6/RowDefinition.d.ts +4 -5
  16. package/lib/rt-grid/es6/RowDefinition.js +103 -52
  17. package/lib/tr-grid-column-grouping/es6/ColumnGrouping.js +26 -40
  18. package/lib/tr-grid-contextmenu/es6/ContextMenu.d.ts +27 -27
  19. package/lib/tr-grid-contextmenu/es6/ContextMenu.js +97 -93
  20. package/lib/tr-grid-contextmenu/es6/MenuEventAPI.d.ts +3 -3
  21. package/lib/tr-grid-contextmenu/es6/MenuItem.d.ts +2 -2
  22. package/lib/tr-grid-contextmenu/es6/PopupMenu.d.ts +5 -5
  23. package/lib/tr-grid-in-cell-editing/es6/InCellEditing.js +30 -12
  24. package/lib/tr-grid-row-dragging/es6/RowDragging.js +2 -1
  25. package/lib/tr-grid-rowcoloring/es6/RowColoring.js +50 -18
  26. package/lib/tr-grid-util/es6/CellPainter.d.ts +2 -1
  27. package/lib/tr-grid-util/es6/CellPainter.js +6 -4
  28. package/lib/tr-grid-util/es6/ExpressionParser.d.ts +10 -0
  29. package/lib/tr-grid-util/es6/ExpressionParser.js +366 -0
  30. package/lib/tr-grid-util/es6/FilterBuilder.d.ts +10 -6
  31. package/lib/tr-grid-util/es6/FilterBuilder.js +264 -234
  32. package/lib/tr-grid-util/es6/FilterOperators.d.ts +3 -1
  33. package/lib/tr-grid-util/es6/FilterOperators.js +51 -2
  34. package/lib/tr-grid-util/es6/Util.d.ts +0 -3
  35. package/lib/tr-grid-util/es6/Util.js +0 -53
  36. package/lib/tr-grid-util/es6/formula/Formula.js +3 -3
  37. package/lib/types/es6/ColumnDragging.d.ts +51 -0
  38. package/lib/types/es6/ContextMenu.d.ts +27 -27
  39. package/lib/types/es6/Core/grid/plugins/SortableTitlePlugin.d.ts +3 -0
  40. package/lib/types/es6/ExtensionOptions.d.ts +2 -0
  41. package/lib/types/es6/Extensions.d.ts +3 -1
  42. package/lib/types/es6/MenuEventAPI.d.ts +3 -3
  43. package/lib/types/es6/MenuItem.d.ts +2 -2
  44. package/lib/types/es6/PopupMenu.d.ts +5 -5
  45. package/lib/types/es6/RealtimeGrid/ColumnDefinition.d.ts +1 -0
  46. package/lib/types/es6/RealtimeGrid/Grid.d.ts +2 -0
  47. package/lib/types/es6/RealtimeGrid/RowDefinition.d.ts +4 -5
  48. package/lib/types/es6/index.d.ts +1 -0
  49. package/lib/versions.json +10 -10
  50. package/package.json +1 -1
@@ -8,39 +8,39 @@ import CellPainter from "../../tr-grid-util/es6/CellPainter.js";
8
8
 
9
9
  declare namespace ContextMenuPlugin {
10
10
 
11
- type MenuItemEventCallback = (e: ContextMenuPlugin.MenuItemEvent) => void;
11
+ type MenuItemEventCallback = (e: ContextMenuPlugin.MenuItemEvent|null) => void;
12
12
 
13
- type OnMenuEventCallback = (e: ContextMenuPlugin.OnMenuEvent) => void;
13
+ type OnMenuEventCallback = (e: ContextMenuPlugin.OnMenuEvent|null) => void;
14
14
 
15
- type Context = "header" | "content" | "footer" | "filterRow";
15
+ type Context = "header" | "content" | "footer" | "filterRow"|null;
16
16
 
17
17
  type Options = {
18
- items: { [key: string]: ContextMenuPlugin.MenuItem },
19
- onMenu?: ContextMenuPlugin.OnMenuEventCallback,
20
- contextmenu?: ((...params: any[]) => any)
18
+ items: { [key: string]: ContextMenuPlugin.MenuItem }|null,
19
+ onMenu?: ContextMenuPlugin.OnMenuEventCallback|null,
20
+ contextmenu?: ((...params: any[]) => any)|null
21
21
  };
22
22
 
23
23
  type MenuItem = {
24
- text?: string,
25
- value?: (string|number),
26
- isDisabled?: boolean,
27
- isVisible?: boolean,
28
- isSeparator?: boolean,
29
- items?: (ContextMenuPlugin.MenuItem)[],
30
- renderer?: ((...params: any[]) => any),
31
- callback?: ContextMenuPlugin.MenuItemEventCallback
24
+ text?: string|null,
25
+ value?: (string|number)|null,
26
+ isDisabled?: boolean|null,
27
+ isVisible?: boolean|null,
28
+ isSeparator?: boolean|null,
29
+ items?: (ContextMenuPlugin.MenuItem)[]|null,
30
+ renderer?: ((...params: any[]) => any)|null,
31
+ callback?: ContextMenuPlugin.MenuItemEventCallback|null
32
32
  };
33
33
 
34
34
  type MenuItemEvent = {
35
35
  altKey: boolean,
36
36
  cell: any,
37
37
  colIndex: number,
38
- columnDef: object,
39
- context: ContextMenuPlugin.Context,
38
+ columnDef: object|null,
39
+ context: ContextMenuPlugin.Context|null,
40
40
  ctrlKey: boolean,
41
- item: ContextMenuPlugin.MenuItem,
42
- items: { [key: string]: ContextMenuPlugin.MenuItem },
43
- menu: MenuEventAPI,
41
+ item: ContextMenuPlugin.MenuItem|null,
42
+ items: { [key: string]: ContextMenuPlugin.MenuItem }|null,
43
+ menu: MenuEventAPI|null,
44
44
  rowIndex: number,
45
45
  section: any,
46
46
  shiftKey: boolean
@@ -49,21 +49,21 @@ declare namespace ContextMenuPlugin {
49
49
  type OnMenuEvent = {
50
50
  cell: any,
51
51
  colIndex: number,
52
- columnDef: object,
53
- context: ContextMenuPlugin.Context,
54
- items: object,
55
- menu: MenuEventAPI,
52
+ columnDef: object|null,
53
+ context: ContextMenuPlugin.Context|null,
54
+ items: object|null,
55
+ menu: MenuEventAPI|null,
56
56
  rowIndex: number,
57
57
  section: any,
58
- selectedColumns: (number)[],
59
- selectedRows: (number)[]
58
+ selectedColumns: (number)[]|null,
59
+ selectedRows: (number)[]|null
60
60
  };
61
61
 
62
62
  }
63
63
 
64
64
  declare class ContextMenuPlugin extends GridPlugin {
65
65
 
66
- constructor(options?: (ContextMenuPlugin.Options|ContextMenuPlugin.OnMenuEvent));
66
+ constructor(options?: (ContextMenuPlugin.Options|ContextMenuPlugin.OnMenuEvent)|null);
67
67
 
68
68
  public getName(): string;
69
69
 
@@ -71,7 +71,7 @@ declare class ContextMenuPlugin extends GridPlugin {
71
71
 
72
72
  public unload(host: any): void;
73
73
 
74
- public config(options?: ContextMenuPlugin.Options): void;
74
+ public config(options?: ContextMenuPlugin.Options|null): void;
75
75
 
76
76
  public getConfigObject(gridOptions?: any): any;
77
77
 
@@ -154,11 +154,13 @@ ContextMenuPlugin.prototype.initialize = function (host, options) {
154
154
 
155
155
  t.config(options);
156
156
 
157
- if(ContextMenuPlugin._stylePromise) {
157
+ if(ContextMenuPlugin._styles) { // Theme has been loaded
158
158
  ContextMenuPlugin._applyThemeColor(host);
159
- } else {
160
- ContextMenuPlugin._stylePromise = ElfUtil.getThemeColors();
161
- ContextMenuPlugin._stylePromise.then(this._onThemeLoaded).catch(this._onThemeLoaded);
159
+ } else { // Theme has NOT been loaded. Wait for the theme to be loaded
160
+ if(!ContextMenuPlugin._stylePromise) {
161
+ ContextMenuPlugin._stylePromise = ElfUtil.getThemeColors();
162
+ }
163
+ ContextMenuPlugin._stylePromise.then(t._onThemeLoaded).catch(t._onThemeLoaded);
162
164
  }
163
165
  };
164
166
 
@@ -357,96 +359,98 @@ ContextMenuPlugin.prototype._onItemClicked = function (e) {
357
359
  /** @private
358
360
  */
359
361
  ContextMenuPlugin.prototype._onThemeLoaded = function () {
360
- var colors = ElfUtil.getColors();
361
- var css = prettifyCss([
362
- ".tr-contextmenu", [
363
- "outline: none;",
364
- "box-sizing: border-box;",
365
- "-moz-box-sizing: border-box;",
366
- "border-style: solid;",
367
- "border-width: 1px;",
368
- "overflow: hidden;",
369
- "padding: 1px;",
370
- "margin: 0;",
371
- "user-select: none;",
372
- "list-style-type: none;",
373
- "background-color: backgroundColor;",
374
- "color: fontColor;",
375
- "border-color: borderColor;"
376
- ],
377
- ".tr-contextmenu-item", [
378
- "list-style: none;",
379
- "padding: 3px 7px;",
380
- "margin: 0;",
381
- "vertical-align: middle;",
382
- "white-space: nowrap;",
383
- "cursor: pointer;",
384
- "line-height: 20px;"
385
- ],
386
- ".tr-contextmenu-item[disabled]", [
387
- "color: disabledColor;",
388
- "cursor: default;"
389
- ],
390
- ".tr-contextmenu-item", [
391
- "padding-right: 20px;"
392
- ],
393
- ".tr-contextmenu-item:hover:not([disabled])", [
394
- "background-color: hoveredColor;"
395
- ],
396
- ".tr-contextmenu-popup", [
397
- "box-shadow: 0 0 10px rgba(0,0,0,0.5);",
398
- "z-index: 10;"
399
- ],
400
- ".tr-contextmenu-item.has-child", [
401
- "position: relative;"
402
- ],
403
- ".tr-contextmenu-item.has-child:after", [
404
- "box-sizing: border-box;",
405
- "-moz-box-sizing: border-box;",
406
- "display: inline-block;",
407
- "width: 7px;",
408
- "height: 7px;",
409
- "border-style: solid;",
410
- "border-width: 1px;",
411
- "content: \"\";",
412
- "-webkit-transform: rotate(45deg);",
413
- "transform: rotate(45deg);",
414
- "border-left-width: 0;",
415
- "border-bottom-width: 0;",
416
- "position: absolute;",
417
- "right: 8px;",
418
- "top: -webkit-calc(50% - 4px);",
419
- "top: -moz-calc(50% - 4px);",
420
- "top: calc(50% - 4px);",
421
- "border-color: fontColor;"
422
- ],
423
- ".tr-contextmenu-item[data-type=\"separator\"]", [
424
- "padding: 0;",
425
- "border: none;",
426
- "border-bottom-style: solid;",
427
- "border-bottom-width: 1px;",
428
- "border-bottom-color: disabledColor;"
429
- ]
430
- ]);
431
-
432
- var hex = CellPainter.rgb2Hex(colors.tableBg);
433
- var triplet = CellPainter.hex2Num(hex);
434
- var bw = CellPainter.blackAndWhite(triplet);
435
- var blendRatio;
436
- if (bw === "#000000") { // Light theme
437
- blendRatio = 0.1;
438
- css = css.replace(/disabledColor/g, "lightgrey");
439
- } else { // Dark theme
440
- blendRatio = 0.2;
441
- css = css.replace(/disabledColor/g, "gray");
442
- }
443
- var hoverd = CellPainter.num2Hex(CellPainter.blendColor(hex, bw, blendRatio));
444
- css = css.replace(/hoveredColor/g, hoverd);
445
- css = css.replace(/backgroundColor/g, colors.tableBg);
446
- css = css.replace(/fontColor/g, colors.tableText);
447
- css = css.replace(/borderColor/g, colors.tableBorder);
362
+ if(!ContextMenuPlugin._styles) { // Theme can be loaded only once
363
+ var colors = ElfUtil.getColors();
364
+ var css = prettifyCss([
365
+ ".tr-contextmenu", [
366
+ "outline: none;",
367
+ "box-sizing: border-box;",
368
+ "-moz-box-sizing: border-box;",
369
+ "border-style: solid;",
370
+ "border-width: 1px;",
371
+ "overflow: hidden;",
372
+ "padding: 1px;",
373
+ "margin: 0;",
374
+ "user-select: none;",
375
+ "list-style-type: none;",
376
+ "background-color: backgroundColor;",
377
+ "color: fontColor;",
378
+ "border-color: borderColor;"
379
+ ],
380
+ ".tr-contextmenu-item", [
381
+ "list-style: none;",
382
+ "padding: 3px 7px;",
383
+ "margin: 0;",
384
+ "vertical-align: middle;",
385
+ "white-space: nowrap;",
386
+ "cursor: pointer;",
387
+ "line-height: 20px;"
388
+ ],
389
+ ".tr-contextmenu-item[disabled]", [
390
+ "color: disabledColor;",
391
+ "cursor: default;"
392
+ ],
393
+ ".tr-contextmenu-item", [
394
+ "padding-right: 20px;"
395
+ ],
396
+ ".tr-contextmenu-item:hover:not([disabled])", [
397
+ "background-color: hoveredColor;"
398
+ ],
399
+ ".tr-contextmenu-popup", [
400
+ "box-shadow: 0 0 10px rgba(0,0,0,0.5);",
401
+ "z-index: 10;"
402
+ ],
403
+ ".tr-contextmenu-item.has-child", [
404
+ "position: relative;"
405
+ ],
406
+ ".tr-contextmenu-item.has-child:after", [
407
+ "box-sizing: border-box;",
408
+ "-moz-box-sizing: border-box;",
409
+ "display: inline-block;",
410
+ "width: 7px;",
411
+ "height: 7px;",
412
+ "border-style: solid;",
413
+ "border-width: 1px;",
414
+ "content: \"\";",
415
+ "-webkit-transform: rotate(45deg);",
416
+ "transform: rotate(45deg);",
417
+ "border-left-width: 0;",
418
+ "border-bottom-width: 0;",
419
+ "position: absolute;",
420
+ "right: 8px;",
421
+ "top: -webkit-calc(50% - 4px);",
422
+ "top: -moz-calc(50% - 4px);",
423
+ "top: calc(50% - 4px);",
424
+ "border-color: fontColor;"
425
+ ],
426
+ ".tr-contextmenu-item[data-type=\"separator\"]", [
427
+ "padding: 0;",
428
+ "border: none;",
429
+ "border-bottom-style: solid;",
430
+ "border-bottom-width: 1px;",
431
+ "border-bottom-color: disabledColor;"
432
+ ]
433
+ ]);
434
+
435
+ var hex = CellPainter.rgb2Hex(colors.tableBg);
436
+ var triplet = CellPainter.hex2Num(hex);
437
+ var bw = CellPainter.blackAndWhite(triplet);
438
+ var blendRatio;
439
+ if (bw === "#000000") { // Light theme
440
+ blendRatio = 0.1;
441
+ css = css.replace(/disabledColor/g, "lightgrey");
442
+ } else { // Dark theme
443
+ blendRatio = 0.2;
444
+ css = css.replace(/disabledColor/g, "gray");
445
+ }
446
+ var hoverd = CellPainter.num2Hex(CellPainter.blendColor(hex, bw, blendRatio));
447
+ css = css.replace(/hoveredColor/g, hoverd);
448
+ css = css.replace(/backgroundColor/g, colors.tableBg);
449
+ css = css.replace(/fontColor/g, colors.tableText);
450
+ css = css.replace(/borderColor/g, colors.tableBorder);
448
451
 
449
- ContextMenuPlugin._styles = css;
452
+ ContextMenuPlugin._styles = css;
453
+ }
450
454
 
451
455
  for(var i = this._hosts.length; --i >= 0;) {
452
456
  ContextMenuPlugin._applyThemeColor(this._hosts[i]);
@@ -2,13 +2,13 @@
2
2
 
3
3
  declare class MenuEventAPI {
4
4
 
5
- constructor(menuModel: any, columns: any[], columnGroups: any[], legacyColumnGroups: any[]);
5
+ constructor(menuModel: any, columns: any[]|null, columnGroups: any[]|null, legacyColumnGroups: any[]|null);
6
6
 
7
7
  public clear(): void;
8
8
 
9
- public addItem(item: (string)[] | any | string): void;
9
+ public addItem(item: (string)[] | any | string|null): void;
10
10
 
11
- public addItems(item: (string)[] | any | string): void;
11
+ public addItems(item: (string)[] | any | string|null): void;
12
12
 
13
13
  public addSeparator(): void;
14
14
 
@@ -19,11 +19,11 @@ declare class MenuItem extends EventDispatcher {
19
19
 
20
20
  public getValue(): any;
21
21
 
22
- public setSelectable(selectable?: boolean): void;
22
+ public setSelectable(selectable?: boolean|null): void;
23
23
 
24
24
  public isSelectable(): boolean;
25
25
 
26
- public setItems(items: any[]): void;
26
+ public setItems(items: any[]|null): void;
27
27
 
28
28
  public getItems(): any[]|null;
29
29
 
@@ -5,7 +5,7 @@ import Ext from "../../tr-grid-util/es6/Ext.js";
5
5
 
6
6
  declare class PopupMenu extends EventDispatcher {
7
7
 
8
- constructor(parentElement: Element);
8
+ constructor(parentElement: Element|null);
9
9
 
10
10
  public isDisposed(): boolean;
11
11
 
@@ -15,13 +15,13 @@ declare class PopupMenu extends EventDispatcher {
15
15
 
16
16
  public hide(): void;
17
17
 
18
- public attachTo(elem: Element, positioning: Popup.Positioning): void;
18
+ public attachTo(elem: Element|null, positioning: Popup.Positioning|null): void;
19
19
 
20
- public setPosition(positioning: Popup.Positioning, x: number, y: number): void;
20
+ public setPosition(positioning: Popup.Positioning|null, x: number, y: number): void;
21
21
 
22
- public addPopupChild(element: Element, popupMenu: PopupMenu): void;
22
+ public addPopupChild(element: Element|null, popupMenu: PopupMenu|null): void;
23
23
 
24
- public setMenu(menuItems: (any)[]): void;
24
+ public setMenu(menuItems: (any)[]|null): void;
25
25
 
26
26
  }
27
27
 
@@ -1590,20 +1590,38 @@ InCellEditingPlugin.prototype._commitText = function (committed, suggestionDetai
1590
1590
  var sectionType = sectionSettings.getType();
1591
1591
  // case edit content
1592
1592
  if ("content" === sectionType) {
1593
- var dv = sectionSettings.getDataSource();
1594
- if (dv) {
1595
- t._setData(dv, arg["rowIndex"], arg["field"], enteredValue);
1596
- if (t._prevContent && t._prevContent.classList.contains("text")) {
1597
- // Bind data only if previous content is a build in text
1598
- t._activeCell.setContent(enteredValue);
1593
+ if (this._realTimeGrid && arg["field"] === "X_RIC_NAME") {
1594
+ var ricOpt = null;
1595
+ if (suggestionDetail) {
1596
+ var suggestionVal = suggestionDetail["value"];
1597
+ if (suggestionVal["p"]) {
1598
+ var permId = suggestionVal["p"]["PermId"];
1599
+ if (permId) {
1600
+ ricOpt = {
1601
+ permId: permId
1602
+ };
1603
+ }
1604
+ }
1605
+ }
1606
+ this._realTimeGrid.setRic(arg["rowId"], enteredValue, ricOpt);
1607
+ } else {
1608
+ var dv = sectionSettings.getDataSource();
1609
+ if (dv) {
1610
+ if (this._realTimeGrid) {
1611
+ t._setStaticData(dv, arg["rowIndex"], arg["field"], enteredValue);
1612
+ } else {
1613
+ t._setData(dv, arg["rowIndex"], arg["field"], enteredValue);
1614
+ }
1599
1615
  }
1600
1616
  }
1601
- }
1602
- // case edit title
1603
- else if ("title" === sectionType) {
1604
- var _grid = this._compositeGrid || this._realTimeGrid || null;
1605
- if (_grid) {
1606
- _grid.setColumnName(arg["colIndex"], enteredValue);
1617
+ if (!t._prevContent || t._prevContent.classList.contains("text")) {
1618
+ // Bind data only if previous content is a build in text
1619
+ t._activeCell.setContent(enteredValue);
1620
+ }
1621
+ } else if ("title" === sectionType) {
1622
+ var gridApi = this.getGridApi();
1623
+ if (gridApi) {
1624
+ gridApi.setColumnName(arg["colIndex"], enteredValue);
1607
1625
  }
1608
1626
  } else {
1609
1627
  t._activeCell.setContent(enteredValue);
@@ -279,7 +279,8 @@ RowDraggingPlugin.prototype._jetContentHasField = false;
279
279
  */
280
280
  RowDraggingPlugin.prototype._entryPoint = "";
281
281
 
282
- /** @private Applied theme color in row dragging and dragUI
282
+ /** Applied theme color in row dragging and dragUI
283
+ * @private
283
284
  * @param {Object} host core grid instance
284
285
  */
285
286
  var _applyStyles = function(host) {
@@ -99,7 +99,7 @@ RowColoringPlugin.prototype.initialize = function (host, options) {
99
99
  return;
100
100
  }
101
101
  this._hosts.push(host);
102
- host.listen("preSectionDataBinding", this._onSectionBinding);
102
+ host.listen("postSectionDataBinding", this._onSectionBinding);
103
103
  this.config(options);
104
104
  this._updateTimer = setTimeout(this._updateRowColor, 100); // For lazy loading
105
105
  };
@@ -111,7 +111,7 @@ RowColoringPlugin.prototype.unload = function (host) {
111
111
  if (at < 0) {
112
112
  return;
113
113
  }
114
- host.unlisten("preSectionDataBinding", this._onSectionBinding);
114
+ host.unlisten("postSectionDataBinding", this._onSectionBinding);
115
115
  this._hosts.splice(at, 1);
116
116
  if (!this._hosts.length) {
117
117
  if (this._updateTimer) {
@@ -453,7 +453,7 @@ RowColoringPlugin.prototype._updateRowColor = function (fromR, toR) {
453
453
  var cssField = this._cssField;
454
454
  var altCssField = this._altCssField;
455
455
  var rangeField = this._cssRangeField;
456
- var className, el, start, end, altCssClass, range, colorSelected;
456
+ var className, el, start, end, altCssClass, range, colorSelected, stretchedCell;
457
457
  for (r = fromR; r < toR; ++r) {
458
458
  className = altCssClass = "";
459
459
  start = end = range = null;
@@ -468,6 +468,20 @@ RowColoringPlugin.prototype._updateRowColor = function (fromR, toR) {
468
468
  }
469
469
  }
470
470
 
471
+ stretchedCell = section.getStretchedCell(null, r);
472
+ if (stretchedCell) {
473
+ el = stretchedCell.getElement();
474
+ if (el._coloringClass !== className) {
475
+ if (el._coloringClass) {
476
+ el.classList.remove(el._coloringClass);
477
+ el._coloringClass = "";
478
+ }
479
+ if (className) {
480
+ el.classList.add(className);
481
+ el._coloringClass = className;
482
+ }
483
+ }
484
+ }
471
485
  for (c = 0; c < colCount; ++c) {
472
486
  cell = section.getCell(c, r, false);
473
487
  if (!cell) {
@@ -512,23 +526,41 @@ RowColoringPlugin.prototype._updateRowColor = function (fromR, toR) {
512
526
  bgColor = rowData[this._bgField] || "";
513
527
  }
514
528
  }
529
+ stretchedCell = section.getStretchedCell(null, r);
530
+ if (stretchedCell) {
531
+ el = stretchedCell.getElement();
532
+ if (textColor || el._textColor) {
533
+ if (el._textColor !== textColor) {
534
+ stretchedCell.setStyle("color", textColor);
535
+ el._textColor = textColor;
536
+ }
537
+ }
538
+ if (bgColor || el._bgColor) {
539
+ if (el._bgColor !== bgColor) {
540
+ stretchedCell.setStyle("backgroundColor", bgColor);
541
+ el._bgColor = bgColor;
542
+ }
543
+ }
544
+ }
515
545
  for (c = 0; c < colCount; ++c) {
516
546
  cell = section.getCell(c, r, false);
517
- if (cell) {
518
- el = cell.getElement();
519
- if (el) {
520
- if (textColor || el._textColor) {
521
- if (el._textColor !== textColor) {
522
- cell.setStyle("color", textColor);
523
- el._textColor = textColor;
524
- }
525
- }
526
- if (bgColor || el._bgColor) {
527
- if (el._bgColor !== bgColor) {
528
- cell.setStyle("backgroundColor", bgColor);
529
- el._bgColor = bgColor;
530
- }
531
- }
547
+ if (!cell) {
548
+ continue;
549
+ }
550
+ el = cell.getElement();
551
+ if (!el) {
552
+ continue;
553
+ }
554
+ if (textColor || el._textColor) {
555
+ if (el._textColor !== textColor) {
556
+ cell.setStyle("color", textColor);
557
+ el._textColor = textColor;
558
+ }
559
+ }
560
+ if (bgColor || el._bgColor) {
561
+ if (el._bgColor !== bgColor) {
562
+ cell.setStyle("backgroundColor", bgColor);
563
+ el._bgColor = bgColor;
532
564
  }
533
565
  }
534
566
  }
@@ -1,6 +1,7 @@
1
1
  import { TickCodes, TickFields } from "./TickCodes.js";
2
- import { parseCondition, rgb2Hex } from "./Util.js";
2
+ import { rgb2Hex } from "./Util.js";
3
3
  import { ElfUtil } from "./ElfUtil.js";
4
+ import { ExpressionParser } from "./ExpressionParser.js";
4
5
 
5
6
  declare namespace CellPainter {
6
7
 
@@ -1,6 +1,7 @@
1
1
  import { TickCodes, TickFields } from "./TickCodes.js";
2
- import { parseCondition, rgb2Hex } from "./Util.js";
2
+ import { rgb2Hex } from "./Util.js";
3
3
  import { ElfUtil } from "./ElfUtil.js";
4
+ import { ExpressionParser } from "./ExpressionParser.js";
4
5
 
5
6
  /** @typedef {Object} CellPainter~Expression
6
7
  * @property {string=} name
@@ -131,7 +132,8 @@ CellPainter.supportedStyles = CellPainter.bgStyles.concat(CellPainter.nonBgStyle
131
132
  */
132
133
  CellPainter.themeReady = null;
133
134
 
134
- /** @public
135
+ /** Deprecated in favor of ExpressionParser
136
+ * @public
135
137
  * @function
136
138
  * @param {string|Function} expression
137
139
  * @return {Function}
@@ -139,7 +141,7 @@ CellPainter.themeReady = null;
139
141
  * var fn = CellPainter.parse("[CF_BID] >= 10 && [CF_BID] <= 100");
140
142
  * window.console.log(fn(25));
141
143
  */
142
- CellPainter.parse = parseCondition;
144
+ CellPainter.parse = ExpressionParser.parse;
143
145
 
144
146
 
145
147
  /** @public */
@@ -311,7 +313,7 @@ CellPainter.prototype.getColumnStats = function() {
311
313
  CellPainter.prototype._addCondition = function(condition) {
312
314
  var exp = condition["expression"];
313
315
  if(exp) {
314
- condition._fn = CellPainter.parse(exp["text"] || exp);
316
+ condition._fn = ExpressionParser.parse(exp["text"] || exp);
315
317
  this._conditions.push(condition);
316
318
  }
317
319
  };
@@ -0,0 +1,10 @@
1
+
2
+
3
+ declare namespace ExpressionParser {
4
+
5
+ function parse(expression: string|((...params: any[]) => any)|null): ((...params: any[]) => any)|null;
6
+
7
+ }
8
+
9
+ export default ExpressionParser;
10
+ export {ExpressionParser};