@refinitiv-ui/efx-grid 6.0.105 → 6.0.107
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/core/dist/core.js +12 -11
- package/lib/core/dist/core.min.js +1 -1
- package/lib/core/es6/grid/Core.js +7 -8
- package/lib/core/es6/grid/ILayoutGrid.js +1 -1
- package/lib/core/es6/grid/components/Scrollbar.js +4 -2
- package/lib/filter-dialog/lib/filter-dialog.d.ts +2 -0
- package/lib/filter-dialog/lib/filter-dialog.js +23 -1
- package/lib/filter-dialog/themes/base-checkbox.less +1 -2
- package/lib/filter-dialog/themes/elemental/dark/checkbox-list.js +1 -1
- package/lib/filter-dialog/themes/elemental/dark/es5/all-elements.js +1 -1
- package/lib/filter-dialog/themes/elemental/light/checkbox-list.js +1 -1
- package/lib/filter-dialog/themes/elemental/light/es5/all-elements.js +1 -1
- package/lib/filter-dialog/themes/halo/dark/checkbox-list.js +1 -1
- package/lib/filter-dialog/themes/halo/dark/es5/all-elements.js +1 -1
- package/lib/filter-dialog/themes/halo/light/checkbox-list.js +1 -1
- package/lib/filter-dialog/themes/halo/light/es5/all-elements.js +1 -1
- package/lib/filter-dialog/themes/solar/charcoal/checkbox-list.js +1 -1
- package/lib/filter-dialog/themes/solar/charcoal/es5/all-elements.js +1 -1
- package/lib/filter-dialog/themes/solar/pearl/checkbox-list.js +1 -1
- package/lib/filter-dialog/themes/solar/pearl/es5/all-elements.js +1 -1
- package/lib/formatters/es6/FormatterBuilder.js +10 -1
- package/lib/formatters/es6/SimpleTickerFormatter.d.ts +0 -2
- package/lib/formatters/es6/SimpleTickerFormatter.js +1 -0
- package/lib/grid/index.js +1 -1
- package/lib/rt-grid/dist/rt-grid.js +32 -15
- package/lib/rt-grid/dist/rt-grid.min.js +1 -1
- package/lib/rt-grid/es6/FieldDefinition.d.ts +2 -0
- package/lib/rt-grid/es6/FieldDefinition.js +20 -4
- package/lib/tr-grid-in-cell-editing/es6/InCellEditing.js +128 -89
- package/lib/tr-grid-printer/es6/CellWriter.d.ts +6 -5
- package/lib/tr-grid-printer/es6/CellWriter.js +57 -49
- package/lib/tr-grid-printer/es6/ColumnWriter.d.ts +1 -0
- package/lib/tr-grid-printer/es6/ColumnWriter.js +3 -1
- package/lib/tr-grid-printer/es6/GridPrinter.js +117 -99
- package/lib/tr-grid-printer/es6/PrintTrait.d.ts +1 -0
- package/lib/tr-grid-printer/es6/PrintTrait.js +60 -47
- package/lib/tr-grid-printer/es6/SectionWriter.d.ts +4 -1
- package/lib/tr-grid-printer/es6/SectionWriter.js +40 -15
- package/lib/tr-grid-row-filtering/es6/RowFiltering.d.ts +2 -0
- package/lib/tr-grid-row-filtering/es6/RowFiltering.js +14 -0
- package/lib/tr-grid-row-grouping/es6/RowGrouping.js +6 -0
- package/lib/tr-grid-util/es6/MultiTableManager.js +1 -0
- package/lib/types/es6/RealtimeGrid/FieldDefinition.d.ts +2 -0
- package/lib/types/es6/SimpleTickerFormatter.d.ts +0 -2
- package/lib/versions.json +7 -7
- package/package.json +1 -1
@@ -26,8 +26,8 @@ import { EventDispatcher } from "../../tr-grid-util/es6/EventDispatcher.js";
|
|
26
26
|
* @extends{EventDispatcher}
|
27
27
|
* @suppress {checkTypes}
|
28
28
|
*/
|
29
|
-
|
30
|
-
|
29
|
+
let PrintTrait = function() {
|
30
|
+
let t = this;
|
31
31
|
t._onKeyDown = t._onKeyDown.bind(t);
|
32
32
|
t._onMediaQuery = t._onMediaQuery.bind(t);
|
33
33
|
t._onBeforePrint = t._onBeforePrint.bind(t);
|
@@ -44,19 +44,19 @@ Ext.inherits(PrintTrait, EventDispatcher);
|
|
44
44
|
/** @type {number}
|
45
45
|
* @private
|
46
46
|
*/
|
47
|
-
|
47
|
+
const IDLE = 0;
|
48
48
|
/** @type {number}
|
49
49
|
* @private
|
50
50
|
*/
|
51
|
-
|
51
|
+
const COUNTING = 1;
|
52
52
|
/** @type {number}
|
53
53
|
* @private
|
54
54
|
*/
|
55
|
-
|
55
|
+
const BEFORE_PRINT = 2;
|
56
56
|
/** @type {number}
|
57
57
|
* @private
|
58
58
|
*/
|
59
|
-
|
59
|
+
const AFTER_PRINT = 3;
|
60
60
|
|
61
61
|
/** @type {number}
|
62
62
|
* @private
|
@@ -97,7 +97,11 @@ PrintTrait.prototype._state = IDLE;
|
|
97
97
|
/** @type {number}
|
98
98
|
* @private
|
99
99
|
*/
|
100
|
-
PrintTrait.prototype.
|
100
|
+
PrintTrait.prototype._beforePrintTimer = 0;
|
101
|
+
/** @type {number}
|
102
|
+
* @private
|
103
|
+
*/
|
104
|
+
PrintTrait.prototype._afterPrintTimer = 0;
|
101
105
|
/** @type {boolean}
|
102
106
|
* @public
|
103
107
|
*/
|
@@ -117,10 +121,10 @@ PrintTrait._env = {};
|
|
117
121
|
* @return {Object}
|
118
122
|
*/
|
119
123
|
PrintTrait.calculateEnvironment = function() {
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
+
let env = PrintTrait._env;
|
125
|
+
let ua = navigator.userAgent;
|
126
|
+
let jet = window["JET"];
|
127
|
+
let cd = jet ? jet["ContainerDescription"] : "";
|
124
128
|
|
125
129
|
env.isMac = /Mac/.test(navigator.platform);
|
126
130
|
env.isIE = (ua.indexOf("MSIE ") > 0) || (ua.indexOf("Trident/") > 0) || (ua.indexOf("Edge/") > 0);
|
@@ -138,7 +142,7 @@ PrintTrait.prototype.observe = function(iframeElement) {
|
|
138
142
|
return;
|
139
143
|
}
|
140
144
|
|
141
|
-
|
145
|
+
let winObj = null;
|
142
146
|
|
143
147
|
if(iframeElement) {
|
144
148
|
if(iframeElement.contentWindow) {
|
@@ -199,10 +203,15 @@ PrintTrait.prototype.isObserving = function() {
|
|
199
203
|
* @suppress {checkTypes}
|
200
204
|
*/
|
201
205
|
PrintTrait.prototype.dispose = function() {
|
202
|
-
this.
|
206
|
+
this.removeAllEventListeners();
|
203
207
|
|
204
|
-
if(this.
|
205
|
-
clearTimeout(this.
|
208
|
+
if(this._beforePrintTimer) {
|
209
|
+
clearTimeout(this._beforePrintTimer);
|
210
|
+
this._beforePrintTimer = 0;
|
211
|
+
}
|
212
|
+
if(this._afterPrintTimer) {
|
213
|
+
clearTimeout(this._afterPrintTimer);
|
214
|
+
this._afterPrintTimer = 0;
|
206
215
|
}
|
207
216
|
|
208
217
|
this._onPrintEnd(); // Force ending the process
|
@@ -213,7 +222,7 @@ PrintTrait.prototype.dispose = function() {
|
|
213
222
|
*/
|
214
223
|
PrintTrait.prototype.print = function() {
|
215
224
|
if(!this._window) {
|
216
|
-
console.
|
225
|
+
console.warn("Cannot perform printing. Window object must be specified by using observe() method.");
|
217
226
|
return;
|
218
227
|
}
|
219
228
|
if(this._state !== IDLE) {
|
@@ -233,10 +242,9 @@ PrintTrait.prototype.print = function() {
|
|
233
242
|
this._eventArg["documentElement"] = this.getDocumentElement();
|
234
243
|
this._eventArg["bodyElement"] = this.getBodyElement();
|
235
244
|
this.getDocumentElement().classList.add("tr-printing-mode");
|
236
|
-
this._dispatch("pageCounting", this._eventArg);
|
237
245
|
|
238
246
|
if(PrintTrait.DEBUG) {
|
239
|
-
|
247
|
+
let debugBtn = PrintTrait._debugBtn = document.createElement("button");
|
240
248
|
debugBtn.addEventListener("click", this._onBeforePrint);
|
241
249
|
debugBtn.textContent = "BeforePrint";
|
242
250
|
debugBtn.style.display = "unset";
|
@@ -246,30 +254,35 @@ PrintTrait.prototype.print = function() {
|
|
246
254
|
debugBtn.style.transform = "translateX(-50%)";
|
247
255
|
debugBtn.style.top = "20px";
|
248
256
|
document.body.appendChild(debugBtn);
|
249
|
-
}
|
257
|
+
}
|
258
|
+
this._dispatch("pageCounting", this._eventArg);
|
259
|
+
|
260
|
+
if(!PrintTrait.DEBUG) {
|
250
261
|
/**
|
251
262
|
* _onBeforePrint() was originally execute by window 'beforeprint' event.
|
252
263
|
* Due to Custom Elements can't be create during 'beforeprint', _onBeforePrint() needs to be executed manually.
|
253
264
|
* And window.print() need to be executed after some delay to make sure Custom Elements are created and rendered.
|
254
265
|
* See here: https://html.spec.whatwg.org/multipage/custom-elements.html#custom-element-reactions
|
255
266
|
*/
|
267
|
+
this._beforePrintTimer = setTimeout(this._print, 500);
|
256
268
|
this._onBeforePrint();
|
257
|
-
setTimeout(this._print, 500);
|
258
269
|
}
|
259
270
|
};
|
260
271
|
/** @public
|
261
272
|
*/
|
262
273
|
PrintTrait.prototype._print = function() {
|
274
|
+
this._beforePrintTimer = 0;
|
263
275
|
this._defaultPrint.call(this._window);
|
276
|
+
this._dispatch("printed", this._eventArg);
|
264
277
|
};
|
265
278
|
/** @public
|
266
279
|
* @param {number} pageCount
|
267
280
|
* @return {!Element}
|
268
281
|
*/
|
269
282
|
PrintTrait.createBlankPages = function(pageCount) {
|
270
|
-
|
271
|
-
for(
|
272
|
-
|
283
|
+
let rootElem = document.createElement("div");
|
284
|
+
for(let i = 0; i < pageCount; ++i) {
|
285
|
+
let bp = document.createElement("div");
|
273
286
|
if(PrintTrait.DEBUG) {
|
274
287
|
bp.textContent = "Page " + (i + 1);
|
275
288
|
} else {
|
@@ -286,8 +299,8 @@ PrintTrait.createBlankPages = function(pageCount) {
|
|
286
299
|
* @return {!Element}
|
287
300
|
*/
|
288
301
|
PrintTrait.prototype.createClientBox = function(pw, ph) {
|
289
|
-
|
290
|
-
|
302
|
+
let rootElem = document.createElement("div");
|
303
|
+
let styObj = rootElem.style;
|
291
304
|
styObj.width = pw + "px";
|
292
305
|
styObj.height = ph + "px";
|
293
306
|
|
@@ -329,9 +342,7 @@ PrintTrait.prototype.getBodyElement = function() {
|
|
329
342
|
* @param {KeyboardEvent} e
|
330
343
|
*/
|
331
344
|
PrintTrait.prototype._onKeyDown = function(e) {
|
332
|
-
|
333
|
-
|
334
|
-
if(ctrlCmdKey) {
|
345
|
+
if(e.metaKey || e.ctrlKey) {
|
335
346
|
if(!e.altKey) {
|
336
347
|
if(e.keyCode === 80) { // P
|
337
348
|
e.preventDefault();
|
@@ -359,18 +370,18 @@ PrintTrait.prototype._onBeforePrint = function(e) {
|
|
359
370
|
this._state = BEFORE_PRINT;
|
360
371
|
this._calculatePageSize(this._correction, this._fixedSize);
|
361
372
|
|
362
|
-
|
363
373
|
this._eventArg["documentElement"] = this.getDocumentElement();
|
364
374
|
this._eventArg["bodyElement"] = this.getBodyElement();
|
365
375
|
this.getDocumentElement().classList.add("tr-printing-mode");
|
366
|
-
this._dispatch("beforeprint", this._eventArg);
|
367
376
|
|
368
377
|
if(PrintTrait.DEBUG) {
|
369
|
-
|
378
|
+
let debugBtn = PrintTrait._debugBtn;
|
370
379
|
debugBtn.removeEventListener("click", this._onBeforePrint);
|
371
380
|
debugBtn.addEventListener("click", this._onAfterPrint);
|
372
381
|
debugBtn.textContent = "AfterPrint";
|
373
382
|
}
|
383
|
+
|
384
|
+
this._dispatch("beforeprint", this._eventArg);
|
374
385
|
}
|
375
386
|
};
|
376
387
|
/** @private
|
@@ -382,22 +393,22 @@ PrintTrait.prototype._onAfterPrint = function(e) {
|
|
382
393
|
this._calculatePageSize();
|
383
394
|
|
384
395
|
this.getDocumentElement().classList.remove("tr-printing-mode");
|
385
|
-
this._dispatch("afterprint", this._eventArg);
|
386
|
-
this._timerId = setTimeout(this._onPrintEnd, 0);
|
387
|
-
|
388
396
|
if (PrintTrait._debugBtn) { // For debugging
|
389
|
-
|
397
|
+
let pn = PrintTrait._debugBtn.parentNode;
|
390
398
|
if(pn) {
|
391
399
|
pn.removeChild(PrintTrait._debugBtn);
|
392
400
|
}
|
393
401
|
PrintTrait._debugBtn = null;
|
394
402
|
}
|
403
|
+
|
404
|
+
this._afterPrintTimer = setTimeout(this._onPrintEnd, 0);
|
405
|
+
this._dispatch("afterprint", this._eventArg);
|
395
406
|
}
|
396
407
|
};
|
397
408
|
/** @private
|
398
409
|
*/
|
399
410
|
PrintTrait.prototype._onPrintEnd = function() {
|
400
|
-
this.
|
411
|
+
this._afterPrintTimer = 0;
|
401
412
|
this._state = IDLE;
|
402
413
|
};
|
403
414
|
/** @private
|
@@ -409,13 +420,13 @@ PrintTrait.prototype._calculatePageSize = function(sizeCorrection, fixedSize) {
|
|
409
420
|
if(PrintTrait._env.isIE) {
|
410
421
|
return false; // Cannot calculate paper size in IE
|
411
422
|
}
|
412
|
-
|
413
|
-
|
423
|
+
let documentElement = this.getDocumentElement();
|
424
|
+
let cw = documentElement.clientWidth;
|
414
425
|
var iw = this._window.innerWidth || 0;
|
415
|
-
|
416
|
-
|
417
|
-
|
418
|
-
|
426
|
+
let ch = documentElement.clientHeight;
|
427
|
+
let ih = this._window.innerHeight || 0;
|
428
|
+
let nw = (cw >= iw) ? cw : iw;
|
429
|
+
let nh = (ch >= ih) ? ch : ih;
|
419
430
|
|
420
431
|
if(fixedSize) {
|
421
432
|
if(nw > nh) {
|
@@ -426,9 +437,9 @@ PrintTrait.prototype._calculatePageSize = function(sizeCorrection, fixedSize) {
|
|
426
437
|
nh = this._defaultHeight;
|
427
438
|
}
|
428
439
|
} else if(sizeCorrection) {
|
429
|
-
|
430
|
-
|
431
|
-
|
440
|
+
let portrait = nh >= nw;
|
441
|
+
let ar = this._calculateAspectRatio(nw, nh);
|
442
|
+
let paperSize = PrintTrait._paperSizes[ar];
|
432
443
|
if(!paperSize) {
|
433
444
|
paperSize = PrintTrait._paperSizes[ar - 1] || PrintTrait._paperSizes[ar + 1];
|
434
445
|
}
|
@@ -457,8 +468,8 @@ PrintTrait.prototype._calculatePageSize = function(sizeCorrection, fixedSize) {
|
|
457
468
|
* @return {number}
|
458
469
|
*/
|
459
470
|
PrintTrait.prototype._calculateAspectRatio = function(w, h) {
|
460
|
-
|
461
|
-
|
471
|
+
let portrait = h >= w;
|
472
|
+
let ratio = (portrait) ? w / h : h / w;
|
462
473
|
return Math.floor(ratio * 1000); // Return 3 digit precision
|
463
474
|
};
|
464
475
|
|
@@ -478,4 +489,6 @@ PrintTrait._paperSizes = {
|
|
478
489
|
};
|
479
490
|
|
480
491
|
|
492
|
+
|
493
|
+
export default PrintTrait;
|
481
494
|
export { PrintTrait };
|
@@ -29,10 +29,12 @@ declare class SectionWriter extends ElementWrapper {
|
|
29
29
|
|
30
30
|
public enableRowClass(rowIndex: number, className: string, enabled: boolean): void;
|
31
31
|
|
32
|
-
public stretchCell(
|
32
|
+
public stretchCell(cellRef: any, rowIndex?: number|null, stretching?: boolean|null, onlyToTheRight?: boolean|null): any;
|
33
33
|
|
34
34
|
public hasCellSpan(): boolean;
|
35
35
|
|
36
|
+
public getStretchedCell(cellRef: any, rowIndex?: number|null): any;
|
37
|
+
|
36
38
|
public getCellRowSpan(colIndex: number, rowIndex: number): number;
|
37
39
|
|
38
40
|
public setCellRowSpan(colIndex: number, rowIndex: number, rowSpan: number): void;
|
@@ -51,4 +53,5 @@ declare class SectionWriter extends ElementWrapper {
|
|
51
53
|
|
52
54
|
}
|
53
55
|
|
56
|
+
export default SectionWriter;
|
54
57
|
export { SectionWriter };
|
@@ -7,7 +7,7 @@ import { CellWriter } from "./CellWriter.js";
|
|
7
7
|
* @constructor
|
8
8
|
* @extends {ElementWrapper}
|
9
9
|
*/
|
10
|
-
|
10
|
+
let SectionWriter = function () {
|
11
11
|
this._cellWriter = new CellWriter();
|
12
12
|
this._table = new Table();
|
13
13
|
this._columns = [];
|
@@ -34,7 +34,7 @@ SectionWriter.prototype.getFirstIndexInView = function () {
|
|
34
34
|
* @return {number}
|
35
35
|
*/
|
36
36
|
SectionWriter.prototype.getLastIndexInView = function () {
|
37
|
-
return this._table.getRowCount();
|
37
|
+
return this._table.getRowCount() - 1; // WARNING: This is inclusive
|
38
38
|
};
|
39
39
|
|
40
40
|
/** @public
|
@@ -48,7 +48,7 @@ SectionWriter.prototype.getColumnCount = function () {
|
|
48
48
|
* @return {*}
|
49
49
|
*/
|
50
50
|
SectionWriter.prototype.getColumn = function (colIndex) {
|
51
|
-
|
51
|
+
let col = this._columns[colIndex];
|
52
52
|
if (!col) {
|
53
53
|
col = this._columns[colIndex] = {};
|
54
54
|
}
|
@@ -81,7 +81,7 @@ SectionWriter.prototype.setRowCount = function (val) {
|
|
81
81
|
* @return {CellWriter}
|
82
82
|
*/
|
83
83
|
SectionWriter.prototype.getCell = function (colIndex, rowIndex) {
|
84
|
-
|
84
|
+
let cell = this._table.getCell(colIndex, rowIndex);
|
85
85
|
if(cell) {
|
86
86
|
this._cellWriter.cloak(cell);
|
87
87
|
return this._cellWriter;
|
@@ -94,7 +94,7 @@ SectionWriter.prototype.getCell = function (colIndex, rowIndex) {
|
|
94
94
|
* @return {Element|Node|NodeList}
|
95
95
|
*/
|
96
96
|
SectionWriter.prototype.getCellContent = function (colIndex, rowIndex) {
|
97
|
-
|
97
|
+
let cell = this.getCell(colIndex, rowIndex);
|
98
98
|
return cell ? cell.getContent() : null;
|
99
99
|
};
|
100
100
|
/** Set data to the specified cell
|
@@ -104,7 +104,7 @@ SectionWriter.prototype.getCellContent = function (colIndex, rowIndex) {
|
|
104
104
|
* @param {string|Element|tr.IElementControl|*} data this can be HTML element, string, number, date, image
|
105
105
|
*/
|
106
106
|
SectionWriter.prototype.setCellContent = function (colIndex, rowIndex, data) {
|
107
|
-
|
107
|
+
let cell = this.getCell(colIndex, rowIndex);
|
108
108
|
if(cell) {
|
109
109
|
cell.setContent(data);
|
110
110
|
}
|
@@ -119,17 +119,24 @@ SectionWriter.prototype.setCellContent = function (colIndex, rowIndex, data) {
|
|
119
119
|
SectionWriter.prototype.enableRowClass = function (rowIndex, className, enabled) { };
|
120
120
|
|
121
121
|
/** This will make the specified cell horizontally span to fit entire row regardless of position of the cell -- cell will shift to the left most of the section.<br>
|
122
|
-
* If
|
122
|
+
* If onlyToTheRight is true, the cell will not extend to the left most position<br>
|
123
123
|
* This is different from cell colSpan, which the cell remain in the same position. tr-stretched class will also be added to the cell
|
124
124
|
* @public
|
125
|
-
* @param {
|
126
|
-
* @param {number} rowIndex
|
127
|
-
* @param {boolean=}
|
128
|
-
* @param {boolean=}
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
125
|
+
* @param {*} cellRef Either column index or cell reference is acceptable
|
126
|
+
* @param {number=} rowIndex If the cell instance is given as the first parameter, this parameter will be ignored.
|
127
|
+
* @param {boolean=} stretching Default is true
|
128
|
+
* @param {boolean=} onlyToTheRight=false By default, cell will be stretched to both left and right directions, covering entire row. Set to true to expand only to the right
|
129
|
+
* @return {*} The cell being stretched
|
130
|
+
* @example
|
131
|
+
* grid.stretchCell(1, 0); // The second cell on the first row will be stretched covering the entire row
|
132
|
+
* grid.stretchCell(cellInstance, 0, true); // The given cell will be stretched covering the entire row
|
133
|
+
*/
|
134
|
+
SectionWriter.prototype.stretchCell = function (cellRef, rowIndex, stretching, onlyToTheRight) {
|
135
|
+
let cell = this._table.getCell(cellRef, rowIndex);
|
136
|
+
if(stretching !== false) {
|
137
|
+
cell.setAttribute("colspan", this._table.getColumnCount());
|
138
|
+
}
|
139
|
+
return cell;
|
133
140
|
};
|
134
141
|
/** {@link SectionWriter#stretchCell}
|
135
142
|
* @public
|
@@ -143,6 +150,22 @@ SectionWriter.prototype.unstretchCell = function (colIndex, rowIndex) {};
|
|
143
150
|
* @return {boolean}
|
144
151
|
*/
|
145
152
|
SectionWriter.prototype.hasCellSpan = function () { return false; };
|
153
|
+
/**
|
154
|
+
* @public
|
155
|
+
* @param {*} cellRef
|
156
|
+
* @param {number=} rowIndex
|
157
|
+
* @return {*}
|
158
|
+
*/
|
159
|
+
SectionWriter.prototype.getStretchedCell = function (cellRef, rowIndex) {
|
160
|
+
if(typeof rowIndex === "number") {
|
161
|
+
let cell = this._table.getCell(cellRef, rowIndex);
|
162
|
+
let colSpan = +cell.getAttribute("colspan");
|
163
|
+
if(colSpan > 1) {
|
164
|
+
return cell;
|
165
|
+
}
|
166
|
+
}
|
167
|
+
return null;
|
168
|
+
};
|
146
169
|
/** @description Returns zero or negative value, if the cell is spanned over (i.e. occupied by the spanning cell). <br>
|
147
170
|
* Negative value is distance from the spanning cell (i.e. -1 means one cell from the spanning cell and -2 means two cells from the spanning cell) <br>
|
148
171
|
* Return one, if the cell has no span (normal cell). <br>
|
@@ -210,4 +233,6 @@ SectionWriter.prototype._startBindingSession = function (enabled) {
|
|
210
233
|
};
|
211
234
|
|
212
235
|
|
236
|
+
|
237
|
+
export default SectionWriter;
|
213
238
|
export { SectionWriter };
|
@@ -26,6 +26,7 @@ declare namespace RowFilteringPlugin {
|
|
26
26
|
type FilterDialogOptions = {
|
27
27
|
sortUI?: boolean|null,
|
28
28
|
filterUI?: boolean|null,
|
29
|
+
advancedFilter?: boolean|null,
|
29
30
|
fieldDataType?: string|null,
|
30
31
|
lang?: string|null,
|
31
32
|
rawDataAccessor?: ((...params: any[]) => any)|null,
|
@@ -33,6 +34,7 @@ declare namespace RowFilteringPlugin {
|
|
33
34
|
sortLogic?: ((...params: any[]) => any)|null,
|
34
35
|
itemList?: any[]|null,
|
35
36
|
additionalItems?: any[]|null,
|
37
|
+
compactMode?: boolean|null,
|
36
38
|
blankValues?: (boolean|string)|null
|
37
39
|
};
|
38
40
|
|
@@ -80,6 +80,7 @@ The expression can take various forms:<br>
|
|
80
80
|
* @description Options that specify UIs of filter dialog
|
81
81
|
* @property {boolean=} sortUI=true show/hide sort UI
|
82
82
|
* @property {boolean=} filterUI=true show/hide filter UI
|
83
|
+
* @property {boolean=} advancedFilter=true show advaced filter tab
|
83
84
|
* @property {string=} fieldDataType data type of column
|
84
85
|
* @property {string=} lang dialog language
|
85
86
|
* @property {Function=} rawDataAccessor In case you have custom data type for the specified field, data getter is needed to retrieve raw value for filtering
|
@@ -87,6 +88,7 @@ The expression can take various forms:<br>
|
|
87
88
|
* @property {Function=} sortLogic This function for sorting filter item list in the dialog. The comparison will perform on raw values, and not formatted values
|
88
89
|
* @property {Array=} itemList Item list to be shown in the dialog. If this is not specified, the list will be collected from existing data on the grid
|
89
90
|
* @property {Array=} additionalItems Additional items to be put on the itemList
|
91
|
+
* @property {boolean=} compactMode=false force compact mode in dialog
|
90
92
|
* @property {(boolean|string)=} blankValues Display a "(Blanks)" item in the filter dialog to represent an empty value. If a string is passed, it will be used as the label for the blank item
|
91
93
|
*/
|
92
94
|
|
@@ -1813,6 +1815,8 @@ RowFilteringPlugin.prototype.openDialog = function(colIndex, runtimeDialogOption
|
|
1813
1815
|
let dialogConfig = { // default config
|
1814
1816
|
sortUI: true,
|
1815
1817
|
filterUI: true,
|
1818
|
+
advancedFilter: true,
|
1819
|
+
compactMode: false,
|
1816
1820
|
fieldDataType: "",
|
1817
1821
|
lang: "",
|
1818
1822
|
rawDataAccessor: null,
|
@@ -1974,6 +1978,16 @@ RowFilteringPlugin._overrideConfig = function(config, userConfig) {
|
|
1974
1978
|
config.filterUI = filterUI;
|
1975
1979
|
}
|
1976
1980
|
|
1981
|
+
let advancedFilter = userConfig["advancedFilter"];
|
1982
|
+
if (advancedFilter != null) {
|
1983
|
+
config.advancedFilter = advancedFilter;
|
1984
|
+
}
|
1985
|
+
|
1986
|
+
let compactMode = userConfig["compactMode"];
|
1987
|
+
if (compactMode != null) {
|
1988
|
+
config.compactMode = compactMode;
|
1989
|
+
}
|
1990
|
+
|
1977
1991
|
let fieldDataType = userConfig["fieldDataType"];
|
1978
1992
|
if(fieldDataType != null) {
|
1979
1993
|
config.fieldDataType = fieldDataType;
|
@@ -396,6 +396,12 @@ RowGroupingPlugin.prototype.initialize = function (host, options) {
|
|
396
396
|
return;
|
397
397
|
}
|
398
398
|
|
399
|
+
if(options && !options.multitable) {
|
400
|
+
while (this._hosts.length) {
|
401
|
+
this.unload(this._hosts[0]);
|
402
|
+
}
|
403
|
+
}
|
404
|
+
|
399
405
|
this._hosts.push(host);
|
400
406
|
|
401
407
|
ExpanderIcon.loadExpanderStyles();
|
@@ -341,6 +341,7 @@ MultiTableManager.prototype._addTable = function(tableIndex) {
|
|
341
341
|
|
342
342
|
let configObj = this._cloneConfig();
|
343
343
|
configObj.extensions = this._generateExtensions();
|
344
|
+
configObj.multitable = true;
|
344
345
|
|
345
346
|
delete configObj.staticDataRows;
|
346
347
|
delete configObj.rows;
|
package/lib/versions.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
|
-
"tr-grid-util": "1.3.
|
3
|
-
"tr-grid-printer": "1.0.
|
2
|
+
"tr-grid-util": "1.3.152",
|
3
|
+
"tr-grid-printer": "1.0.18",
|
4
4
|
"@grid/column-dragging": "1.0.20",
|
5
5
|
"@grid/row-segmenting": "1.0.31",
|
6
6
|
"@grid/statistics-row": "1.0.17",
|
@@ -19,19 +19,19 @@
|
|
19
19
|
"tr-grid-contextmenu": "1.0.41",
|
20
20
|
"tr-grid-filter-input": "0.9.39",
|
21
21
|
"tr-grid-heat-map": "1.0.29",
|
22
|
-
"tr-grid-in-cell-editing": "1.0.
|
22
|
+
"tr-grid-in-cell-editing": "1.0.87",
|
23
23
|
"tr-grid-pagination": "1.0.24",
|
24
24
|
"tr-grid-percent-bar": "1.0.24",
|
25
25
|
"tr-grid-range-bar": "2.0.8",
|
26
26
|
"tr-grid-row-dragging": "1.0.35",
|
27
|
-
"tr-grid-row-filtering": "1.0.
|
28
|
-
"tr-grid-row-grouping": "1.0.
|
27
|
+
"tr-grid-row-filtering": "1.0.77",
|
28
|
+
"tr-grid-row-grouping": "1.0.88",
|
29
29
|
"tr-grid-row-selection": "1.0.30",
|
30
30
|
"tr-grid-rowcoloring": "1.0.25",
|
31
31
|
"tr-grid-textformatting": "1.0.48",
|
32
32
|
"tr-grid-titlewrap": "1.0.22",
|
33
|
-
"@grid/formatters": "1.0.
|
33
|
+
"@grid/formatters": "1.0.53",
|
34
34
|
"@grid/column-selection-dialog": "4.0.57",
|
35
|
-
"@grid/filter-dialog": "4.0.
|
35
|
+
"@grid/filter-dialog": "4.0.65",
|
36
36
|
"@grid/column-format-dialog": "4.0.45"
|
37
37
|
}
|
package/package.json
CHANGED