@refinitiv-ui/efx-grid 6.0.105 → 6.0.107

Sign up to get free protection for your applications and to get access to all the features.
Files changed (46) hide show
  1. package/lib/core/dist/core.js +12 -11
  2. package/lib/core/dist/core.min.js +1 -1
  3. package/lib/core/es6/grid/Core.js +7 -8
  4. package/lib/core/es6/grid/ILayoutGrid.js +1 -1
  5. package/lib/core/es6/grid/components/Scrollbar.js +4 -2
  6. package/lib/filter-dialog/lib/filter-dialog.d.ts +2 -0
  7. package/lib/filter-dialog/lib/filter-dialog.js +23 -1
  8. package/lib/filter-dialog/themes/base-checkbox.less +1 -2
  9. package/lib/filter-dialog/themes/elemental/dark/checkbox-list.js +1 -1
  10. package/lib/filter-dialog/themes/elemental/dark/es5/all-elements.js +1 -1
  11. package/lib/filter-dialog/themes/elemental/light/checkbox-list.js +1 -1
  12. package/lib/filter-dialog/themes/elemental/light/es5/all-elements.js +1 -1
  13. package/lib/filter-dialog/themes/halo/dark/checkbox-list.js +1 -1
  14. package/lib/filter-dialog/themes/halo/dark/es5/all-elements.js +1 -1
  15. package/lib/filter-dialog/themes/halo/light/checkbox-list.js +1 -1
  16. package/lib/filter-dialog/themes/halo/light/es5/all-elements.js +1 -1
  17. package/lib/filter-dialog/themes/solar/charcoal/checkbox-list.js +1 -1
  18. package/lib/filter-dialog/themes/solar/charcoal/es5/all-elements.js +1 -1
  19. package/lib/filter-dialog/themes/solar/pearl/checkbox-list.js +1 -1
  20. package/lib/filter-dialog/themes/solar/pearl/es5/all-elements.js +1 -1
  21. package/lib/formatters/es6/FormatterBuilder.js +10 -1
  22. package/lib/formatters/es6/SimpleTickerFormatter.d.ts +0 -2
  23. package/lib/formatters/es6/SimpleTickerFormatter.js +1 -0
  24. package/lib/grid/index.js +1 -1
  25. package/lib/rt-grid/dist/rt-grid.js +32 -15
  26. package/lib/rt-grid/dist/rt-grid.min.js +1 -1
  27. package/lib/rt-grid/es6/FieldDefinition.d.ts +2 -0
  28. package/lib/rt-grid/es6/FieldDefinition.js +20 -4
  29. package/lib/tr-grid-in-cell-editing/es6/InCellEditing.js +128 -89
  30. package/lib/tr-grid-printer/es6/CellWriter.d.ts +6 -5
  31. package/lib/tr-grid-printer/es6/CellWriter.js +57 -49
  32. package/lib/tr-grid-printer/es6/ColumnWriter.d.ts +1 -0
  33. package/lib/tr-grid-printer/es6/ColumnWriter.js +3 -1
  34. package/lib/tr-grid-printer/es6/GridPrinter.js +117 -99
  35. package/lib/tr-grid-printer/es6/PrintTrait.d.ts +1 -0
  36. package/lib/tr-grid-printer/es6/PrintTrait.js +60 -47
  37. package/lib/tr-grid-printer/es6/SectionWriter.d.ts +4 -1
  38. package/lib/tr-grid-printer/es6/SectionWriter.js +40 -15
  39. package/lib/tr-grid-row-filtering/es6/RowFiltering.d.ts +2 -0
  40. package/lib/tr-grid-row-filtering/es6/RowFiltering.js +14 -0
  41. package/lib/tr-grid-row-grouping/es6/RowGrouping.js +6 -0
  42. package/lib/tr-grid-util/es6/MultiTableManager.js +1 -0
  43. package/lib/types/es6/RealtimeGrid/FieldDefinition.d.ts +2 -0
  44. package/lib/types/es6/SimpleTickerFormatter.d.ts +0 -2
  45. package/lib/versions.json +7 -7
  46. package/package.json +1 -1
