@refinitiv-ui/efx-grid 6.0.30 → 6.0.31

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 (31) hide show
  1. package/lib/core/dist/core.js +20 -2
  2. package/lib/core/dist/core.min.js +1 -1
  3. package/lib/core/es6/grid/Core.js +1 -1
  4. package/lib/core/es6/grid/components/Scrollbar.js +19 -1
  5. package/lib/filter-dialog/lib/filter-dialog.js +11 -8
  6. package/lib/filter-dialog/themes/base.less +7 -3
  7. package/lib/filter-dialog/themes/elemental/dark/es5/all-elements.js +1 -1
  8. package/lib/filter-dialog/themes/elemental/dark/filter-dialog.js +1 -1
  9. package/lib/filter-dialog/themes/elemental/light/es5/all-elements.js +1 -1
  10. package/lib/filter-dialog/themes/elemental/light/filter-dialog.js +1 -1
  11. package/lib/filter-dialog/themes/halo/dark/es5/all-elements.js +1 -1
  12. package/lib/filter-dialog/themes/halo/dark/filter-dialog.js +1 -1
  13. package/lib/filter-dialog/themes/halo/light/es5/all-elements.js +1 -1
  14. package/lib/filter-dialog/themes/halo/light/filter-dialog.js +1 -1
  15. package/lib/filter-dialog/themes/solar/charcoal/es5/all-elements.js +1 -1
  16. package/lib/filter-dialog/themes/solar/charcoal/filter-dialog.js +1 -1
  17. package/lib/filter-dialog/themes/solar/pearl/es5/all-elements.js +1 -1
  18. package/lib/filter-dialog/themes/solar/pearl/filter-dialog.js +1 -1
  19. package/lib/grid/index.js +1 -1
  20. package/lib/tr-grid-content-wrap/es6/ContentWrap.d.ts +4 -4
  21. package/lib/tr-grid-content-wrap/es6/ContentWrap.js +116 -70
  22. package/lib/tr-grid-util/es6/DragUI.d.ts +2 -0
  23. package/lib/tr-grid-util/es6/DragUI.js +39 -9
  24. package/lib/tr-grid-util/es6/Popup.d.ts +3 -1
  25. package/lib/tr-grid-util/es6/Popup.js +57 -23
  26. package/lib/types/es6/ContentWrap.d.ts +4 -4
  27. package/lib/types/es6/RealtimeGrid/ColumnDefinition.d.ts +2 -0
  28. package/lib/types/es6/RealtimeGrid/FieldDefinition.d.ts +4 -0
  29. package/lib/types/es6/RealtimeGrid/Grid.d.ts +1 -0
  30. package/lib/versions.json +3 -3
  31. package/package.json +1 -1
@@ -17,7 +17,7 @@ import { GridPlugin } from '../../tr-grid-util/es6/GridPlugin.js';
17
17
  var ContentWrapPlugin = function ContentWrapPlugin() {
18
18
  this._onColumnAdded = this._onColumnAdded.bind(this);
19
19
  this._onRecalculation = this._onRecalculation.bind(this);
20
- this._setReCalculationTimer = this._setReCalculationTimer.bind(this);
20
+ this._requestRecalculation = this._requestRecalculation.bind(this);
21
21
  this._hosts = [];
22
22
  };
23
23
 
