@refinitiv-ui/efx-grid 6.0.70 → 6.0.72
Sign up to get free protection for your applications and to get access to all the features.
- package/lib/core/dist/core.js +10 -3
- package/lib/core/dist/core.min.js +1 -1
- package/lib/core/es6/grid/Core.js +2 -2
- package/lib/core/es6/grid/VirtualizedLayoutGrid.js +8 -1
- package/lib/filter-dialog/lib/filter-dialog.js +101 -64
- package/lib/grid/index.js +1 -1
- package/lib/tr-grid-column-stack/es6/ColumnStack.js +7 -1
- package/lib/tr-grid-filter-input/es6/FilterInput.js +25 -16
- package/lib/tr-grid-in-cell-editing/es6/InCellEditing.d.ts +3 -2
- package/lib/tr-grid-in-cell-editing/es6/InCellEditing.js +65 -18
- package/lib/tr-grid-row-filtering/es6/RowFiltering.d.ts +1 -3
- package/lib/tr-grid-row-filtering/es6/RowFiltering.js +78 -4
- package/lib/tr-grid-titlewrap/es6/TitleWrap.d.ts +2 -2
- package/lib/tr-grid-titlewrap/es6/TitleWrap.js +1 -1
- package/lib/tr-grid-util/es6/FilterBuilder.d.ts +3 -1
- package/lib/tr-grid-util/es6/FilterBuilder.js +26 -2
- package/lib/types/es6/InCellEditing.d.ts +3 -2
- package/lib/types/es6/RowFiltering.d.ts +1 -3
- package/lib/types/es6/TitleWrap.d.ts +2 -2
- package/lib/versions.json +8 -8
- package/package.json +1 -1
@@ -570,7 +570,7 @@ Core.prototype._firstRendered = false;
|
|
570
570
|
* @return {string}
|
571
571
|
*/
|
572
572
|
Core.getVersion = function () {
|
573
|
-
return "5.1.
|
573
|
+
return "5.1.81";
|
574
574
|
};
|
575
575
|
/** {@link ElementWrapper#dispose}
|
576
576
|
* @override
|
@@ -5441,7 +5441,7 @@ Core.prototype._onRowHeightChanged = function (e) {
|
|
5441
5441
|
// TODO: Set row height one by one is not good
|
5442
5442
|
for(var j = 0; j < len; ++j) {
|
5443
5443
|
var evt = evts[j];
|
5444
|
-
var section = /** @type {ILayoutGrid} */(evt["
|
5444
|
+
var section = /** @type {ILayoutGrid} */(evt["section"]);
|
5445
5445
|
if(!this._containsSection(section)) {
|
5446
5446
|
continue; // The section is no longer contained in this grid
|
5447
5447
|
}
|
@@ -775,7 +775,14 @@ VirtualizedLayoutGrid.prototype.getFirstIndexInView = function () {
|
|
775
775
|
|
776
776
|
/** @inheritDoc */
|
777
777
|
VirtualizedLayoutGrid.prototype.getLastIndexInView = function () {
|
778
|
-
|
778
|
+
var li = this._firstIndex + this._getInnerRowCount() - 1;
|
779
|
+
var core = this._grid._getContext();
|
780
|
+
var dv = core.getDataSource();
|
781
|
+
var actualLastIndex = dv ? dv.getRowCount() - 1 : -1;
|
782
|
+
if (li > actualLastIndex) { //Avoid incorrect index because the delay of row count synchronization after filtering
|
783
|
+
return actualLastIndex;
|
784
|
+
}
|
785
|
+
return li;
|
779
786
|
};
|
780
787
|
|
781
788
|
/** @inheritDoc */
|
@@ -137,7 +137,7 @@ class FilterDialog extends BasicElement {
|
|
137
137
|
constructor() {
|
138
138
|
super();
|
139
139
|
|
140
|
-
this.
|
140
|
+
this._onWindowResized = this._onWindowResized.bind(this);
|
141
141
|
this._afterDialogOpened = this._afterDialogOpened.bind(this);
|
142
142
|
|
143
143
|
this.lang = "en";
|
@@ -155,7 +155,7 @@ class FilterDialog extends BasicElement {
|
|
155
155
|
"autoRepositioning": false,
|
156
156
|
"uiBlocking": true
|
157
157
|
});
|
158
|
-
this.
|
158
|
+
this._winResizedTimer = 0;
|
159
159
|
ElementObserver.addLanguageListener(this);
|
160
160
|
}
|
161
161
|
|
@@ -436,13 +436,7 @@ class FilterDialog extends BasicElement {
|
|
436
436
|
}
|
437
437
|
|
438
438
|
this._cancelBtn.focus(); // Keep focus on cancel button when open dialog
|
439
|
-
|
440
|
-
if(!this._firstRendered) {
|
441
|
-
this._firstRendered = true;
|
442
|
-
if(!positionUpdated) {
|
443
|
-
this._popup.updatePosition();
|
444
|
-
}
|
445
|
-
}
|
439
|
+
this._updateDialogHeight(); // position of the popup element will always be updated
|
446
440
|
|
447
441
|
var popupElem = this._popup.getElement();
|
448
442
|
if(popupElem) {// After all changes, ensure that visibility is reset back
|
@@ -488,9 +482,9 @@ class FilterDialog extends BasicElement {
|
|
488
482
|
*/
|
489
483
|
_onPopupHidden() {
|
490
484
|
this.isShown = false; // For backward compatability
|
491
|
-
if (this.
|
492
|
-
clearTimeout(this.
|
493
|
-
this.
|
485
|
+
if (this._winResizedTimer) {
|
486
|
+
clearTimeout(this._winResizedTimer);
|
487
|
+
this._winResizedTimer = 0;
|
494
488
|
}
|
495
489
|
}
|
496
490
|
|
@@ -498,10 +492,18 @@ class FilterDialog extends BasicElement {
|
|
498
492
|
* @private
|
499
493
|
*/
|
500
494
|
_onWindowResize() {
|
501
|
-
if(!this.
|
502
|
-
this.
|
495
|
+
if(!this._winResizedTimer && this.isShown){
|
496
|
+
this._winResizedTimer = setTimeout(this._onWindowResized, 400);
|
503
497
|
}
|
504
498
|
}
|
499
|
+
/**
|
500
|
+
* @private
|
501
|
+
*/
|
502
|
+
_onWindowResized() {
|
503
|
+
this._winResizedTimer = 0;
|
504
|
+
this._updateDialogHeight();
|
505
|
+
}
|
506
|
+
|
505
507
|
|
506
508
|
/**
|
507
509
|
* @public
|
@@ -577,7 +579,7 @@ class FilterDialog extends BasicElement {
|
|
577
579
|
e.preventDefault();
|
578
580
|
e.stopPropagation();
|
579
581
|
this._updateFilterModeSelectionUI();
|
580
|
-
this._updateDialogHeight(
|
582
|
+
this._updateDialogHeight();
|
581
583
|
}
|
582
584
|
|
583
585
|
/**
|
@@ -674,7 +676,7 @@ class FilterDialog extends BasicElement {
|
|
674
676
|
|
675
677
|
if(useUTCTime) {
|
676
678
|
ary2D.forEach(function(itm) {
|
677
|
-
|
679
|
+
itm[3] = true;
|
678
680
|
});
|
679
681
|
}
|
680
682
|
|
@@ -810,63 +812,102 @@ class FilterDialog extends BasicElement {
|
|
810
812
|
}
|
811
813
|
}
|
812
814
|
|
813
|
-
|
814
|
-
|
815
|
-
|
816
|
-
|
817
|
-
|
818
|
-
|
819
|
-
|
820
|
-
|
821
|
-
|
822
|
-
|
823
|
-
|
824
|
-
|
825
|
-
|
826
|
-
|
827
|
-
|
828
|
-
|
829
|
-
|
830
|
-
|
815
|
+
if (!Array.isArray(userConditions)) {
|
816
|
+
return;
|
817
|
+
}
|
818
|
+
|
819
|
+
const con1 = userConditions[0];
|
820
|
+
var validCon1 = false;
|
821
|
+
var conOp1 = "";
|
822
|
+
var conVal1 = "";
|
823
|
+
var connector = "";
|
824
|
+
if(Array.isArray(con1)) {
|
825
|
+
conOp1 = con1[0];
|
826
|
+
if(con1.length && con1[0]) {
|
827
|
+
conVal1 = con1[1];
|
828
|
+
if(conVal1 || conVal1 === 0 || conVal1 === false) {
|
829
|
+
validCon1 = true;
|
830
|
+
connector = con1[2] || "";
|
831
|
+
} else {
|
832
|
+
conVal1 = "";
|
831
833
|
}
|
832
|
-
|
833
|
-
|
834
|
-
} else {
|
835
|
-
if (con1[0]) {
|
836
|
-
this._generalComboBoxes[0].value = con1[0];
|
837
|
-
this._generalComboBoxes[1].value = con1[1] || "";
|
834
|
+
}
|
835
|
+
}
|
838
836
|
|
839
|
-
|
840
|
-
|
841
|
-
|
842
|
-
|
837
|
+
const con2 = userConditions[1];
|
838
|
+
var validCon2 = false;
|
839
|
+
var conOp2 = "";
|
840
|
+
var conVal2 = "";
|
841
|
+
if(validCon1 && Array.isArray(con2)) {
|
842
|
+
conOp2 = con2[0];
|
843
|
+
if(con2.length && conOp2) {
|
844
|
+
conVal2 = con2[1];
|
845
|
+
if(conVal2 || conVal2 === 0 || conVal2 === false) {
|
846
|
+
validCon2 = true;
|
847
|
+
} else {
|
848
|
+
conVal2 = "";
|
843
849
|
}
|
844
|
-
this._generalRadioBtns[0].checked = firstRadioState;
|
845
|
-
this._generalRadioBtns[1].checked = !firstRadioState;
|
846
850
|
}
|
847
851
|
}
|
852
|
+
|
853
|
+
var firstRadioState = true;
|
854
|
+
if(validCon1 && validCon2) {
|
855
|
+
firstRadioState = connector !== "OR";
|
856
|
+
}
|
857
|
+
|
858
|
+
if (toDateTimeType(this.fieldDataType)) {
|
859
|
+
if (validCon1) {
|
860
|
+
this._updateConditionUIs(this._dateTimeComboBoxes[0], this._dateTimePickers[0], conOp1, this._getDateString(conVal1));
|
861
|
+
}
|
862
|
+
if (validCon2) {
|
863
|
+
this._updateConditionUIs(this._dateTimeComboBoxes[1], this._dateTimePickers[1], conOp2, this._getDateString(conVal2));
|
864
|
+
}
|
865
|
+
this._updateConnectorUIs(this._dateTimeRadioBtns, firstRadioState);
|
866
|
+
} else {
|
867
|
+
if (validCon1) {
|
868
|
+
this._updateConditionUIs(this._generalComboBoxes[0], this._generalComboBoxes[1], conOp1, conVal1);
|
869
|
+
}
|
870
|
+
if (validCon2) {
|
871
|
+
this._updateConditionUIs(this._generalComboBoxes[2], this._generalComboBoxes[3], conOp2, conVal2);
|
872
|
+
}
|
873
|
+
this._updateConnectorUIs(this._generalRadioBtns, firstRadioState);
|
874
|
+
}
|
848
875
|
}
|
849
|
-
/**
|
850
|
-
* @
|
851
|
-
* @param {
|
876
|
+
/** @private
|
877
|
+
* @param {Element} opCombobox
|
878
|
+
* @param {Element} valuePicker
|
879
|
+
* @param {string} opValue
|
880
|
+
* @param {string} value
|
881
|
+
*/
|
882
|
+
_updateConditionUIs(opCombobox, valuePicker, opValue, value) {
|
883
|
+
opCombobox.value = opValue;
|
884
|
+
valuePicker.value = value;
|
885
|
+
}
|
886
|
+
/** @private
|
887
|
+
* @param {Array.<Element>} connectors
|
888
|
+
* @param {boolean} connectorValue
|
889
|
+
*/
|
890
|
+
_updateConnectorUIs(connectors, connectorValue) {
|
891
|
+
connectors[0].checked = connectorValue;
|
892
|
+
connectors[1].checked = !connectorValue;
|
893
|
+
}
|
894
|
+
/** @private
|
852
895
|
* @returns {boolean}
|
853
896
|
*/
|
854
|
-
_updateDialogHeight(
|
855
|
-
if(!afterOpened) {
|
856
|
-
this._dialogHeightTimerId = 0;
|
857
|
-
}
|
858
|
-
|
859
|
-
this._popup.updatePosition(false); // update position without fallback
|
897
|
+
_updateDialogHeight() {
|
860
898
|
this._rootContainer.classList.remove("compact");
|
861
899
|
this._rootContainer.style.height = "";
|
900
|
+
this._popup.updatePosition(false); // update position without fallback
|
862
901
|
|
863
902
|
const position = Dom.getRelativePosition(this, document.body);
|
864
903
|
const dialogHeight = this.offsetHeight;
|
865
|
-
const windowHeight = window.innerHeight;
|
904
|
+
const windowHeight = window.innerHeight - 5; // Add some buffer
|
866
905
|
const dialogCoverage = position.y + dialogHeight;
|
867
906
|
const heightDiff = dialogCoverage - windowHeight;
|
868
907
|
|
908
|
+
var heightChange = false;
|
869
909
|
if(heightDiff > 0) {
|
910
|
+
heightChange = true;
|
870
911
|
const isAdvancedFilter = this._isAdvancedFilterMode();
|
871
912
|
const minHeight = isAdvancedFilter ? 262 : 216;
|
872
913
|
let newHeight = dialogHeight - heightDiff;
|
@@ -879,10 +920,10 @@ class FilterDialog extends BasicElement {
|
|
879
920
|
if(newHeight < compactThreshold){
|
880
921
|
this._rootContainer.classList.add("compact");
|
881
922
|
}
|
882
|
-
this._popup.updatePosition();
|
883
|
-
return true;
|
884
923
|
}
|
885
|
-
|
924
|
+
|
925
|
+
this._popup.updatePosition(); // This must be called to apply fallback or height change
|
926
|
+
return heightChange;
|
886
927
|
}
|
887
928
|
/**
|
888
929
|
* @private
|
@@ -928,14 +969,10 @@ class FilterDialog extends BasicElement {
|
|
928
969
|
* @return {string}
|
929
970
|
*/
|
930
971
|
_getDateString(date) {
|
931
|
-
var dateString = "";
|
932
|
-
var dateFormat = "yyyy-MM-dd";
|
933
972
|
if(!(date instanceof Date)){
|
934
973
|
date = new Date(date);
|
935
974
|
}
|
936
|
-
|
937
|
-
|
938
|
-
return dateString;
|
975
|
+
return DateTime.format(date.getTime(), "yyyy-MM-dd", this.useUTCTime ? "GMT" : "LOCAL");
|
939
976
|
}
|
940
977
|
|
941
978
|
/**
|
package/lib/grid/index.js
CHANGED
@@ -677,6 +677,12 @@ ColumnStackPlugin.prototype._updateUI = function() {
|
|
677
677
|
}
|
678
678
|
this._updating = false;
|
679
679
|
};
|
680
|
+
/** @private */
|
681
|
+
ColumnStackPlugin.prototype._forceUpdateUI = function() {
|
682
|
+
this._conflator.disable();
|
683
|
+
this._updateUI();
|
684
|
+
this._conflator.enable();
|
685
|
+
};
|
680
686
|
/** @private
|
681
687
|
* @param {number} colIndex
|
682
688
|
* @param {boolean} collapsed
|
@@ -1365,7 +1371,7 @@ ColumnStackPlugin.prototype._onPreSectionRender = function (e) {
|
|
1365
1371
|
if (e["sectionType"] !== "title") {
|
1366
1372
|
return;
|
1367
1373
|
}
|
1368
|
-
this.
|
1374
|
+
this._forceUpdateUI();
|
1369
1375
|
};
|
1370
1376
|
/** @private
|
1371
1377
|
* @param {Object} e
|
@@ -564,7 +564,6 @@ FilterInputPlugin.prototype._createFilterUI = function (colOpt) {
|
|
564
564
|
case "ef-combo-box":
|
565
565
|
elem.multiple = true;
|
566
566
|
elem.data = CoralItems.create(colOpt.entries);
|
567
|
-
elem.addEventListener("opened-changed", this._onOpenedChanged, false);
|
568
567
|
|
569
568
|
if (elemTrigger != false && elemTrigger != "") {
|
570
569
|
elem.addEventListener("value-changed", this._onInputChanged, false);
|
@@ -664,6 +663,13 @@ FilterInputPlugin.prototype._retrieveColumnOption = function (colIndex, colDef)
|
|
664
663
|
var option = this._newExtColumnOption(colIndex);
|
665
664
|
|
666
665
|
if (filterOption) {
|
666
|
+
var type = filterOption["type"];
|
667
|
+
|
668
|
+
if (typeof type == "string") {
|
669
|
+
type = type.toLowerCase();
|
670
|
+
option["type"] = type;
|
671
|
+
}
|
672
|
+
|
667
673
|
var defaultLogic = filterOption["filterLogic"] || filterOption["defaultLogic"];
|
668
674
|
|
669
675
|
if (defaultLogic != null) {
|
@@ -674,6 +680,10 @@ FilterInputPlugin.prototype._retrieveColumnOption = function (colIndex, colDef)
|
|
674
680
|
}
|
675
681
|
}
|
676
682
|
|
683
|
+
if (type == "multiselect" && option._comparingLogic === FilterInputPlugin._containingFilter) {
|
684
|
+
option._comparingLogic = FilterInputPlugin._multiSelectionFilter;
|
685
|
+
}
|
686
|
+
|
677
687
|
var disabled = filterOption["disabled"];
|
678
688
|
|
679
689
|
if (disabled != null) {
|
@@ -686,17 +696,6 @@ FilterInputPlugin.prototype._retrieveColumnOption = function (colIndex, colDef)
|
|
686
696
|
option["placeholder"] = placeholder;
|
687
697
|
}
|
688
698
|
|
689
|
-
var type = filterOption["type"];
|
690
|
-
|
691
|
-
if (typeof type == "string") {
|
692
|
-
type = type.toLowerCase();
|
693
|
-
option["type"] = type;
|
694
|
-
|
695
|
-
if (type == "multiselect") {
|
696
|
-
option._comparingLogic = FilterInputPlugin._multiSelectionFilter;
|
697
|
-
}
|
698
|
-
}
|
699
|
-
|
700
699
|
var entries = filterOption["entries"];
|
701
700
|
|
702
701
|
if (Array.isArray(entries)) {
|
@@ -981,10 +980,13 @@ FilterInputPlugin.prototype._onInputChanged = function (e) {
|
|
981
980
|
FilterInputPlugin.prototype._onOpenedChanged = function (e) {
|
982
981
|
if (e.detail.value) {
|
983
982
|
//open
|
984
|
-
e.currentTarget.style.
|
983
|
+
e.currentTarget.style.pointerEvents = "none";
|
985
984
|
} else {
|
986
985
|
//close
|
987
|
-
e.currentTarget
|
986
|
+
var ect = e.currentTarget;
|
987
|
+
setTimeout(function () {
|
988
|
+
ect.style.pointerEvents = "";
|
989
|
+
});
|
988
990
|
}
|
989
991
|
};
|
990
992
|
/** @private
|
@@ -1023,7 +1025,7 @@ FilterInputPlugin._rtCompareRow = function (filterOptions, rowData, rid) {
|
|
1023
1025
|
};
|
1024
1026
|
/** @private
|
1025
1027
|
* @function
|
1026
|
-
* @param {Array<string>} ary
|
1028
|
+
* @param {Array<string|number>} ary
|
1027
1029
|
* @return {Object}
|
1028
1030
|
*/
|
1029
1031
|
|
@@ -1035,7 +1037,14 @@ FilterInputPlugin._createMapObject = function (ary) {
|
|
1035
1037
|
var count = ary.length;
|
1036
1038
|
|
1037
1039
|
for (var i = 0; i < count; i++) {
|
1038
|
-
var
|
1040
|
+
var key = ary[i];
|
1041
|
+
|
1042
|
+
if (key == null || key === "") {
|
1043
|
+
continue;
|
1044
|
+
}
|
1045
|
+
|
1046
|
+
var str = FilterInputPlugin._transformToLowercaseString(key);
|
1047
|
+
|
1039
1048
|
textMap[str] = true;
|
1040
1049
|
}
|
1041
1050
|
}
|
@@ -18,7 +18,7 @@ declare namespace InCellEditingPlugin {
|
|
18
18
|
popupElement?: Element|null,
|
19
19
|
doubleClick?: boolean|null,
|
20
20
|
tabToMove?: boolean|null,
|
21
|
-
contentSource?:
|
21
|
+
contentSource?: string|null,
|
22
22
|
inlineStyling?: boolean|null,
|
23
23
|
disablingScroll?: boolean|null,
|
24
24
|
uiBlocking?: boolean|null,
|
@@ -30,7 +30,8 @@ declare namespace InCellEditingPlugin {
|
|
30
30
|
beforeRowCommit?: ((...params: any[]) => any)|null,
|
31
31
|
rowEditorClosed?: ((...params: any[]) => any)|null,
|
32
32
|
autoSuggest?: Element|null,
|
33
|
-
closingOnScroll?: boolean|null
|
33
|
+
closingOnScroll?: boolean|null,
|
34
|
+
autoHiding?: boolean|null
|
34
35
|
};
|
35
36
|
|
36
37
|
type Cache = {
|
@@ -17,7 +17,7 @@ import { CoralItems } from "../../tr-grid-util/es6/CoralItems.js";
|
|
17
17
|
* @property {Element=} popupElement=null Element to be attached under the editor
|
18
18
|
* @property {boolean=} doubleClick=true If disabled, double click will not trigger editor
|
19
19
|
* @property {boolean=} tabToMove=false If enabled, pressing tab key while editor is active will open editor on the next editable cell.
|
20
|
-
* @property {
|
20
|
+
* @property {string=} contentSource="textContent" By default, the text in the editor will be populated with textContent of the target cell. Use "field" to populated data from grid's data model. Use "empty" to shows empty editor.
|
21
21
|
* @property {boolean=} inlineStyling=false force inline styles regardless of elf version.
|
22
22
|
* @property {boolean=} disablingScroll=false Scrollbar will be frozen when editor opened. Deprecated in favor of uiBlocking
|
23
23
|
* @property {boolean=} uiBlocking=false append transparent overlay to block ui interaction
|
@@ -29,7 +29,8 @@ import { CoralItems } from "../../tr-grid-util/es6/CoralItems.js";
|
|
29
29
|
* @property {Function=} beforeRowCommit=null Handler before committing from all editors in the row
|
30
30
|
* @property {Function=} rowEditorClosed=null Handler after closing of all editors
|
31
31
|
* @property {Element=} autoSuggest=null Element of ef-autosuggest or atlas-autosuggest for handled with input cell
|
32
|
-
* @property {boolean=} closingOnScroll=true If disabled,
|
32
|
+
* @property {boolean=} closingOnScroll=true If disabled, the editor will not be automatically closed when scrolling grid.
|
33
|
+
* @property {boolean=} autoHiding=true If disabled, the editor will not be automatically closed when losing its focus.
|
33
34
|
*/
|
34
35
|
|
35
36
|
/** @typedef {Object} InCellEditingPlugin~Cache
|
@@ -337,6 +338,10 @@ InCellEditingPlugin.prototype._rowClosing = false;
|
|
337
338
|
* @private
|
338
339
|
*/
|
339
340
|
InCellEditingPlugin.prototype._closingOnScroll = true;
|
341
|
+
/** @type {boolean}
|
342
|
+
* @private
|
343
|
+
*/
|
344
|
+
InCellEditingPlugin.prototype._autoHiding = true;
|
340
345
|
/** @type {number}
|
341
346
|
* @private
|
342
347
|
*/
|
@@ -627,6 +632,9 @@ InCellEditingPlugin.prototype.config = function (options) {
|
|
627
632
|
if (pluginOption["closingOnScroll"] == false) {
|
628
633
|
t._closingOnScroll = false;
|
629
634
|
}
|
635
|
+
if (pluginOption["autoHiding"] == false) {
|
636
|
+
t._autoHiding = false;
|
637
|
+
}
|
630
638
|
|
631
639
|
// event callback
|
632
640
|
t.addListener(pluginOption, "preEditorOpening");
|
@@ -638,6 +646,25 @@ InCellEditingPlugin.prototype.config = function (options) {
|
|
638
646
|
t.addListener(pluginOption, "rowEditorClosed");
|
639
647
|
};
|
640
648
|
|
649
|
+
/** @private
|
650
|
+
* @param {Object} obj
|
651
|
+
* @param {string} propName
|
652
|
+
* @param {boolean} propValue
|
653
|
+
* @param {boolean} defaultValue
|
654
|
+
* @returns {number} dirty
|
655
|
+
*/
|
656
|
+
var _setBooleanOption = function _setBooleanOption(obj, propName, propValue, defaultValue) {
|
657
|
+
if (defaultValue) {
|
658
|
+
if (!propValue) {
|
659
|
+
obj[propName] = false;
|
660
|
+
return true;
|
661
|
+
}
|
662
|
+
} else if (propValue) {
|
663
|
+
obj[propName] = true;
|
664
|
+
return true;
|
665
|
+
}
|
666
|
+
return false;
|
667
|
+
};
|
641
668
|
/** Get a current state of grid and extension config
|
642
669
|
* @public
|
643
670
|
* @param {Object=} out_obj
|
@@ -680,20 +707,28 @@ InCellEditingPlugin.prototype.getConfigObject = function (out_obj) {
|
|
680
707
|
}
|
681
708
|
}
|
682
709
|
var extOptions = obj.inCellEditing;
|
710
|
+
var dirty = 0;
|
683
711
|
if (!extOptions) {
|
684
|
-
extOptions =
|
685
|
-
}
|
686
|
-
extOptions
|
687
|
-
extOptions
|
688
|
-
extOptions
|
689
|
-
extOptions
|
690
|
-
extOptions
|
691
|
-
extOptions
|
692
|
-
extOptions
|
693
|
-
extOptions
|
694
|
-
extOptions
|
695
|
-
extOptions
|
696
|
-
extOptions
|
712
|
+
extOptions = {};
|
713
|
+
}
|
714
|
+
dirty |= _setBooleanOption(extOptions, "balloonMode", this._balloonMode, false);
|
715
|
+
dirty |= _setBooleanOption(extOptions, "editableTitle", this._editableTitle, false);
|
716
|
+
dirty |= _setBooleanOption(extOptions, "tabToMove", this._tabToMove, false);
|
717
|
+
dirty |= _setBooleanOption(extOptions, "autoCommitText", this._autoCommitText, false);
|
718
|
+
dirty |= _setBooleanOption(extOptions, "dataBinding", this._dataBinding, true);
|
719
|
+
dirty |= _setBooleanOption(extOptions, "doubleClick", this._dblClick, true);
|
720
|
+
dirty |= _setBooleanOption(extOptions, "inlineStyling", this._inlineStyling, false);
|
721
|
+
dirty |= _setBooleanOption(extOptions, "disablingScroll", this._disablingScroll, false);
|
722
|
+
dirty |= _setBooleanOption(extOptions, "uiBlocking", this._uiBlocking, false);
|
723
|
+
dirty |= _setBooleanOption(extOptions, "closingOnScroll", this._closingOnScroll, true);
|
724
|
+
dirty |= _setBooleanOption(extOptions, "autoHiding", this._autoHiding, true);
|
725
|
+
if (this._contentSource !== "textContent") {
|
726
|
+
dirty = 1;
|
727
|
+
extOptions.contentSource = this._contentSource;
|
728
|
+
}
|
729
|
+
if (dirty) {
|
730
|
+
obj.inCellEditing = extOptions;
|
731
|
+
}
|
697
732
|
return obj;
|
698
733
|
};
|
699
734
|
|
@@ -1081,6 +1116,9 @@ InCellEditingPlugin.prototype._openEditor = function (e, host, arg) {
|
|
1081
1116
|
arg["segmentSeparator"] = dataSource.isSegmentSeparator(rowId);
|
1082
1117
|
arg["groupHeader"] = dataSource.getGroupByRowId(rowId);
|
1083
1118
|
arg["rowData"] = this._getRow(dataSource, rowId);
|
1119
|
+
if (dataSource["stall"]) {
|
1120
|
+
dataSource["stall"](true);
|
1121
|
+
}
|
1084
1122
|
}
|
1085
1123
|
|
1086
1124
|
// Initialize UIs
|
@@ -1142,7 +1180,7 @@ InCellEditingPlugin.prototype._openEditor = function (e, host, arg) {
|
|
1142
1180
|
}
|
1143
1181
|
balloonPopup.enableUIBlocking(t._uiBlocking);
|
1144
1182
|
balloonPopup.addEventListener("hidden", t._onPopupHide);
|
1145
|
-
balloonPopup.disableAutoHiding(
|
1183
|
+
balloonPopup.disableAutoHiding(!t._autoHiding);
|
1146
1184
|
balloonPopup.disableHideOnScroll(true);
|
1147
1185
|
balloonPopup.attachTo(cell.getElement());
|
1148
1186
|
balloonPopup.show(true, parentElement);
|
@@ -1675,8 +1713,17 @@ InCellEditingPlugin.prototype._commitText = function (committed, suggestionDetai
|
|
1675
1713
|
t._activeInCellCache.balloonPopup.hide();
|
1676
1714
|
}
|
1677
1715
|
Dom.removeParent(t._customElement);
|
1678
|
-
|
1679
|
-
|
1716
|
+
var grid = arg["grid"];
|
1717
|
+
if (grid) {
|
1718
|
+
t._freezeScrolling(grid, false);
|
1719
|
+
grid.focus();
|
1720
|
+
}
|
1721
|
+
var dataSource = arg["dataSource"];
|
1722
|
+
if (dataSource) {
|
1723
|
+
if (dataSource["stall"]) {
|
1724
|
+
dataSource["stall"](false);
|
1725
|
+
}
|
1726
|
+
}
|
1680
1727
|
t._activePos = t._activeCell = t._prevContent = t._lastActiveGrid = t._activeInCellCache = null;
|
1681
1728
|
};
|
1682
1729
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import {Ext} from "../../tr-grid-util/es6/Ext.js";
|
2
2
|
import {GridPlugin} from "../../tr-grid-util/es6/GridPlugin.js";
|
3
|
-
import {FilterBuilder} from "../../tr-grid-util/es6/FilterBuilder.js";
|
3
|
+
import {FilterBuilder, stringToDateObject} from "../../tr-grid-util/es6/FilterBuilder.js";
|
4
4
|
import {FilterOperators} from "../../tr-grid-util/es6/FilterOperators.js";
|
5
5
|
import {ElfUtil} from "../../tr-grid-util/es6/ElfUtil.js";
|
6
6
|
import { injectCss, prettifyCss } from "../../tr-grid-util/es6/Util.js";
|
@@ -113,8 +113,6 @@ declare class RowFilteringPlugin extends GridPlugin {
|
|
113
113
|
|
114
114
|
public getColumnFilterStates(): any[];
|
115
115
|
|
116
|
-
public getUniqueValues(field: string, formatter?: ((...params: any[]) => any)|null, fmtField?: string|null, rawDataAccessor?: ((...params: any[]) => any)|null, formattedDataAccessor?: ((...params: any[]) => any)|null, filterFuncs?: ((...params: any[]) => any)|null, selectedItems?: any): any;
|
117
|
-
|
118
116
|
public openDialog(colIndex: number, runtimeDialogOptions?: RowFilteringPlugin.FilterDialogOptions|null): void;
|
119
117
|
|
120
118
|
public enableEmptySegmentFiltering(enabled?: boolean|null): void;
|