@@ -9,7 +9,7 @@ import { SectionWriter } from "./SectionWriter.js";
9
9
  /** @private
10
10
  * @type {Node}
11
11
  */
12
- var _dummyNode = null;
12
+ let _dummyNode = null;
13
13
 
14
14
 
15
15
  /** TODO: Move this logic to PrintTrait
@@ -17,9 +17,9 @@ var _dummyNode = null;
17
17
  * @param {Object=} options
18
18
  * @return {!Object}
19
19
  */
20
- var _getPageSize = function (options) {
21
- var pageWidth = 0;
22
- var pageHeight = 0;
20
+ let _getPageSize = function (options) {
21
+ let pageWidth = 0;
22
+ let pageHeight = 0;
23
23
 
24
24
  if (options) {
25
25
  if (options["pageWidth"]) {
@@ -50,7 +50,7 @@ var _getPageSize = function (options) {
50
50
  * @param {Node} nodeA
51
51
  * @param {Node} nodeB
52
52
  */
53
- var swapNode = function (nodeA, nodeB) {
53
+ let swapNode = function (nodeA, nodeB) {
54
54
  if (!nodeA || !nodeB || !nodeA.parentNode || !nodeB.parentNode) {
55
55
  Dom.removeParent(nodeA);
56
56
  Dom.removeParent(nodeB);
@@ -69,9 +69,9 @@ var swapNode = function (nodeA, nodeB) {
69
69
  * @param {Node} fromNode
70
70
  * @param {Node} toNode
71
71
  */
72
- var copyNode = function (fromNode, toNode) {
72
+ let copyNode = function (fromNode, toNode) {
73
73
  if (fromNode && toNode) {
74
- var i, attrs;
74
+ let i, attrs;
75
75
  if (toNode.hasAttributes()) {
76
76
  attrs = toNode.attributes;
77
77
  for (i = attrs.length; --i >= 0;) {
@@ -88,8 +88,8 @@ var copyNode = function (fromNode, toNode) {
88
88
 
89
89
  Dom.removeChildren(toNode);
90
90
 
91
- var chdr = fromNode.childNodes;
92
- var childCount = chdr.length;
91
+ let chdr = fromNode.childNodes;
92
+ let childCount = chdr.length;
93
93
  for (i = 0; i < childCount; ++i) {
94
94
  toNode.appendChild(chdr[i].cloneNode(true));
95
95
  }
@@ -101,14 +101,14 @@ var copyNode = function (fromNode, toNode) {
101
101
  * @param {number} colIndex
102
102
  * @param {string} alignment
103
103
  */
104
- var _setColumnAlignment = function (tbl, colIndex, alignment) {
104
+ let _setColumnAlignment = function (tbl, colIndex, alignment) {
105
105
  if (!alignment || alignment === "default") {
106
106
  return;
107
107
  }
108
- var cells = tbl.getCellsInColumn(colIndex);
108
+ let cells = tbl.getCellsInColumn(colIndex);
109
109
  if (!cells) return;
110
- for (var i = cells.length; --i >= 0;) {
111
- var cell = cells[i];
110
+ for (let i = cells.length; --i >= 0;) {
111
+ let cell = cells[i];
112
112
  cell.classList.add("tr-align-" + alignment);
113
113
  }
114
114
  };
@@ -117,8 +117,8 @@ var _setColumnAlignment = function (tbl, colIndex, alignment) {
117
117
  * @param {*} grid grid element, currently supports atlas-blotter, ef-grid, tr.CompositeGrid, rt.Grid and Core
118
118
  * @return {Object} core grid
119
119
  */
120
- var _getCoreGrid = function (grid) {
121
- var core = null;
120
+ let _getCoreGrid = function (grid) {
121
+ let core = null;
122
122
  try {
123
123
  if (grid.api) { // ef-grid or atlas-blotter
124
124
  core = grid.api.getCoreGrid();
@@ -136,7 +136,7 @@ var _getCoreGrid = function (grid) {
136
136
 
137
137
  /** @namespace
138
138
  */
139
- var GridPrinter = {};
139
+ let GridPrinter = {};
140
140
  /** @private
141
141
  * @type {string}
142
142
  */
@@ -156,7 +156,7 @@ GridPrinter._grid = null;
156
156
  /** @type {boolean}
157
157
  * @private
158
158
  */
159
- GridPrinter._isObserving = false;
159
+ GridPrinter._manualObs = false;
160
160
  /** @type {!Object}
161
161
  * @private
162
162
  */
@@ -177,14 +177,16 @@ GridPrinter.setPrintOptions = function (options) {
177
177
  * @param {HTMLIFrameElement=} iFrameElement If not specified, current window is used instead. Specify null to un-observe existing window object.
178
178
  */
179
179
  GridPrinter.observe = function (iFrameElement) {
180
- var pt = GridPrinter._getPrintTrait();
180
+ let pt = GridPrinter.getPrintTrait();
181
181
  pt.observe(iFrameElement);
182
- GridPrinter._isObserving = pt.isObserving();
182
+ GridPrinter._manualObs = pt.isObserving();
183
183
  };
184
184
  /** @public
185
185
  */
186
186
  GridPrinter.unobserve = function () {
187
- GridPrinter._getPrintTrait().unobserve();
187
+ let pt = GridPrinter.getPrintTrait();
188
+ pt.unobserve();
189
+ GridPrinter._manualObs = pt.isObserving();
188
190
  };
189
191
  /** @public
190
192
  * @param {boolean=} bool
@@ -199,7 +201,7 @@ GridPrinter.enableDebugMode = function (bool) {
199
201
  * @return {!Object}
200
202
  */
201
203
  GridPrinter.getPreFlightInfo = function (grid, options) {
202
- var pfInfo = options || {};
204
+ let pfInfo = options || {};
203
205
  if (!pfInfo.pageCount) {
204
206
  pfInfo.pageCount = 0;
205
207
  }
@@ -207,7 +209,7 @@ GridPrinter.getPreFlightInfo = function (grid, options) {
207
209
  return pfInfo;
208
210
  }
209
211
 
210
- var colCount = grid.getColumnCount();
212
+ let colCount = grid.getColumnCount();
211
213
  if (!colCount) {
212
214
  return pfInfo;
213
215
  }
@@ -219,14 +221,14 @@ GridPrinter.getPreFlightInfo = function (grid, options) {
219
221
  options.pageHeight = GridPrinter._options["pageHeight"];
220
222
  }
221
223
 
222
- var pageSize = _getPageSize(options);
223
- var pageWidth = pfInfo.pageWidth = pageSize.pageWidth;
224
- var pageHeight = pfInfo.pageHeight = pageSize.pageHeight;
224
+ let pageSize = _getPageSize(options);
225
+ let pageWidth = pfInfo.pageWidth = pageSize.pageWidth;
226
+ let pageHeight = pfInfo.pageHeight = pageSize.pageHeight;
225
227
 
226
228
  // Find primary column that will exist in every page
227
- var c;
228
- var primaryColIndex = 0;
229
- var identifierCol = GridPrinter._options["identifierField"] || GridPrinter._options["primaryColumn"];
229
+ let c;
230
+ let primaryColIndex = 0;
231
+ let identifierCol = GridPrinter._options["identifierField"] || GridPrinter._options["primaryColumn"];
230
232
  // if(typeof identifierCol === "string") {
231
233
  // for(c = 0; c < colCount; ++c) {
232
234
  // if() {
@@ -237,21 +239,21 @@ GridPrinter.getPreFlightInfo = function (grid, options) {
237
239
  primaryColIndex = identifierCol;
238
240
  }
239
241
 
240
- var primaryCol = pfInfo.primaryColumn = GridPrinter._newColInfo(grid, primaryColIndex);
242
+ let primaryCol = pfInfo.primaryColumn = GridPrinter._newColInfo(grid, primaryColIndex);
241
243
 
242
244
  // Collect properties from all visible columns
243
245
  // Create a column set that fit the page width
244
246
  // Create multiple column sets for single grid
245
- var colSets = []; // Each set will fit a single page
246
- var colSet, colInfo;
247
- // var defaultMinWidth = 50; // WARNING: Hardcoded value
248
- var availSpace = 0;
247
+ let colSets = []; // Each set will fit a single page
248
+ let colSet, colInfo;
249
+ // let defaultMinWidth = 50; // WARNING: Hardcoded value
250
+ let availSpace = 0;
249
251
  for (c = 0; c < colCount; ++c) {
250
252
  if (c == primaryCol.index) {
251
253
  continue;
252
254
  }
253
255
 
254
- var colVisible = grid.isColumnVisible(c);
256
+ let colVisible = grid.isColumnVisible(c);
255
257
  if (!colVisible) {
256
258
  continue;
257
259
  }
@@ -272,7 +274,7 @@ GridPrinter.getPreFlightInfo = function (grid, options) {
272
274
  }
273
275
 
274
276
 
275
- var colSetCount = colSets.length;
277
+ let colSetCount = colSets.length;
276
278
  if (!colSetCount) {
277
279
  colSetCount = 1;
278
280
  colSets.push([primaryCol]);
@@ -280,10 +282,10 @@ GridPrinter.getPreFlightInfo = function (grid, options) {
280
282
  pfInfo.columnSets = colSets;
281
283
 
282
284
  // Resolve scalable columns and width
283
- for (var i = 0; i < colSetCount; ++i) {
285
+ for (let i = 0; i < colSetCount; ++i) {
284
286
  colSet = colSets[i];
285
287
  colCount = colSet.columns.length;
286
- var scalableColumns = [];
288
+ let scalableColumns = [];
287
289
  availSpace = pageWidth;
288
290
  for (c = 0; c < colCount; ++c) {
289
291
  colInfo = colSet.columns[c];
@@ -293,16 +295,16 @@ GridPrinter.getPreFlightInfo = function (grid, options) {
293
295
  availSpace -= colInfo.width;
294
296
  }
295
297
  }
296
- var scalableColCount = scalableColumns.length;
298
+ let scalableColCount = scalableColumns.length;
297
299
  if (scalableColCount) {
298
- var avgWidth = (availSpace / scalableColCount); // TODO: Take min width into account
300
+ let avgWidth = (availSpace / scalableColCount); // TODO: Take min width into account
299
301
  for (c = 0; c < scalableColCount; ++c) {
300
302
  scalableColumns[c].width = (avgWidth * (c + 1) | 0) - (avgWidth * c | 0);
301
303
  }
302
304
  }
303
305
 
304
- var totalWidth = 0;
305
- var widths = colSet.widths = new Array(colCount);
306
+ let totalWidth = 0;
307
+ let widths = colSet.widths = new Array(colCount);
306
308
  for (c = 0; c < colCount; ++c) {
307
309
  colInfo = colSet.columns[c];
308
310
  widths[c] = colInfo.width;
@@ -312,21 +314,21 @@ GridPrinter.getPreFlightInfo = function (grid, options) {
312
314
  }
313
315
 
314
316
  // Find total row count per table. Remove all empty rows after the last occupied row.
315
- var dv = grid.getDataSource();
316
- var totalRowCount = pfInfo.totalRowcount = dv.getVisibleRowCount();
317
+ let dv = grid.getDataSource();
318
+ let totalRowCount = pfInfo.totalRowcount = dv.getVisibleRowCount();
317
319
 
318
320
  // Find cutoff point for each page
319
- var titleSect = grid.getSection("title");
320
- var headerHeight = pfInfo.headerHeight = (titleSect.isVisible()) ? titleSect.getDefaultRowHeight() : 0;
321
- var rowHeight = pfInfo.rowHeight = grid.getSection("content").getDefaultRowHeight();
322
- var maxRowPerPage = (pageHeight - headerHeight) / rowHeight | 0;
321
+ let titleSect = grid.getSection("title");
322
+ let headerHeight = pfInfo.headerHeight = (titleSect.isVisible()) ? titleSect.getDefaultRowHeight() : 0;
323
+ let rowHeight = pfInfo.rowHeight = grid.getSection("content").getDefaultRowHeight();
324
+ let maxRowPerPage = (pageHeight - headerHeight) / rowHeight | 0;
323
325
  if (!(maxRowPerPage > 0)) { // NaN, negative number, or zero is not allowed.
324
326
  maxRowPerPage = 1; // number of content rows
325
327
  }
326
328
  pfInfo.maxRowPerPage = maxRowPerPage;
327
329
 
328
- var gridCount = pfInfo.gridCount = Math.ceil(totalRowCount / maxRowPerPage); // Number of grid require to render all of the rows. Grid must fit a single page
329
- // var lastPageRowCount = totalRowCount - (totalRowCount / maxRowPerPage | 0);
330
+ let gridCount = pfInfo.gridCount = Math.ceil(totalRowCount / maxRowPerPage); // Number of grid require to render all of the rows. Grid must fit a single page
331
+ // let lastPageRowCount = totalRowCount - (totalRowCount / maxRowPerPage | 0);
330
332
  pfInfo.pageCount = gridCount * colSetCount;
331
333
 
332
334
 
@@ -334,10 +336,10 @@ GridPrinter.getPreFlightInfo = function (grid, options) {
334
336
  // if(colSetCount == 1 && pageCount > 1) {
335
337
  // availSpace = pageWidth;
336
338
  // tableWidth = tables[0]._width;
337
- // var numGridPerPage = Math.floor(pageWidth / tableWidth);
339
+ // let numGridPerPage = Math.floor(pageWidth / tableWidth);
338
340
 
339
- // var margin = 4;
340
- // var takenSpace = numTablePerPage * tableWidth + (numTablePerPage - 1) * margin;
341
+ // let margin = 4;
342
+ // let takenSpace = numTablePerPage * tableWidth + (numTablePerPage - 1) * margin;
341
343
  // if(takenSpace > pageWidth) {
342
344
  // numGridPerPage--; // There is not enough space for margin
343
345
  // }
@@ -367,46 +369,47 @@ GridPrinter.createPrintElement = function (grid, options) {
367
369
  return null;
368
370
  }
369
371
 
370
- var pfInfo = options || GridPrinter._printInfo;
372
+ let pfInfo = options || GridPrinter._printInfo;
371
373
  if (!pfInfo || !pfInfo._calculated) {
372
374
  pfInfo = GridPrinter.getPreFlightInfo(grid, pfInfo);
373
375
  }
374
376
 
375
377
  // TODO: Check if we need to recalculate everything again
376
- var maxRowPerPage = pfInfo.maxRowPerPage;
377
- var totalRowCount = pfInfo.totalRowcount;
378
- var rowHeight = pfInfo.rowHeight;
379
- var headerHeight = pfInfo.headerHeight;
380
- var colSets = pfInfo.columnSets;
381
- var colSetCount = pfInfo.columnSets.length;
382
- var primaryColumn = pfInfo.primaryColumn;
383
- var gridCount = pfInfo.gridCount;
384
- var contentWriter = new SectionWriter(); // content section
385
- var headerWriter = new SectionWriter();
386
-
387
- var gridContentSection = grid.getSectionSettings("content");
378
+ let maxRowPerPage = pfInfo.maxRowPerPage;
379
+ let totalRowCount = pfInfo.totalRowcount;
380
+ let rowHeight = pfInfo.rowHeight;
381
+ let headerHeight = pfInfo.headerHeight;
382
+ let colSets = pfInfo.columnSets;
383
+ let colSetCount = pfInfo.columnSets.length;
384
+ let primaryColumn = pfInfo.primaryColumn;
385
+ let gridCount = pfInfo.gridCount;
386
+ let contentWriter = new SectionWriter(); // content section
387
+ let headerWriter = new SectionWriter();
388
+
389
+ let gridContentSection = grid.getSectionSettings("content");
388
390
  gridContentSection.snapshot(contentWriter);
389
391
 
390
- var gridHeaderSection = grid.getSectionSettings("title");
392
+ let gridHeaderSection = grid.getSectionSettings("title");
391
393
  if (gridHeaderSection) {
392
394
  gridHeaderSection.snapshot(headerWriter);
393
395
  }
394
396
 
395
397
  // Begin element construction
396
- var tables = [];
397
- for (var t = 0; t < gridCount; ++t) { // For each table
398
- var rowStart = t * maxRowPerPage;
399
- var rowEnd = rowStart + maxRowPerPage;
398
+ let tables = [];
399
+ let t;
400
+ for (t = 0; t < gridCount; ++t) { // For each table
401
+ let rowStart = t * maxRowPerPage;
402
+ let rowEnd = rowStart + maxRowPerPage;
400
403
  if (rowEnd > totalRowCount) {
401
404
  rowEnd = totalRowCount;
402
405
  }
403
- var rowCount = rowEnd - rowStart;
406
+ let rowCount = rowEnd - rowStart;
404
407
 
405
- for (var s = 0; s < colSetCount; ++s) { // For each column set
406
- var colSet = colSets[s];
407
- var colCount = colSet.columns.length;
408
- var c, col, colIndex;
409
- var tbl = new Table(null, {
408
+ for (let s = 0; s < colSetCount; ++s) { // For each column set
409
+ let colSet = colSets[s];
410
+ let colCount = colSet.columns.length;
411
+ let c, col, colIndex;
412
+ let tbl = new Table(null, {
410
413
  colCount: colCount,
411
414
  rowCount: rowCount,
412
415
  rowHeight: rowHeight
@@ -416,7 +419,7 @@ GridPrinter.createPrintElement = function (grid, options) {
416
419
 
417
420
  if (headerHeight) {
418
421
  tbl.addHeaderRows(); // TODO: support multiple rows
419
- var thead = tbl.getHeader();
422
+ let thead = tbl.getHeader();
420
423
  thead.setDefaultRowHeight(headerHeight);
421
424
 
422
425
  // Render header columns
@@ -434,12 +437,12 @@ GridPrinter.createPrintElement = function (grid, options) {
434
437
  for (c = 0; c < colCount; ++c) { // Populate each cell
435
438
  col = colSet.columns[c];
436
439
  colIndex = col.index;
437
- var isPrimary = colIndex === primaryColumn.index;
440
+ let isPrimary = colIndex === primaryColumn.index;
438
441
 
439
- for (var r = 0; r < rowCount; ++r) {
440
- var rowIndex = rowStart + r;
441
- var masterCell = contentWriter.getCellElement(colIndex, rowIndex);
442
- var cell = tbl.getCell(c, r);
442
+ for (let r = 0; r < rowCount; ++r) {
443
+ let rowIndex = rowStart + r;
444
+ let masterCell = contentWriter.getCellElement(colIndex, rowIndex);
445
+ let cell = tbl.getCell(c, r);
443
446
  if (isPrimary) {
444
447
  copyNode(masterCell, cell);
445
448
  } else {
@@ -456,8 +459,8 @@ GridPrinter.createPrintElement = function (grid, options) {
456
459
  }
457
460
 
458
461
  // Produce the root element to be appended to the page
459
- var pageCount = pfInfo.pageCount;
460
- var rootElem = document.createElement("div");
462
+ let pageCount = pfInfo.pageCount;
463
+ let rootElem = document.createElement("div");
461
464
  rootElem.className = "tr-printing-root";
462
465
  rootElem.style.display = "block"; // This will beat any CSS selector
463
466
  for (t = 0; t < pageCount; ++t) {
@@ -650,7 +653,7 @@ GridPrinter._applyCss = function () {
650
653
  * @param {*} grid grid element, currently supports efx-grid, atlas-blotter, ef-grid, tr.CompositeGrid, rt.Grid and Core
651
654
  */
652
655
  GridPrinter.print = function (grid) {
653
- var core = null;
656
+ let core = null;
654
657
  if (grid) {
655
658
  GridPrinter._applyCss();
656
659
  core = _getCoreGrid(grid);
@@ -659,8 +662,8 @@ GridPrinter.print = function (grid) {
659
662
  if (core) {
660
663
  GridPrinter._grid = core;
661
664
 
662
- var pt = GridPrinter._getPrintTrait(); // initialize
663
- if (!GridPrinter._isObserving) {
665
+ let pt = GridPrinter.getPrintTrait(); // initialize
666
+ if (!GridPrinter._manualObs) {
664
667
  pt.observe(); // Observe current window
665
668
  }
666
669
 
@@ -671,20 +674,35 @@ GridPrinter.print = function (grid) {
671
674
  };
672
675
 
673
676
 
674
- /** @private
677
+ /** @public
678
+ * @ignore
675
679
  * @return {!PrintTrait}
676
680
  */
677
- GridPrinter._getPrintTrait = function () {
678
- var pt = GridPrinter._printTrait;
681
+ GridPrinter.getPrintTrait = function () {
682
+ let pt = GridPrinter._printTrait;
679
683
  if (!pt) {
680
- pt = GridPrinter._printTrait = new PrintTrait();
681
- // TODO: this._printTrait.fixPaperSize(); // WORKAROUND: We cannot detect the change in paper size during the browser's preview dialog.
684
+ pt = new PrintTrait();
685
+ GridPrinter.setPrintTrait(pt);
686
+ }
687
+ return pt;
688
+ };
689
+ /** @public
690
+ * @ignore
691
+ * @param {PrintTrait} pt
692
+ */
693
+ GridPrinter.setPrintTrait = function (pt) {
694
+ if(GridPrinter._printTrait && GridPrinter._printTrait !== pt) {
695
+ GridPrinter._printTrait.dispose();
696
+ }
697
+
698
+ GridPrinter._printTrait = pt || null;
699
+ if (pt) {
700
+ // TODO: pt.fixPaperSize(); // WORKAROUND: We cannot detect the change in paper size during the browser's preview dialog.
682
701
 
683
702
  pt.addEventListener('pageCounting', GridPrinter._onPageCounting);
684
703
  pt.addEventListener('beforeprint', GridPrinter._onBeforePrint);
685
704
  pt.addEventListener('afterprint', GridPrinter._onAfterPrint);
686
705
  }
687
- return pt;
688
706
  };
689
707
  /** @private
690
708
  * @param {tr.Grid} grid
@@ -692,12 +710,12 @@ GridPrinter._getPrintTrait = function () {
692
710
  * @return {!Object}
693
711
  */
694
712
  GridPrinter._newColInfo = function (grid, idx) {
695
- var minWidth = grid.getMinimumColumnWidth(idx);
713
+ let minWidth = grid.getMinimumColumnWidth(idx);
696
714
  if (minWidth <= 0) {
697
715
  minWidth = 50; // WARNING: Hard-coded value
698
716
  }
699
- var scalability = grid.getColumnScalability(idx);
700
- var width = scalability ? minWidth : grid.getColumnWidth(idx);
717
+ let scalability = grid.getColumnScalability(idx);
718
+ let width = scalability ? minWidth : grid.getColumnWidth(idx);
701
719
 
702
720
  return {
703
721
  "index": idx,
@@ -741,7 +759,7 @@ GridPrinter._onBeforePrint = function (e) {
741
759
  if (GridPrinter._printInfo && GridPrinter._printInfo.pageCount) {
742
760
  GridPrinter._printElem = GridPrinter.createPrintElement(GridPrinter._grid, GridPrinter._printInfo); // TODO: Use new sizes given from PrintTrait
743
761
 
744
- // var elem = GridPrinter._printTrait.createClientBox(e.pageWidth, e.pageHeight);
762
+ // let elem = GridPrinter._printTrait.createClientBox(e.pageWidth, e.pageHeight);
745
763
  e.bodyElement.appendChild(GridPrinter._printElem);
746
764
  }
747
765
  };
@@ -751,8 +769,8 @@ GridPrinter._onBeforePrint = function (e) {
751
769
  GridPrinter._onAfterPrint = function (e) {
752
770
  GridPrinter._removePrintElements();
753
771
 
754
- if (!GridPrinter._isObserving) {
755
- GridPrinter._getPrintTrait().unobserve();
772
+ if (!GridPrinter._manualObs) {
773
+ GridPrinter.getPrintTrait().unobserve();
756
774
  }
757
775
 
758
776
  GridPrinter._printInfo = null;
@@ -35,4 +35,5 @@ declare class PrintTrait {
35
35
 
36
36
  }
37
37
 
38
+ export default PrintTrait;
38
39
  export { PrintTrait };