@@ -77,10 +77,10 @@ ContentWrapPlugin.prototype.initialize = function (host, options) {
77
77
 
78
78
  this._hosts.push(host);
79
79
 
80
- window.addEventListener("load", this._setReCalculationTimer); // Since CSS can impact font, we need adjust accordingly
80
+ window.addEventListener("load", this._requestRecalculation); // Since CSS can impact font, we need adjust accordingly
81
81
 
82
- host.listen("widthChanged", this._setReCalculationTimer);
83
- host.listen("postSectionDataBinding", this._setReCalculationTimer); // In case of lazy loading
82
+ host.listen("widthChanged", this._requestRecalculation);
83
+ host.listen("postSectionDataBinding", this._requestRecalculation); // In case of lazy loading
84
84
 
85
85
  this.config(options);
86
86
  host.listen("columnAdded", this._onColumnAdded);
@@ -99,11 +99,13 @@ ContentWrapPlugin.prototype.unload = function (host) {
99
99
 
100
100
  this._hosts.splice(at, 1);
101
101
 
102
- window.removeEventListener("load", this._setReCalculationTimer);
103
- host.unlisten("widthChanged", this._setReCalculationTimer);
104
- host.unlisten("postSectionDataBinding", this._setReCalculationTimer);
102
+ window.removeEventListener("load", this._requestRecalculation);
103
+ host.unlisten("widthChanged", this._requestRecalculation);
104
+ host.unlisten("postSectionDataBinding", this._requestRecalculation);
105
105
  host.unlisten("columnAdded", this._onColumnAdded);
106
106
 
107
+ this._dispose();
108
+
107
109
  this._clearTimer();
108
110
  };
109
111
  /** @public
@@ -182,7 +184,7 @@ ContentWrapPlugin.prototype.getConfigObject = function (gridOptions) {
182
184
 
183
185
 
184
186
  ContentWrapPlugin.prototype.adjustRowHeight = function (sectionRef, from, to) {
185
- if (this._adjusting || this._hosts.length === 0) {
187
+ if (this._adjusting || !this._hosts.length) {
186
188
  return false; // Quite if grid has not been registered or in the process of adjusting row height
187
189
  }
188
190
 
@@ -198,17 +200,30 @@ ContentWrapPlugin.prototype.adjustRowHeight = function (sectionRef, from, to) {
198
200
  return false;
199
201
  }
200
202
 
203
+ var sectionElem = section.getElement();
204
+
205
+ if (!sectionElem || !sectionElem.offsetParent) {
206
+ return false;
207
+ }
208
+
201
209
  this._adjusting = true; // Prevent infinite loop
202
210
 
203
211
  var dirtyRows = []; // Collect dirty rows
204
212
 
205
- var results = this._calculateRowHeight(section, from, to, dirtyRows); // Setting row height for multiple rows can cause performance issue
213
+ var maxHeight = NaN;
214
+ var heights = null;
206
215
 
216
+ if (this._evenRowHeight) {
217
+ maxHeight = this._calcMaxRowHeight(section, dirtyRows, from, to);
218
+ } else {
219
+ heights = this._calcRowHeights(section, dirtyRows, from, to);
220
+ } // Setting row height for multiple rows can cause performance issue
207
221
 
208
- var rowCount = dirtyRows.length;
222
+
223
+ var dirtyCount = dirtyRows.length;
209
224
  var prevFState = false;
210
225
 
211
- if (rowCount > this._freezingThreshold) {
226
+ if (dirtyCount > this._freezingThreshold) {
212
227
  if (section.getFrozenLayout) {
213
228
  prevFState = section.getFrozenLayout();
214
229
  section.setFrozenLayout(true);
@@ -219,29 +234,25 @@ ContentWrapPlugin.prototype.adjustRowHeight = function (sectionRef, from, to) {
219
234
  var r, rowIndex;
220
235
 
221
236
  if (this._evenRowHeight) {
222
- var max = results["max"];
223
-
224
- for (r = 0; r < rowCount; ++r) {
237
+ for (r = 0; r < dirtyCount; ++r) {
225
238
  rowIndex = dirtyRows[r];
226
- section.setRowHeight(rowIndex, max);
239
+ section.setRowHeight(rowIndex, maxHeight);
227
240
  }
228
241
  } else {
229
- var heights = results["heights"];
230
-
231
- for (r = 0; r < rowCount; ++r) {
242
+ for (r = 0; r < dirtyCount; ++r) {
232
243
  rowIndex = dirtyRows[r];
233
244
  section.setRowHeight(rowIndex, heights[rowIndex]);
234
245
  }
235
246
  }
236
247
 
237
- if (rowCount > this._freezingThreshold) {
248
+ if (dirtyCount > this._freezingThreshold) {
238
249
  if (section.setFrozenLayout) {
239
250
  section.setFrozenLayout(prevFState);
240
251
  }
241
252
  }
242
253
 
243
254
  this._adjusting = false;
244
- return rowCount ? true : false;
255
+ return dirtyCount ? true : false;
245
256
  };
246
257
  /** @public
247
258
  * @param {Object} sectionRef core grid SectionReference object
@@ -300,8 +311,8 @@ ContentWrapPlugin.prototype._setColumnContentWrapping = function (colIndex, colu
300
311
  /** @private */
301
312
 
302
313
 
303
- ContentWrapPlugin.prototype._setReCalculationTimer = function () {
304
- if (!this._recalTimer) {
314
+ ContentWrapPlugin.prototype._requestRecalculation = function () {
315
+ if (!this._recalTimer && !this._adjusting) {
305
316
  this._recalTimer = setTimeout(this._onRecalculation, 100);
306
317
  }
307
318
  };
@@ -328,7 +339,7 @@ ContentWrapPlugin.prototype._clearTimer = function () {
328
339
 
329
340
 
330
341
  ContentWrapPlugin.prototype._getSteppingHeight = function (height) {
331
- return Math.floor(height + 1) + 12; // Add top and bottom padding
342
+ return Math.ceil(height) + 14; // Add top and bottom padding
332
343
  };
333
344
  /** @private
334
345
  * @param {Object} section ILayoutGrid
@@ -343,25 +354,31 @@ ContentWrapPlugin.prototype._calculateRowHeightAt = function (section, rowIndex)
343
354
  var colCount = section.getColumnCount();
344
355
 
345
356
  for (var c = 0; c < colCount; ++c) {
346
- if (this.isWrappingContent(c)) {
347
- var cell = section.getCell(c, rowIndex, false); // TODO: Handle cell spanning
357
+ if (!this.isWrappingContent(c)) {
358
+ continue;
359
+ }
348
360
 
349
- if (cell && cell.isVisible()) {
350
- var cellContent = cell.getContent();
361
+ var cell = section.getCell(c, rowIndex, false); // TODO: Handle cell spanning
351
362
 
352
- if (cellContent) {
353
- if (!cellContent.offsetParent) {
354
- // Cell content is not in the document, so the height cannot be calculated
355
- return NaN;
356
- }
363
+ if (!cell || !cell.isVisible()) {
364
+ continue;
365
+ }
357
366
 
358
- var contentHeight = this._getSteppingHeight(cellContent.offsetHeight);
367
+ var cellContent = cell.getContent();
359
368
 
360
- if (contentHeight > maxHeight) {
361
- maxHeight = contentHeight;
362
- }
363
- }
364
- }
369
+ if (!cellContent) {
370
+ continue;
371
+ }
372
+
373
+ if (!cellContent.offsetParent) {
374
+ // Cell content is not in the document, so the height cannot be calculated
375
+ continue;
376
+ }
377
+
378
+ var contentHeight = this._getSteppingHeight(cellContent.offsetHeight);
379
+
380
+ if (contentHeight > maxHeight) {
381
+ maxHeight = contentHeight;
365
382
  }
366
383
  }
367
384
 
@@ -369,61 +386,90 @@ ContentWrapPlugin.prototype._calculateRowHeightAt = function (section, rowIndex)
369
386
  };
370
387
  /** @private
371
388
  * @param {Object} section ILayoutGrid
389
+ * @param {!Array.<number>} dirtyRows
372
390
  * @param {number=} from
373
391
  * @param {number=} to
374
- * @param {Array.<number>=} opt_dirtyRows
375
- * @return {!Object}
392
+ * @return {number}
376
393
  */
377
394
 
378
395
 
379
- ContentWrapPlugin.prototype._calculateRowHeight = function (section, from, to, opt_dirtyRows) {
380
- if (!from || from < 0) {
396
+ ContentWrapPlugin.prototype._calcMaxRowHeight = function (section, dirtyRows, from, to) {
397
+ if (from == null) {
398
+ from = section.getFirstIndexInView();
399
+ } else if (!from || from < 0) {
381
400
  from = 0;
382
401
  }
383
402
 
384
- var rowCount = section.getRowCount();
403
+ if (to == null) {
404
+ to = section.getLastIndexInView() + 1;
405
+ } else {
406
+ var rowCount = section.getRowCount();
385
407
 
386
- if (!to || to > rowCount) {
387
- to = rowCount;
408
+ if (!to || to > rowCount) {
409
+ to = rowCount;
410
+ }
388
411
  }
389
412
 
390
- var r, h;
391
- var results = {};
413
+ var r;
414
+ var max = 0;
392
415
 
393
- if (this._evenRowHeight) {
394
- var max = 0;
395
-
396
- for (r = from; r < to; ++r) {
397
- h = this._calculateRowHeightAt(section, r);
416
+ for (r = from; r < to; ++r) {
417
+ var h = this._calculateRowHeightAt(section, r);
398
418
 
399
- if (max < h) {
400
- max = h;
401
- }
419
+ if (max < h) {
420
+ max = h;
402
421
  }
422
+ }
403
423
 
404
- results["max"] = max;
405
-
424
+ if (max) {
406
425
  for (r = from; r < to; ++r) {
407
- if (max && opt_dirtyRows && max !== section.getRowHeight(r)) {
408
- opt_dirtyRows.push(r);
426
+ if (max !== section.getRowHeight(r)) {
427
+ dirtyRows.push(r);
409
428
  }
410
429
  }
411
- } else {
412
- var heights = new Array(to);
430
+ }
413
431
 
414
- for (r = from; r < to; ++r) {
415
- h = this._calculateRowHeightAt(section, r);
416
- heights[r] = h;
432
+ return max;
433
+ };
434
+ /** @private
435
+ * @param {Object} section ILayoutGrid
436
+ * @param {!Array.<number>} dirtyRows
437
+ * @param {number=} from
438
+ * @param {number=} to
439
+ * @return {!Array.<number>}
440
+ */
417
441
 
418
- if (h && opt_dirtyRows && h !== section.getRowHeight(r)) {
419
- opt_dirtyRows.push(r);
420
- }
442
+
443
+ ContentWrapPlugin.prototype._calcRowHeights = function (section, dirtyRows, from, to) {
444
+ if (from == null) {
445
+ from = section.getFirstIndexInView();
446
+ } else if (!from || from < 0) {
447
+ from = 0;
448
+ }
449
+
450
+ if (to == null) {
451
+ to = section.getLastIndexInView() + 1;
452
+ } else {
453
+ var rowCount = section.getRowCount();
454
+
455
+ if (!to || to > rowCount) {
456
+ to = rowCount;
421
457
  }
458
+ }
459
+
460
+ var heights = new Array(to);
422
461
 
423
- results["heights"] = heights;
462
+ for (var r = from; r < to; ++r) {
463
+ var h = this._calculateRowHeightAt(section, r);
464
+
465
+ heights[r] = h;
466
+
467
+ if (h && h !== section.getRowHeight(r)) {
468
+ dirtyRows.push(r);
469
+ }
424
470
  }
425
471
 
426
- return results;
472
+ return heights;
427
473
  };
428
474
  /** @private
429
475
  * @param {number} colIndex
@@ -434,7 +480,7 @@ ContentWrapPlugin.prototype._calculateRowHeight = function (section, from, to, o
434
480
  ContentWrapPlugin.prototype._wrapContent = function (colIndex, bool) {
435
481
  this._hosts[0].enableColumnClass(colIndex, "wrap", bool, "content");
436
482
 
437
- this._setReCalculationTimer();
483
+ this._requestRecalculation();
438
484
  };
439
485
  /** @public
440
486
  * @param {number} colIndex
@@ -10,6 +10,8 @@ declare class DragUI {
10
10
 
11
11
  public onThemeLoaded(colors: any): void;
12
12
 
13
+ public setContent(content: any): void;
14
+
13
15
  }
14
16
 
15
17
  export default DragUI;
@@ -9,7 +9,9 @@ import ElfUtil from "./ElfUtil.js";
9
9
  var DragUI = function(options) {
10
10
  this._dragBox = options.dragBox;
11
11
  this._dragBoxIcon = options.dragBoxIcon;
12
-
12
+ this._dragBoxContent = document.createElement("div");
13
+ this._dragBoxContent.className = "drag-box-content";
14
+ this._dragBox.appendChild(this._dragBoxContent);
13
15
  };
14
16
 
15
17
  /** @type {string}
@@ -60,6 +62,10 @@ DragUI.applyThemeColor = function(grid) {
60
62
  */
61
63
  DragUI.prototype.onThemeLoaded = function(colors) {
62
64
  if(!DragUI._styles) {
65
+ var cursor = "grabbing";
66
+ if (ElfUtil.getElfVersion() < 3) {
67
+ cursor = "move";
68
+ }
63
69
  var styles = [ // Main Styles without theme
64
70
  ".tr-row-guideline", [ // Backward compatability of row dragging
65
71
  "position: absolute;",
@@ -104,6 +110,10 @@ DragUI.prototype.onThemeLoaded = function(colors) {
104
110
  "top: 0;",
105
111
  "position: absolute;"
106
112
  ],
113
+ ".drag-box-content", [
114
+ "overflow-x: clip;",
115
+ "text-overflow: ellipsis;"
116
+ ],
107
117
  ".drag-box-icon", [
108
118
  "top: -4px;",
109
119
  "left: 12px;",
@@ -128,7 +138,7 @@ DragUI.prototype.onThemeLoaded = function(colors) {
128
138
  "--grid-void-icon-color: #FFFFFF;"
129
139
  ],
130
140
  ".mouse-dragging .cell:hover", [ // for change mouse cursor when hover header while dragging
131
- "cursor: grabbing !important;"
141
+ "cursor: " + cursor + " !important;"
132
142
  ],
133
143
  ".tr-grid .column .cell.drag-indicator", [ // --grid-drag-indicator defualt is "none"
134
144
  "border-top: var(--grid-drag-indicator) !important;",
@@ -175,27 +185,31 @@ DragUI.prototype.renderDragBox = function (e, grid) {
175
185
  }
176
186
 
177
187
  var gridElem = grid.getElement();
188
+ var dragBoxHost = gridElem;
178
189
  var gridParent = grid.getParent().parentNode;
179
- var pn = this._dragBox.parentNode;
180
- if(!pn) {
181
- gridParent.appendChild(this._dragBox);
190
+ if (gridParent.nodeType === 11) {
191
+ dragBoxHost = gridParent;
182
192
  }
183
193
 
184
- var iconParent = this._dragBoxIcon.parentNode;
194
+ var parent = this._dragBox.parentNode;
195
+ if(!parent) {
196
+ dragBoxHost.appendChild(this._dragBox);
197
+ }
185
198
 
186
- var dragBoxIcon = e.dragBoxIcon || this._dragBox.dragBoxIcon;
199
+ var dragBoxIcon = e.dragBoxIcon || this._dragBox.dragBoxIcon; // The user-supplied icon
187
200
  this._dragBoxIcon.style.visibility = "visible";
201
+ parent = this._dragBoxIcon.parentNode;
188
202
  var drop = true;
189
203
  if(dragBoxIcon === "insertion") {
190
204
  drop = false;
191
205
  this._dragBoxIcon.icon = "add";
192
- if(!iconParent) {
206
+ if(!parent) {
193
207
  this._dragBox.appendChild(this._dragBoxIcon);
194
208
  }
195
209
  } else if (dragBoxIcon === "not-allowed" || dragBoxIcon === "no-drop" || dragBoxIcon === "void" ) {
196
210
  drop = false;
197
211
  this._dragBoxIcon.icon = "void";
198
- if(!iconParent) {
212
+ if(!parent) {
199
213
  this._dragBox.appendChild(this._dragBoxIcon);
200
214
  }
201
215
  } else {
@@ -213,5 +227,21 @@ DragUI.prototype.renderDragBox = function (e, grid) {
213
227
  return drop;
214
228
  };
215
229
 
230
+ /** @public
231
+ * @param {*} content Element, Node, string, number, or everything else.
232
+ */
233
+ DragUI.prototype.setContent = function(content) {
234
+ if (content && content["getElement"]) {
235
+ content = content["getElement"]();
236
+ }
237
+
238
+ var dragBoxContent = this._dragBoxContent;
239
+ var currentContent = dragBoxContent._content;
240
+ if (content !== currentContent) {
241
+ dragBoxContent._content = content;
242
+ Dom.setContent(dragBoxContent, content);
243
+ }
244
+ };
245
+
216
246
  export default DragUI;
217
247
  export {DragUI};
@@ -69,11 +69,13 @@ declare class Popup extends EventDispatcher {
69
69
 
70
70
  public disableAutoHiding(opt_disabled?: boolean|null): void;
71
71
 
72
+ public disableAutoRepositioning(opt_disabled?: boolean|null): void;
73
+
72
74
  public disableAutoClipping(opt_disabled?: boolean|null): void;
73
75
 
74
76
  public disableHideOnScroll(opt_disabled?: boolean|null): void;
75
77
 
76
- public updatePosition(): void;
78
+ public updatePosition(fallback?: boolean|null): void;
77
79
 
78
80
  public enableUIBlocking(bool?: boolean|null): boolean;
79
81
 
@@ -221,6 +221,10 @@ Popup.prototype._uiBlocking = false;
221
221
  * @private
222
222
  */
223
223
  Popup.prototype._hideOnScroll = true;
224
+ /** @type {boolean}
225
+ * @private
226
+ */
227
+ Popup.prototype._autoRepositioning = true;
224
228
 
225
229
  /** @public */
226
230
  Popup.prototype.dispose = function () {
@@ -303,6 +307,10 @@ Popup.prototype.init = function (options) {
303
307
  this._hideOnScroll = false;
304
308
  }
305
309
 
310
+ if (options["autoRepositioning"] == false) {
311
+ this._autoRepositioning = false;
312
+ }
313
+
306
314
  this.addListener(options, "show");
307
315
  this.addListener(options, "hide");
308
316
  this.addListener(options, "shown");
@@ -573,6 +581,15 @@ Popup.prototype.disableAutoHiding = function (opt_disabled) {
573
581
  /** @public
574
582
  * @param {boolean=} opt_disabled
575
583
  */
584
+ Popup.prototype.disableAutoRepositioning = function (opt_disabled) {
585
+ var autoRepositioning = (opt_disabled === false);
586
+ if (this._autoRepositioning !== autoRepositioning) {
587
+ this._autoRepositioning = autoRepositioning;
588
+ }
589
+ };
590
+ /** @public
591
+ * @param {boolean=} opt_disabled
592
+ */
576
593
  Popup.prototype.disableAutoClipping = function (opt_disabled) {
577
594
  var autoClipping = (opt_disabled === false);
578
595
  if (this._autoClipping !== autoClipping) {
@@ -592,8 +609,12 @@ Popup.prototype.disableHideOnScroll = function (opt_disabled) {
592
609
 
593
610
  /** @public
594
611
  * @fires Popup#positioning
612
+ * @param {boolean=} fallback=true
595
613
  */
596
- Popup.prototype.updatePosition = function () {
614
+ Popup.prototype.updatePosition = function (fallback) {
615
+ if(fallback == null){
616
+ fallback = true;
617
+ }
597
618
  var t = this;
598
619
  t._resizeTimer = 0;
599
620
 
@@ -630,34 +651,48 @@ Popup.prototype.updatePosition = function () {
630
651
  if (t._positioning == "right") {
631
652
  x = px + aw + this._gap;
632
653
  y = py;
633
- // Re-position, if the popup exceeds the bounds
634
- if ((x + ew > rb) && (px - ew > sx)) {
635
- x = px - ew - this._gap;
636
- }
637
- if ((y + eh > bb) && (py + ah - eh > sy)) {
638
- y = py + ah - eh;
639
- }
640
654
  } else if (t._positioning == "over") {
641
655
  x = px;
642
656
  y = py;
643
- // Re-position, if the popup exceeds the bounds
644
- if ((x + ew > rb) && (px + aw - ew > sx)) {
645
- x = px + aw - ew;
646
- }
647
- if ((y + eh > bb) && (py + aw - eh > sy)) {
648
- y = py + aw - eh;
649
- }
650
657
  } else { // under, bottom, or etc.
651
658
  x = px;
652
659
  y = py + ah;
653
- // Re-position, if the popup exceeds the bounds
654
- if ((x + ew > rb) && (px + aw - ew > sx)) {
655
- x = px + aw - ew;
656
- }
657
- if ((y + eh > bb) && (py - eh > sy)) {
658
- y = py - eh;
660
+ }
661
+
662
+ if(fallback){
663
+ // Re-position for each type of positioning, if the popup exceeds the bounds
664
+ if (t._positioning == "right") {
665
+ if ((x + ew > rb) && (px - ew > sx)) {
666
+ x = px - ew - this._gap;
667
+ }
668
+ if ((y + eh > bb) && (py + ah - eh > sy)) {
669
+ y = py + ah - eh;
670
+ }
671
+ } else if (t._positioning == "over") {
672
+ if ((x + ew > rb) && (px + aw - ew > sx)) {
673
+ x = px + aw - ew;
674
+ }
675
+ if ((y + eh > bb) && (py + aw - eh > sy)) {
676
+ y = py + aw - eh;
677
+ }
678
+ } else { // under, bottom, or etc.
679
+ if ((x + ew > rb) && (px + aw - ew > sx)) {
680
+ x = px + aw - ew;
681
+ }
682
+ if (y + eh > bb) {
683
+ // If popup is exceeded bottom bound
684
+ if(py - eh > sy){
685
+ y = py - eh; // move popup to top of attached element, if it has enough space
686
+ } else {
687
+ y = y - (y + eh - bb); // shift the popup up to make everything in popup visible
688
+ if(y < 0){
689
+ y = 0; // popup should not shift beyond top bound
690
+ }
691
+ }
692
+ }
659
693
  }
660
694
  }
695
+
661
696
  if (t._autoClipping) { // Last resort of positioning
662
697
  if (x + ew > rb) {
663
698
  if (t._origW == null) {
@@ -685,7 +720,6 @@ Popup.prototype.updatePosition = function () {
685
720
  t._dispatch(evtType, t._evtArg);
686
721
  };
687
722
 
688
-
689
723
  /** @public
690
724
  * @param {boolean=} bool
691
725
  * @return {boolean} previous uiBlocking state
@@ -759,7 +793,7 @@ Popup.prototype._onBlurTimer = function () {
759
793
  * @fires Popup#positioning
760
794
  */
761
795
  Popup.prototype._onResize = function () {
762
- if (!this._resizeTimer && this._inDoc) {
796
+ if (!this._resizeTimer && this._inDoc && this._autoRepositioning) {
763
797
  this._resizeTimer = setTimeout(this.updatePosition, 50);
764
798
  }
765
799
  };
@@ -4,11 +4,11 @@ import { GridPlugin } from '../../tr-grid-util/es6/GridPlugin.js';
4
4
  declare namespace ContentWrapPlugin {
5
5
 
6
6
  type Options = {
7
- evenRowHeight?: boolean
7
+ evenRowHeight?: boolean|null
8
8
  };
9
9
 
10
10
  type ColumnOptions = {
11
- contentWrap?: boolean
11
+ contentWrap?: boolean|null
12
12
  };
13
13
 
14
14
  }
@@ -29,11 +29,11 @@ declare class ContentWrapPlugin extends GridPlugin {
29
29
 
30
30
  public getConfigObject(gridOptions?: any): any;
31
31
 
32
- public adjustRowHeight(sectionRef: any, from?: number, to?: number): boolean;
32
+ public adjustRowHeight(sectionRef: any, from?: number|null, to?: number|null): boolean;
33
33
 
34
34
  public adjustRowHeightAt(sectionRef: any, rowIndex: number): boolean;
35
35
 
36
- public enableContentWrapping(colIndex: number, bool?: boolean): void;
36
+ public enableContentWrapping(colIndex: number, bool?: boolean|null): void;
37
37
 
38
38
  public isWrappingContent(colIndex: number): boolean;
39
39
 
@@ -93,6 +93,8 @@ declare class ColumnDefinition {
93
93
 
94
94
  public isTimeSeries(): boolean;
95
95
 
96
+ public isTimeSeriesChild(): boolean;
97
+
96
98
  public isFormulaField(): boolean;
97
99
 
98
100
  public static isFormulaField(field: string): boolean;
@@ -20,12 +20,16 @@ declare namespace FieldDefinition {
20
20
 
21
21
  function setFieldCaching(caching: boolean): void;
22
22
 
23
+ function disableTimeSeriesExpansion(disabled: boolean): void;
24
+
23
25
  function isFormula(field: string): boolean;
24
26
 
25
27
  function isAdc(field: string): boolean;
26
28
 
27
29
  function isRealTimeField(field: string): boolean;
28
30
 
31
+ function isTimeSeriesChild(field: string): boolean;
32
+
29
33
  function isTimeSeries(field: string): boolean;
30
34
 
31
35
  }
@@ -83,6 +83,7 @@ declare namespace Grid {
83
83
  formulaEngine?: boolean|null,
84
84
  adcPollingInterval?: number|null,
85
85
  fieldCaching?: boolean|null,
86
+ timeSeriesExpansion?: boolean|null,
86
87
  childDataField?: string|null,
87
88
  topSection?: boolean|null
88
89
  };
package/lib/versions.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "tr-grid-util": "1.3.89",
2
+ "tr-grid-util": "1.3.92",
3
3
  "@grid/column-dragging": "1.0.11",
4
4
  "@grid/row-segmenting": "1.0.23",
5
5
  "@grid/statistics-row": "1.0.13",
@@ -14,7 +14,7 @@
14
14
  "tr-grid-column-selection": "1.0.26",
15
15
  "tr-grid-column-stack": "1.0.54",
16
16
  "tr-grid-conditional-coloring": "1.0.58",
17
- "tr-grid-content-wrap": "1.0.19",
17
+ "tr-grid-content-wrap": "1.0.20",
18
18
  "tr-grid-contextmenu": "1.0.38",
19
19
  "tr-grid-filter-input": "0.9.31",
20
20
  "tr-grid-heat-map": "1.0.28",
@@ -32,6 +32,6 @@
32
32
  "tr-grid-titlewrap": "1.0.19",
33
33
  "@grid/formatters": "1.0.49",
34
34
  "@grid/column-selection-dialog": "4.0.46",
35
- "@grid/filter-dialog": "4.0.56",
35
+ "@grid/filter-dialog": "4.0.57",
36
36
  "@grid/column-format-dialog": "4.0.43"
37
37
  }
package/package.json CHANGED
@@ -66,5 +66,5 @@
66
66
  "publishConfig": {
67
67
  "access": "public"
68
68
  },
69
- "version": "6.0.30"
69
+ "version": "6.0.31"
70
70
  }