@refinitiv-ui/efx-grid 6.0.70 → 6.0.72
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 +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;
|