@syncfusion/ej2-pivotview 20.1.58 → 20.2.38

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (149) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/dist/ej2-pivotview.umd.min.js +2 -2
  3. package/dist/ej2-pivotview.umd.min.js.map +1 -1
  4. package/dist/es6/ej2-pivotview.es2015.js +530 -235
  5. package/dist/es6/ej2-pivotview.es2015.js.map +1 -1
  6. package/dist/es6/ej2-pivotview.es5.js +544 -246
  7. package/dist/es6/ej2-pivotview.es5.js.map +1 -1
  8. package/dist/global/ej2-pivotview.min.js +2 -2
  9. package/dist/global/ej2-pivotview.min.js.map +1 -1
  10. package/dist/global/index.d.ts +1 -1
  11. package/helpers/e2e/index.js +9 -7
  12. package/helpers/e2e/pivotfieldlist.js +47 -31
  13. package/helpers/e2e/pivotview.js +68 -52
  14. package/package.json +22 -22
  15. package/src/base/engine.d.ts +1 -1
  16. package/src/base/engine.js +129 -82
  17. package/src/base/olap/engine.js +2 -2
  18. package/src/base/olap/mdx-query.js +1 -1
  19. package/src/base/util.js +2 -2
  20. package/src/common/actions/event-base.d.ts +4 -2
  21. package/src/common/actions/event-base.js +45 -10
  22. package/src/common/actions/field-list.js +2 -1
  23. package/src/common/actions/pivot-button.js +4 -4
  24. package/src/common/base/constant.d.ts +8 -0
  25. package/src/common/base/constant.js +8 -0
  26. package/src/common/base/css-constant.d.ts +16 -0
  27. package/src/common/base/css-constant.js +16 -0
  28. package/src/common/calculatedfield/calculated-field.js +24 -15
  29. package/src/common/conditionalformatting/conditional-formatting.js +5 -5
  30. package/src/common/grouping-bar/grouping-bar.js +1 -1
  31. package/src/common/popups/aggregate-menu.js +4 -3
  32. package/src/common/popups/drillthrough-dialog.js +10 -10
  33. package/src/common/popups/error-dialog.js +1 -1
  34. package/src/common/popups/filter-dialog.js +25 -14
  35. package/src/common/popups/formatting-dialog.js +2 -2
  36. package/src/common/popups/grouping.js +14 -7
  37. package/src/common/popups/toolbar.d.ts +1 -0
  38. package/src/common/popups/toolbar.js +26 -16
  39. package/src/pivotchart/base/pivotchart.js +3 -0
  40. package/src/pivotfieldlist/base/field-list-model.d.ts +5 -0
  41. package/src/pivotfieldlist/base/field-list.d.ts +4 -0
  42. package/src/pivotfieldlist/base/field-list.js +11 -6
  43. package/src/pivotfieldlist/renderer/dialog-renderer.js +17 -9
  44. package/src/pivotfieldlist/renderer/tree-renderer.d.ts +4 -0
  45. package/src/pivotfieldlist/renderer/tree-renderer.js +102 -8
  46. package/src/pivotview/actions/drill-through.js +2 -2
  47. package/src/pivotview/actions/virtualscroll.d.ts +1 -0
  48. package/src/pivotview/actions/virtualscroll.js +59 -30
  49. package/src/pivotview/base/pivotview-model.d.ts +7 -0
  50. package/src/pivotview/base/pivotview.d.ts +6 -0
  51. package/src/pivotview/base/pivotview.js +25 -12
  52. package/src/pivotview/model/chartsettings-model.d.ts +2 -2
  53. package/src/pivotview/model/chartsettings.d.ts +2 -2
  54. package/src/pivotview/model/chartsettings.js +2 -2
  55. package/src/pivotview/renderer/render.js +5 -2
  56. package/styles/bootstrap-dark.css +165 -32
  57. package/styles/bootstrap.css +165 -32
  58. package/styles/bootstrap4.css +166 -36
  59. package/styles/bootstrap5-dark.css +209 -45
  60. package/styles/bootstrap5.css +209 -45
  61. package/styles/fabric-dark.css +165 -32
  62. package/styles/fabric.css +165 -32
  63. package/styles/fluent-dark.css +183 -49
  64. package/styles/fluent.css +183 -49
  65. package/styles/highcontrast-light.css +165 -32
  66. package/styles/highcontrast.css +165 -32
  67. package/styles/material-dark.css +165 -32
  68. package/styles/material.css +165 -32
  69. package/styles/pivotfieldlist/_bootstrap-dark-definition.scss +10 -0
  70. package/styles/pivotfieldlist/_bootstrap-definition.scss +10 -0
  71. package/styles/pivotfieldlist/_bootstrap4-definition.scss +11 -1
  72. package/styles/pivotfieldlist/_bootstrap5-definition.scss +15 -6
  73. package/styles/pivotfieldlist/_fabric-dark-definition.scss +10 -1
  74. package/styles/pivotfieldlist/_fabric-definition.scss +10 -0
  75. package/styles/pivotfieldlist/_fluent-definition.scss +18 -8
  76. package/styles/pivotfieldlist/_fusionnew-definition.scss +189 -0
  77. package/styles/pivotfieldlist/_highcontrast-definition.scss +10 -0
  78. package/styles/pivotfieldlist/_highcontrast-light-definition.scss +10 -0
  79. package/styles/pivotfieldlist/_layout.scss +30 -14
  80. package/styles/pivotfieldlist/_material-dark-definition.scss +10 -0
  81. package/styles/pivotfieldlist/_material-definition.scss +10 -0
  82. package/styles/pivotfieldlist/_material3-definition.scss +190 -0
  83. package/styles/pivotfieldlist/_tailwind-definition.scss +19 -10
  84. package/styles/pivotfieldlist/_theme.scss +142 -7
  85. package/styles/pivotfieldlist/bootstrap-dark.css +146 -10
  86. package/styles/pivotfieldlist/bootstrap.css +146 -10
  87. package/styles/pivotfieldlist/bootstrap4.css +147 -11
  88. package/styles/pivotfieldlist/bootstrap5-dark.css +151 -15
  89. package/styles/pivotfieldlist/bootstrap5.css +151 -15
  90. package/styles/pivotfieldlist/fabric-dark.css +146 -10
  91. package/styles/pivotfieldlist/fabric.css +146 -10
  92. package/styles/pivotfieldlist/fluent-dark.css +154 -18
  93. package/styles/pivotfieldlist/fluent.css +154 -18
  94. package/styles/pivotfieldlist/highcontrast-light.css +146 -10
  95. package/styles/pivotfieldlist/highcontrast.css +146 -10
  96. package/styles/pivotfieldlist/icons/_bootstrap-dark.scss +5 -0
  97. package/styles/pivotfieldlist/icons/_bootstrap.scss +5 -0
  98. package/styles/pivotfieldlist/icons/_bootstrap4.scss +5 -0
  99. package/styles/pivotfieldlist/icons/_bootstrap5.scss +5 -0
  100. package/styles/pivotfieldlist/icons/_fabric-dark.scss +5 -0
  101. package/styles/pivotfieldlist/icons/_fabric.scss +5 -0
  102. package/styles/pivotfieldlist/icons/_fluent.scss +5 -0
  103. package/styles/pivotfieldlist/icons/_fusionnew.scss +352 -0
  104. package/styles/pivotfieldlist/icons/_highcontrast-light.scss +5 -0
  105. package/styles/pivotfieldlist/icons/_highcontrast.scss +5 -0
  106. package/styles/pivotfieldlist/icons/_material-dark.scss +5 -0
  107. package/styles/pivotfieldlist/icons/_material.scss +4 -0
  108. package/styles/pivotfieldlist/icons/_material3.scss +352 -0
  109. package/styles/pivotfieldlist/icons/_tailwind-dark.scss +4 -0
  110. package/styles/pivotfieldlist/icons/_tailwind.scss +4 -0
  111. package/styles/pivotfieldlist/material-dark.css +146 -10
  112. package/styles/pivotfieldlist/material.css +146 -10
  113. package/styles/pivotfieldlist/tailwind-dark.css +155 -21
  114. package/styles/pivotfieldlist/tailwind.css +156 -21
  115. package/styles/pivotview/_bootstrap-dark-definition.scss +4 -2
  116. package/styles/pivotview/_bootstrap-definition.scss +4 -2
  117. package/styles/pivotview/_bootstrap4-definition.scss +4 -2
  118. package/styles/pivotview/_bootstrap5-definition.scss +9 -8
  119. package/styles/pivotview/_fabric-dark-definition.scss +4 -1
  120. package/styles/pivotview/_fabric-definition.scss +4 -2
  121. package/styles/pivotview/_fluent-definition.scss +11 -9
  122. package/styles/pivotview/_fusionnew-definition.scss +131 -0
  123. package/styles/pivotview/_highcontrast-definition.scss +4 -2
  124. package/styles/pivotview/_highcontrast-light-definition.scss +4 -2
  125. package/styles/pivotview/_layout.scss +3 -17
  126. package/styles/pivotview/_material-dark-definition.scss +4 -1
  127. package/styles/pivotview/_material-definition.scss +4 -2
  128. package/styles/pivotview/_material3-definition.scss +131 -0
  129. package/styles/pivotview/_tailwind-definition.scss +8 -5
  130. package/styles/pivotview/_theme.scss +47 -27
  131. package/styles/pivotview/bootstrap-dark.css +19 -22
  132. package/styles/pivotview/bootstrap.css +19 -22
  133. package/styles/pivotview/bootstrap4.css +19 -25
  134. package/styles/pivotview/bootstrap5-dark.css +58 -30
  135. package/styles/pivotview/bootstrap5.css +58 -30
  136. package/styles/pivotview/fabric-dark.css +19 -22
  137. package/styles/pivotview/fabric.css +19 -22
  138. package/styles/pivotview/fluent-dark.css +29 -31
  139. package/styles/pivotview/fluent.css +29 -31
  140. package/styles/pivotview/highcontrast-light.css +19 -22
  141. package/styles/pivotview/highcontrast.css +19 -22
  142. package/styles/pivotview/icons/_fusionnew.scss +183 -0
  143. package/styles/pivotview/icons/_material3.scss +183 -0
  144. package/styles/pivotview/material-dark.css +19 -22
  145. package/styles/pivotview/material.css +19 -22
  146. package/styles/pivotview/tailwind-dark.css +27 -31
  147. package/styles/pivotview/tailwind.css +27 -31
  148. package/styles/tailwind-dark.css +182 -52
  149. package/styles/tailwind.css +183 -52
@@ -54,6 +54,7 @@ var Toolbar = /** @class */ (function () {
54
54
  locale: this.parent.locale,
55
55
  items: this.getItems(),
56
56
  allowKeyboard: false,
57
+ cssClass: this.parent.cssClass,
57
58
  width: !this.parent.gridSettings.allowAutoResizing ? (this.parent.grid ? (this.parent.getGridWidthAsNumber() - 2) : (this.parent.getWidthAsNumber() - 2)) : 'auto'
58
59
  });
59
60
  this.toolbar.isStringTemplate = true;
@@ -146,7 +147,7 @@ var Toolbar = /** @class */ (function () {
146
147
  var toDisable = this.parent.displayOption.view === 'Chart';
147
148
  items.push({
148
149
  prefixIcon: cls.TOOLBAR_GRID + ' ' + cls.ICON, tooltipText: this.parent.localeObj.getConstant('grid'),
149
- id: this.parent.element.id + 'grid', cssClass: toDisable ? cls.MENU_DISABLE : '',
150
+ id: this.parent.element.id + 'grid', cssClass: (toDisable ? cls.MENU_DISABLE : '') + (this.parent.cssClass ? (' ' + this.parent.cssClass) : ''),
150
151
  click: this.menuItemClick.bind(this)
151
152
  });
152
153
  break;
@@ -154,7 +155,7 @@ var Toolbar = /** @class */ (function () {
154
155
  var validTypes = (this.parent.displayOption.view === 'Table');
155
156
  items.push({
156
157
  template: '<ul id="' + this.parent.element.id + 'chart_menu"></ul>',
157
- id: this.parent.element.id + 'chartmenu', cssClass: validTypes ? cls.MENU_DISABLE : ''
158
+ id: this.parent.element.id + 'chartmenu', cssClass: (validTypes ? cls.MENU_DISABLE : '') + (this.parent.cssClass ? (' ' + this.parent.cssClass) : '')
158
159
  });
159
160
  break;
160
161
  case 'MDX':
@@ -263,7 +264,7 @@ var Toolbar = /** @class */ (function () {
263
264
  Toolbar.prototype.saveReport = function (args) {
264
265
  if (this.currentReport && this.currentReport !== '' && args.item.id === (this.parent.element.id + 'save')) {
265
266
  var saveArgs = {
266
- report: this.parent.getPersistData(),
267
+ report: this.getCurrentReport(),
267
268
  reportName: this.currentReport
268
269
  };
269
270
  this.parent.actionObj.actionName = this.parent.getActionCompleteName();
@@ -521,7 +522,7 @@ var Toolbar = /** @class */ (function () {
521
522
  return;
522
523
  }
523
524
  var saveArgs = {
524
- report: _this_2.parent.getPersistData(),
525
+ report: _this_2.getCurrentReport(),
525
526
  reportName: reportInput.value
526
527
  };
527
528
  var actionInfo = {
@@ -557,7 +558,7 @@ var Toolbar = /** @class */ (function () {
557
558
  }
558
559
  _this_3.parent.trigger(events.newReport);
559
560
  var saveArgs = {
560
- report: _this_3.parent.getPersistData(),
561
+ report: _this_3.getCurrentReport(),
561
562
  reportName: reportInput.value
562
563
  };
563
564
  var actionInfo = {
@@ -648,14 +649,14 @@ var Toolbar = /** @class */ (function () {
648
649
  {
649
650
  buttonModel: {
650
651
  content: this.parent.localeObj.getConstant('yes'), isPrimary: true,
651
- cssClass: cls.OK_BUTTON_CLASS
652
+ cssClass: cls.OK_BUTTON_CLASS + (this.parent.cssClass ? (' ' + this.parent.cssClass) : '')
652
653
  },
653
654
  click: this.okButtonClick.bind(this)
654
655
  },
655
656
  {
656
657
  buttonModel: {
657
658
  content: this.parent.localeObj.getConstant('no'),
658
- cssClass: cls.CANCEL_BUTTON_CLASS
659
+ cssClass: cls.CANCEL_BUTTON_CLASS + (this.parent.cssClass ? (' ' + this.parent.cssClass) : '')
659
660
  },
660
661
  click: this.cancelButtonClick.bind(this)
661
662
  }
@@ -701,7 +702,7 @@ var Toolbar = /** @class */ (function () {
701
702
  else if (this.action === 'New' || (this.action !== 'Save' && this.action !== 'Rename' && this.action !== 'New')) {
702
703
  if (this.currentReport && this.currentReport !== '' && this.parent.isModified) {
703
704
  var saveArgs = {
704
- report: this.parent.getPersistData(),
705
+ report: this.getCurrentReport(),
705
706
  reportName: this.currentReport
706
707
  };
707
708
  var actionInfo = {
@@ -726,7 +727,7 @@ var Toolbar = /** @class */ (function () {
726
727
  else if (this.action === 'New') {
727
728
  this.parent.trigger(events.newReport);
728
729
  var saveArgs = {
729
- report: this.parent.getPersistData(),
730
+ report: this.getCurrentReport(),
730
731
  reportName: this.currentReport
731
732
  };
732
733
  this.parent.trigger(events.saveReport, saveArgs);
@@ -737,7 +738,7 @@ var Toolbar = /** @class */ (function () {
737
738
  }
738
739
  else if (this.action === 'Save') {
739
740
  var saveArgs = {
740
- report: this.parent.getPersistData(),
741
+ report: this.getCurrentReport(),
741
742
  reportName: this.currentReport
742
743
  };
743
744
  this.parent.trigger(events.saveReport, saveArgs);
@@ -1036,6 +1037,15 @@ var Toolbar = /** @class */ (function () {
1036
1037
  }
1037
1038
  this.updateItemElements();
1038
1039
  };
1040
+ Toolbar.prototype.getCurrentReport = function () {
1041
+ var reportStr = this.parent.getPersistData();
1042
+ if (this.parent.dataSourceSettings.type === 'CSV') {
1043
+ var reportSettings = JSON.parse(reportStr);
1044
+ reportSettings.dataSourceSettings.dataSource.splice(0, 0, this.parent.engineModule.fields);
1045
+ reportStr = JSON.stringify(reportSettings);
1046
+ }
1047
+ return reportStr;
1048
+ };
1039
1049
  Toolbar.prototype.updateItemElements = function () {
1040
1050
  var itemElements = [].slice.call(this.toolbar.element.querySelectorAll('.e-toolbar-item'));
1041
1051
  for (var _i = 0, itemElements_1 = itemElements; _i < itemElements_1.length; _i++) {
@@ -1068,7 +1078,7 @@ var Toolbar = /** @class */ (function () {
1068
1078
  this.parent.element.appendChild(inputCheckbox);
1069
1079
  var checkbox = new CheckBox({
1070
1080
  label: this.parent.localeObj.getConstant('multipleAxes'),
1071
- cssClass: 'e-multipleAxes',
1081
+ cssClass: 'e-multipleAxes' + (this.parent.cssClass ? (' ' + this.parent.cssClass) : ''),
1072
1082
  checked: this.parent.chartSettings.enableMultipleAxis,
1073
1083
  change: function (args) {
1074
1084
  document.getElementById(_this_1.parent.element.id + '_' + 'multipleAxes').click();
@@ -1100,7 +1110,7 @@ var Toolbar = /** @class */ (function () {
1100
1110
  var checkbox = new CheckBox({
1101
1111
  label: this.parent.localeObj.getConstant('showLegend'),
1102
1112
  checked: this.getLableState(this.parent.chartSettings.chartSeries.type),
1103
- cssClass: 'e-showLegend',
1113
+ cssClass: 'e-showLegend' + (this.parent.cssClass ? (' ' + this.parent.cssClass) : ''),
1104
1114
  change: function (args) {
1105
1115
  document.getElementById(_this_1.parent.element.id + '_' + 'showLegend').click();
1106
1116
  },
@@ -1474,11 +1484,11 @@ var Toolbar = /** @class */ (function () {
1474
1484
  buttons: [
1475
1485
  {
1476
1486
  click: function () { _this_1.chartTypeDialogUpdate(); },
1477
- buttonModel: { cssClass: cls.OK_BUTTON_CLASS, content: this.parent.localeObj.getConstant('ok'), isPrimary: true },
1487
+ buttonModel: { cssClass: cls.OK_BUTTON_CLASS + (this.parent.cssClass ? (' ' + this.parent.cssClass) : ''), content: this.parent.localeObj.getConstant('ok'), isPrimary: true },
1478
1488
  },
1479
1489
  {
1480
1490
  click: function () { _this_1.removeDialog(); },
1481
- buttonModel: { cssClass: cls.CANCEL_BUTTON_CLASS, content: this.parent.localeObj.getConstant('cancel') }
1491
+ buttonModel: { cssClass: cls.CANCEL_BUTTON_CLASS + (this.parent.cssClass ? (' ' + this.parent.cssClass) : ''), content: this.parent.localeObj.getConstant('cancel') }
1482
1492
  }
1483
1493
  ],
1484
1494
  closeOnEscape: true,
@@ -1620,7 +1630,7 @@ var Toolbar = /** @class */ (function () {
1620
1630
  var _this_1 = this;
1621
1631
  var checkbox = new CheckBox({
1622
1632
  label: this.parent.localeObj.getConstant('multipleAxes'),
1623
- cssClass: 'e-dialog-multiple-axis',
1633
+ cssClass: 'e-dialog-multiple-axis' + (this.parent.cssClass ? (' ' + this.parent.cssClass) : ''),
1624
1634
  checked: this.parent.chartSettings.enableMultipleAxis ? this.parent.chartSettings.enableMultipleAxis : false,
1625
1635
  change: function (args) {
1626
1636
  getInstance(select('#' + _this_1.parent.element.id + '_AxisModeOption'), DropDownList).enabled = args.checked;
@@ -1632,7 +1642,7 @@ var Toolbar = /** @class */ (function () {
1632
1642
  label: this.parent.localeObj.getConstant('showLegend'),
1633
1643
  checked: this.getLableState(this.parent.chartSettings.chartSeries.type),
1634
1644
  change: function () { _this_1.chartLableState = true; },
1635
- cssClass: 'e-dialog-show-legend',
1645
+ cssClass: 'e-dialog-show-legend' + (this.parent.cssClass ? (' ' + this.parent.cssClass) : ''),
1636
1646
  enableRtl: this.parent.enableRtl,
1637
1647
  locale: this.parent.locale
1638
1648
  });
@@ -424,6 +424,9 @@ var PivotChart = /** @class */ (function () {
424
424
  if (this.persistSettings.chartSeries && this.persistSettings.chartSeries.emptyPointSettings) {
425
425
  currentSeries.emptyPointSettings = this.persistSettings.chartSeries.emptyPointSettings;
426
426
  }
427
+ if (!currentSeries.emptyPointSettings) {
428
+ currentSeries.emptyPointSettings = { mode: 'Zero' };
429
+ }
427
430
  this.chartSeries = this.chartSeries.concat(currentSeries);
428
431
  }
429
432
  }
@@ -86,6 +86,11 @@ export interface PivotFieldListModel extends ComponentModel{
86
86
  */
87
87
  allowCalculatedField?: boolean;
88
88
 
89
+ /**
90
+ * It enables the search option in the field list UI, which can be used to search specific fields at runtime.
91
+ */
92
+ enableFieldSearching?: boolean;
93
+
89
94
  /**
90
95
  * Allows you to create a pivot button with "Values" as a caption used to display in the field list UI.
91
96
  * It helps you to plot the value fields to either column or row axis during runtime.
@@ -190,6 +190,10 @@ export declare class PivotFieldList extends Component<HTMLElement> implements IN
190
190
  * @default false
191
191
  */
192
192
  allowCalculatedField: boolean;
193
+ /**
194
+ * It enables the search option in the field list UI, which can be used to search specific fields at runtime.
195
+ */
196
+ enableFieldSearching: boolean;
193
197
  /**
194
198
  * Allows you to create a pivot button with "Values" as a caption used to display in the field list UI.
195
199
  * It helps you to plot the value fields to either column or row axis during runtime.
@@ -635,6 +635,8 @@ var PivotFieldList = /** @class */ (function (_super) {
635
635
  }
636
636
  requireRefresh = true;
637
637
  break;
638
+ case 'enableFieldSearching':
639
+ this.refresh();
638
640
  }
639
641
  if (requireRefresh) {
640
642
  this.fieldListRender();
@@ -678,7 +680,7 @@ var PivotFieldList = /** @class */ (function (_super) {
678
680
  customProperties.enableValueSorting = _this.staticPivotGridModule ?
679
681
  _this.staticPivotGridModule.enableValueSorting : _this.enableValueSorting;
680
682
  if (_this.dataSourceSettings.mode !== 'Server') {
681
- _this.engineModule.renderEngine(_this.dataSourceSettings, customProperties, _this.getValueCellInfo.bind(_this), _this.getHeaderSortInfo.bind(_this));
683
+ _this.engineModule.renderEngine(_this.dataSourceSettings, customProperties, _this.aggregateCellInfo ? _this.getValueCellInfo.bind(_this) : undefined, _this.onHeadersSort ? _this.getHeaderSortInfo.bind(_this) : undefined);
682
684
  }
683
685
  _this.pivotFieldList = _this.engineModule.fieldList;
684
686
  var eventArgs = {
@@ -694,7 +696,7 @@ var PivotFieldList = /** @class */ (function (_super) {
694
696
  });
695
697
  }
696
698
  else if (_this.dataType === 'olap') {
697
- _this.olapEngineModule.renderEngine(_this.dataSourceSettings, _this.frameCustomProperties(_this.olapEngineModule.fieldListData, _this.olapEngineModule.fieldList), _this.getHeaderSortInfo.bind(_this));
699
+ _this.olapEngineModule.renderEngine(_this.dataSourceSettings, _this.frameCustomProperties(_this.olapEngineModule.fieldListData, _this.olapEngineModule.fieldList), _this.onHeadersSort ? _this.getHeaderSortInfo.bind(_this) : undefined);
698
700
  _this.pivotFieldList = _this.olapEngineModule.fieldList;
699
701
  var eventArgs = {
700
702
  pivotFieldList: _this.pivotFieldList,
@@ -772,10 +774,10 @@ var PivotFieldList = /** @class */ (function (_super) {
772
774
  this.fieldListSpinnerElement = this.element.querySelector('.e-pivotfieldlist-container');
773
775
  }
774
776
  if (this.spinnerTemplate) {
775
- createSpinner({ target: this.fieldListSpinnerElement, template: this.spinnerTemplate }, this.createElement);
777
+ createSpinner({ target: this.fieldListSpinnerElement, template: this.spinnerTemplate, cssClass: this.cssClass ? this.cssClass : undefined }, this.createElement);
776
778
  }
777
779
  else {
778
- createSpinner({ target: this.fieldListSpinnerElement }, this.createElement);
780
+ createSpinner({ target: this.fieldListSpinnerElement, cssClass: this.cssClass ? this.cssClass : undefined }, this.createElement);
779
781
  }
780
782
  var args;
781
783
  args = {
@@ -935,7 +937,7 @@ var PivotFieldList = /** @class */ (function (_super) {
935
937
  pivot.lastFilterInfo = {};
936
938
  }
937
939
  else {
938
- pivot.engineModule.renderEngine(pivot.dataSourceSettings, customProperties, pivot.getValueCellInfo.bind(pivot), pivot.getHeaderSortInfo.bind(pivot));
940
+ pivot.engineModule.renderEngine(pivot.dataSourceSettings, customProperties, pivot.aggregateCellInfo ? pivot.getValueCellInfo.bind(pivot) : undefined, pivot.onHeadersSort ? pivot.getHeaderSortInfo.bind(pivot) : undefined);
939
941
  }
940
942
  }
941
943
  }
@@ -1033,7 +1035,7 @@ var PivotFieldList = /** @class */ (function (_super) {
1033
1035
  }
1034
1036
  }
1035
1037
  else {
1036
- pivot.olapEngineModule.renderEngine(pivot.dataSourceSettings, customProperties, pivot.getHeaderSortInfo.bind(pivot));
1038
+ pivot.olapEngineModule.renderEngine(pivot.dataSourceSettings, customProperties, pivot.onHeadersSort ? pivot.getHeaderSortInfo.bind(pivot) : undefined);
1037
1039
  }
1038
1040
  pivot.lastSortInfo = {};
1039
1041
  pivot.lastAggregationInfo = {};
@@ -1282,6 +1284,9 @@ var PivotFieldList = /** @class */ (function (_super) {
1282
1284
  __decorate([
1283
1285
  Property(false)
1284
1286
  ], PivotFieldList.prototype, "allowCalculatedField", void 0);
1287
+ __decorate([
1288
+ Property(false)
1289
+ ], PivotFieldList.prototype, "enableFieldSearching", void 0);
1285
1290
  __decorate([
1286
1291
  Property(false)
1287
1292
  ], PivotFieldList.prototype, "showValuesButton", void 0);
@@ -43,6 +43,12 @@ var DialogRenderer = /** @class */ (function () {
43
43
  if (this.parent.cssClass) {
44
44
  addClass([fieldListWrappper], this.parent.cssClass);
45
45
  }
46
+ if (this.parent.enableFieldSearching) {
47
+ addClass([fieldListWrappper], cls.FIELD_LIST_SEARCH_MODE_CLASS);
48
+ }
49
+ else {
50
+ removeClass([fieldListWrappper], cls.FIELD_LIST_SEARCH_MODE_CLASS);
51
+ }
46
52
  this.parentElement = createElement('div', { className: cls.CONTAINER_CLASS });
47
53
  this.parent.element.appendChild(fieldListWrappper);
48
54
  if (this.parent.isAdaptive) {
@@ -87,13 +93,14 @@ var DialogRenderer = /** @class */ (function () {
87
93
  checked: true,
88
94
  enableRtl: this.parent.enableRtl,
89
95
  locale: this.parent.locale,
90
- change: this.onCheckChange.bind(this)
96
+ change: this.onCheckChange.bind(this),
97
+ cssClass: this.parent.cssClass
91
98
  });
92
99
  this.deferUpdateCheckBox.isStringTemplate = true;
93
100
  this.deferUpdateCheckBox.appendTo('#' + this.parent.element.id + 'DeferUpdateCheckBox');
94
101
  this.deferUpdateApplyButton = new Button({
95
102
  cssClass: cls.DEFER_APPLY_BUTTON + ' ' + cls.DEFER_UPDATE_BUTTON + (this.parent.renderMode === 'Popup' ?
96
- (' ' + cls.BUTTON_FLAT_CLASS) : ''),
103
+ (' ' + cls.BUTTON_FLAT_CLASS) : '') + (this.parent.cssClass ? (' ' + this.parent.cssClass) : ''),
97
104
  content: this.parent.localeObj.getConstant('apply'),
98
105
  enableRtl: this.parent.enableRtl,
99
106
  locale: this.parent.locale,
@@ -106,7 +113,7 @@ var DialogRenderer = /** @class */ (function () {
106
113
  }
107
114
  this.deferUpdateCancelButton = new Button({
108
115
  cssClass: cls.DEFER_CANCEL_BUTTON + ' ' + cls.CANCEL_BUTTON_CLASS + (this.parent.renderMode === 'Popup' ?
109
- (' ' + cls.BUTTON_FLAT_CLASS) : ''),
116
+ (' ' + cls.BUTTON_FLAT_CLASS) : '') + (this.parent.cssClass ? (' ' + this.parent.cssClass) : ''),
110
117
  content: this.parent.allowDeferLayoutUpdate ? this.parent.localeObj.getConstant('cancel') :
111
118
  this.parent.localeObj.getConstant('close'),
112
119
  enableRtl: this.parent.enableRtl, isPrimary: !this.parent.allowDeferLayoutUpdate, locale: this.parent.locale
@@ -224,7 +231,7 @@ var DialogRenderer = /** @class */ (function () {
224
231
  var buttons = [{
225
232
  click: this.showFieldListDialog.bind(this),
226
233
  buttonModel: {
227
- cssClass: cls.ADAPTIVE_FIELD_LIST_BUTTON_CLASS + ' ' + cls.BUTTON_SMALL_CLASS + ' ' + cls.BUTTON_ROUND_CLASS,
234
+ cssClass: cls.ADAPTIVE_FIELD_LIST_BUTTON_CLASS + ' ' + cls.BUTTON_SMALL_CLASS + ' ' + cls.BUTTON_ROUND_CLASS + (this.parent.cssClass ? (' ' + this.parent.cssClass) : ''),
228
235
  iconCss: cls.ICON + ' ' + cls.ADD_ICON_CLASS,
229
236
  isPrimary: true
230
237
  }
@@ -232,7 +239,7 @@ var DialogRenderer = /** @class */ (function () {
232
239
  click: this.showCalculatedField.bind(this),
233
240
  buttonModel: {
234
241
  cssClass: cls.ADAPTIVE_CALCULATED_FIELD_BUTTON_CLASS +
235
- ' ' + cls.BUTTON_SMALL_CLASS + ' ' + cls.BUTTON_ROUND_CLASS + ' ' + cls.ICON_DISABLE,
242
+ ' ' + cls.BUTTON_SMALL_CLASS + ' ' + cls.BUTTON_ROUND_CLASS + ' ' + cls.ICON_DISABLE + (this.parent.cssClass ? (' ' + this.parent.cssClass) : ''),
236
243
  iconCss: cls.ICON + ' ' + cls.ADD_ICON_CLASS, enableRtl: this.parent.enableRtl,
237
244
  isPrimary: true
238
245
  }
@@ -370,7 +377,8 @@ var DialogRenderer = /** @class */ (function () {
370
377
  height: '100%',
371
378
  enableRtl: this.parent.enableRtl,
372
379
  locale: this.parent.locale,
373
- selected: this.tabSelect.bind(this)
380
+ selected: this.tabSelect.bind(this),
381
+ cssClass: this.parent.cssClass
374
382
  });
375
383
  if (this.parent.renderMode === 'Fixed') {
376
384
  layoutFooter.appendChild(this.createAddButton());
@@ -416,7 +424,7 @@ var DialogRenderer = /** @class */ (function () {
416
424
  }
417
425
  });
418
426
  var calculateField = new Button({
419
- cssClass: cls.CALCULATED_FIELD_CLASS + ' ' + cls.ICON_DISABLE,
427
+ cssClass: cls.CALCULATED_FIELD_CLASS + ' ' + cls.ICON_DISABLE + (this.parent.cssClass ? (' ' + this.parent.cssClass) : ''),
420
428
  content: this.parent.localeObj.getConstant('CalculatedField'),
421
429
  enableRtl: this.parent.enableRtl, locale: this.parent.locale
422
430
  });
@@ -436,12 +444,12 @@ var DialogRenderer = /** @class */ (function () {
436
444
  var calculatedButton = createElement('div', {});
437
445
  var calculateField = new Button({
438
446
  cssClass: cls.ADAPTIVE_CALCULATED_FIELD_BUTTON_CLASS +
439
- ' ' + cls.BUTTON_SMALL_CLASS + ' ' + cls.BUTTON_ROUND_CLASS + ' ' + cls.ICON_DISABLE,
447
+ ' ' + cls.BUTTON_SMALL_CLASS + ' ' + cls.BUTTON_ROUND_CLASS + ' ' + cls.ICON_DISABLE + (this.parent.cssClass ? (' ' + this.parent.cssClass) : ''),
440
448
  iconCss: cls.ICON + ' ' + cls.ADD_ICON_CLASS,
441
449
  enableRtl: this.parent.enableRtl, locale: this.parent.locale
442
450
  });
443
451
  var fieldList = new Button({
444
- cssClass: cls.ADAPTIVE_FIELD_LIST_BUTTON_CLASS + ' ' + cls.BUTTON_SMALL_CLASS + ' ' + cls.BUTTON_ROUND_CLASS,
452
+ cssClass: cls.ADAPTIVE_FIELD_LIST_BUTTON_CLASS + ' ' + cls.BUTTON_SMALL_CLASS + ' ' + cls.BUTTON_ROUND_CLASS + (this.parent.cssClass ? (' ' + this.parent.cssClass) : ''),
445
453
  iconCss: cls.ICON + ' ' + cls.ADD_ICON_CLASS,
446
454
  enableRtl: this.parent.enableRtl, locale: this.parent.locale
447
455
  });
@@ -15,6 +15,10 @@ export declare class TreeViewRenderer implements IAction {
15
15
  private editorSearch;
16
16
  private selectedNodes;
17
17
  private fieldListSort;
18
+ private fieldSearch;
19
+ private nonSearchList;
20
+ private isSearching;
21
+ private parentIDs;
18
22
  /** Constructor for render module
19
23
  * @param {PivotFieldList} parent - Instance of field list.
20
24
  */
@@ -4,7 +4,7 @@ import * as cls from '../../common/base/css-constant';
4
4
  import * as events from '../../common/base/constant';
5
5
  import { TreeView } from '@syncfusion/ej2-navigations';
6
6
  import { Dialog } from '@syncfusion/ej2-popups';
7
- import { MaskedTextBox } from '@syncfusion/ej2-inputs';
7
+ import { MaskedTextBox, TextBox } from '@syncfusion/ej2-inputs';
8
8
  import { PivotUtil } from '../../base/util';
9
9
  /**
10
10
  * Module to render Field List
@@ -16,6 +16,8 @@ var TreeViewRenderer = /** @class */ (function () {
16
16
  */
17
17
  function TreeViewRenderer(parent) {
18
18
  this.selectedNodes = [];
19
+ this.isSearching = false;
20
+ this.parentIDs = [];
19
21
  this.parent = parent;
20
22
  this.addEventListener();
21
23
  }
@@ -36,15 +38,42 @@ var TreeViewRenderer = /** @class */ (function () {
36
38
  className: cls.FIELD_HEADER_CLASS,
37
39
  innerHTML: this.parent.localeObj.getConstant('allFields')
38
40
  });
39
- var treeOuterDiv = createElement('div', { className: cls.FIELD_LIST_TREE_CLASS + '-outer-div' });
41
+ var searchWrapper = createElement('div', {
42
+ id: this.parent.element.id + '_SearchDiv', attrs: { 'tabindex': '-1' },
43
+ className: cls.FIELD_LIST_SEARCH_CLASS
44
+ });
45
+ var searchInput = createElement('input', { attrs: { 'type': 'text' } });
46
+ searchWrapper.appendChild(searchInput);
47
+ this.fieldSearch = new TextBox({
48
+ placeholder: this.parent.localeObj.getConstant('search'),
49
+ enableRtl: this.parent.enableRtl,
50
+ locale: this.parent.locale,
51
+ cssClass: cls.FIELD_LIST_SEARCH_INPUT_CLASS + (this.parent.cssClass ? (' ' + this.parent.cssClass) : ''),
52
+ input: this.textChange.bind(this),
53
+ showClearButton: true
54
+ });
55
+ this.fieldSearch.isStringTemplate = true;
56
+ this.fieldSearch.appendTo(searchInput);
57
+ this.fieldSearch.addIcon('append', cls.FIELD_LIST_SEARCH_ICON_CLASS + ' ' + cls.ICON);
58
+ var promptDiv = createElement('div', {
59
+ className: cls.EMPTY_MEMBER_CLASS + ' ' + cls.ICON_DISABLE,
60
+ innerHTML: this.parent.localeObj.getConstant('noMatches')
61
+ });
62
+ var treeOuterDiv = createElement('div', {
63
+ className: cls.FIELD_LIST_TREE_OUTER_DIV_CLASS + ' ' + cls.TREE_CONTAINER
64
+ });
40
65
  this.treeViewElement = createElement('div', {
41
66
  id: this.parent.element.id + '_TreeView',
42
67
  className: cls.FIELD_LIST_CLASS + ' ' + (this.parent.dataType === 'olap' ? cls.OLAP_FIELD_LIST_CLASS : '')
43
68
  });
44
- var fieldHeaderWrappper = createElement('div', { className: 'e-field-header-container' });
69
+ var fieldHeaderWrappper = createElement('div', { className: cls.FIELD_HEADER_CONTAINER_CLASS });
45
70
  fieldHeaderWrappper.appendChild(treeHeader);
46
71
  fieldTable.appendChild(fieldHeaderWrappper);
47
72
  this.updateSortElements(fieldHeaderWrappper);
73
+ if (this.parent.enableFieldSearching) {
74
+ fieldTable.appendChild(searchWrapper);
75
+ fieldTable.appendChild(promptDiv);
76
+ }
48
77
  treeOuterDiv.appendChild(this.treeViewElement);
49
78
  fieldTable.appendChild(treeOuterDiv);
50
79
  this.parentElement.appendChild(fieldTable);
@@ -168,6 +197,40 @@ var TreeViewRenderer = /** @class */ (function () {
168
197
  if (args.node.querySelector('.' + cls.NODE_CHECK_CLASS)) {
169
198
  addClass([args.node.querySelector('.' + cls.LIST_TEXT_CLASS)], cls.LIST_SELECT_CLASS);
170
199
  }
200
+ if (this.parent.enableFieldSearching && this.isSearching) {
201
+ var liElement = args.node;
202
+ if (this.parent.dataType === 'olap') {
203
+ var id = liElement.getAttribute('data-uid');
204
+ var searchItem = this.parent.pivotCommon.eventBase.searchListItem;
205
+ for (var i = 0; i < this.parentIDs.length; i++) {
206
+ if (id === this.parentIDs[i]) {
207
+ addClass([liElement], cls.ICON_DISABLE);
208
+ }
209
+ for (var _i = 0, searchItem_1 = searchItem; _i < searchItem_1.length; _i++) {
210
+ var li2 = searchItem_1[_i];
211
+ var parentID = this.parent.pivotCommon.eventBase.getParentIDs(this.fieldTable, li2.getAttribute('data-uid'), []);
212
+ if (PivotUtil.inArray(id, parentID) > -1) {
213
+ removeClass([liElement], cls.ICON_DISABLE);
214
+ break;
215
+ }
216
+ }
217
+ }
218
+ }
219
+ else {
220
+ for (var i = 0; i < this.nonSearchList.length; i++) {
221
+ if (liElement.textContent === this.nonSearchList[i].textContent) {
222
+ addClass([liElement], cls.ICON_DISABLE);
223
+ break;
224
+ }
225
+ else {
226
+ if (liElement.innerText === this.nonSearchList[i].textContent) {
227
+ addClass([liElement], cls.ICON_DISABLE);
228
+ break;
229
+ }
230
+ }
231
+ }
232
+ }
233
+ }
171
234
  };
172
235
  TreeViewRenderer.prototype.updateOlapTreeNode = function (args) {
173
236
  var allowDrag = false;
@@ -223,12 +286,12 @@ var TreeViewRenderer = /** @class */ (function () {
223
286
  buttons: [{
224
287
  click: this.closeTreeDialog.bind(this),
225
288
  buttonModel: {
226
- cssClass: cls.CANCEL_BUTTON_CLASS, content: this.parent.localeObj.getConstant('cancel')
289
+ cssClass: cls.CANCEL_BUTTON_CLASS + (this.parent.cssClass ? (' ' + this.parent.cssClass) : ''), content: this.parent.localeObj.getConstant('cancel')
227
290
  }
228
291
  }, {
229
292
  click: this.onFieldAdd.bind(this),
230
293
  buttonModel: {
231
- cssClass: cls.OK_BUTTON_CLASS, content: this.parent.localeObj.getConstant('add'),
294
+ cssClass: cls.OK_BUTTON_CLASS + (this.parent.cssClass ? (' ' + this.parent.cssClass) : ''), content: this.parent.localeObj.getConstant('add'),
232
295
  isPrimary: true
233
296
  }
234
297
  }],
@@ -257,7 +320,7 @@ var TreeViewRenderer = /** @class */ (function () {
257
320
  });
258
321
  var editorSearch = createElement('input', { attrs: { 'type': 'text' } });
259
322
  searchWrapper.appendChild(editorSearch);
260
- var treeOuterDiv = createElement('div', { className: cls.EDITOR_TREE_CONTAINER_CLASS + '-outer-div' });
323
+ var treeOuterDiv = createElement('div', { className: cls.FIELD_LIST_TREE_OUTER_DIV_CLASS });
261
324
  var treeViewContainer = createElement('div', {
262
325
  className: cls.EDITOR_TREE_CONTAINER_CLASS + ' ' + (this.parent.dataType === 'olap' ? 'e-olap-field-list-tree' : '')
263
326
  });
@@ -267,7 +330,7 @@ var TreeViewRenderer = /** @class */ (function () {
267
330
  placeholder: this.parent.localeObj.getConstant('search'),
268
331
  enableRtl: this.parent.enableRtl,
269
332
  locale: this.parent.locale,
270
- cssClass: cls.EDITOR_SEARCH_CLASS,
333
+ cssClass: cls.EDITOR_SEARCH_CLASS + (this.parent.cssClass ? (' ' + this.parent.cssClass) : ''),
271
334
  change: this.textChange.bind(this)
272
335
  });
273
336
  this.editorSearch.isStringTemplate = true;
@@ -303,14 +366,41 @@ var TreeViewRenderer = /** @class */ (function () {
303
366
  };
304
367
  TreeViewRenderer.prototype.textChange = function (e) {
305
368
  this.parent.pivotCommon.eventBase.searchTreeNodes(e, this.fieldTable, true);
306
- var promptDiv = this.fieldDialog.element.querySelector('.' + cls.EMPTY_MEMBER_CLASS);
369
+ var promptDiv;
370
+ var treeOuterDiv;
371
+ if (this.parent.isAdaptive) {
372
+ promptDiv = this.fieldDialog.element.querySelector('.' + cls.EMPTY_MEMBER_CLASS);
373
+ }
374
+ else {
375
+ promptDiv = this.parentElement.querySelector('.' + cls.EMPTY_MEMBER_CLASS);
376
+ treeOuterDiv = this.parentElement.querySelector('.' + cls.TREE_CONTAINER);
377
+ }
307
378
  var liList = [].slice.call(this.fieldTable.element.querySelectorAll('li'));
308
379
  var disabledList = [].slice.call(this.fieldTable.element.querySelectorAll('li.' + cls.ICON_DISABLE));
309
380
  if (liList.length === disabledList.length) {
310
381
  removeClass([promptDiv], cls.ICON_DISABLE);
382
+ if (!this.parent.isAdaptive) {
383
+ addClass([treeOuterDiv], cls.ICON_DISABLE);
384
+ removeClass([treeOuterDiv], cls.FIELD_LIST_TREE_OUTER_DIV_SEARCH_CLASS);
385
+ }
311
386
  }
312
387
  else {
313
388
  addClass([promptDiv], cls.ICON_DISABLE);
389
+ if (!this.parent.isAdaptive) {
390
+ removeClass([treeOuterDiv], cls.ICON_DISABLE);
391
+ addClass([treeOuterDiv], cls.FIELD_LIST_TREE_OUTER_DIV_SEARCH_CLASS);
392
+ }
393
+ }
394
+ this.isSearching = disabledList.length > 0 ? true : false;
395
+ this.nonSearchList = disabledList;
396
+ if (this.parent.dataType === 'olap') {
397
+ this.parentIDs = [];
398
+ for (var i = 0; i < liList.length; i++) {
399
+ if (liList[i].classList.contains("e-level-1")) {
400
+ var id = liList[i].getAttribute('data-uid');
401
+ this.parentIDs.push(id);
402
+ }
403
+ }
314
404
  }
315
405
  };
316
406
  TreeViewRenderer.prototype.dragStart = function (args) {
@@ -965,6 +1055,10 @@ var TreeViewRenderer = /** @class */ (function () {
965
1055
  this.editorSearch.destroy();
966
1056
  this.editorSearch = null;
967
1057
  }
1058
+ if (this.fieldSearch && !this.fieldSearch.isDestroyed) {
1059
+ this.fieldSearch.destroy();
1060
+ this.fieldSearch = null;
1061
+ }
968
1062
  };
969
1063
  return TreeViewRenderer;
970
1064
  }());
@@ -67,7 +67,7 @@ var DrillThrough = /** @class */ (function () {
67
67
  var valueCaption = '';
68
68
  var aggType = '';
69
69
  var rawData = [];
70
- if (pivotValue.rowHeaders !== undefined && pivotValue.columnHeaders !== undefined && !isNullOrUndefined(pivotValue.value)) {
70
+ if (pivotValue.rowHeaders !== undefined && pivotValue.columnHeaders !== undefined) {
71
71
  if (this.parent.dataType === 'olap') {
72
72
  var tupleInfo = void 0;
73
73
  if (this.parent.dataSourceSettings.valueAxis === 'row') {
@@ -141,7 +141,7 @@ var DrillThrough = /** @class */ (function () {
141
141
  }
142
142
  }
143
143
  if (!isNullOrUndefined(rawData[k])) {
144
- var calculatedFeildValue = this.parent.engineModule.getAggregateValue([Number(indexArray[k])], colIndex, indexValue, 'calculatedfield');
144
+ var calculatedFeildValue = this.parent.engineModule.getAggregateValue([Number(indexArray[k])], colIndex, indexValue, 'calculatedfield', false);
145
145
  rawData[k][this.parent.dataSourceSettings.calculatedFieldSettings[i].name] = (isNaN(calculatedFeildValue) && isNullOrUndefined(calculatedFeildValue)) ? '#DIV/0!' : calculatedFeildValue;
146
146
  }
147
147
  }
@@ -32,6 +32,7 @@ export declare class VirtualScroll {
32
32
  private onCustomScrollbarScroll;
33
33
  private onTouchScroll;
34
34
  private update;
35
+ private enginePopulatedEventMethod;
35
36
  private setPageXY;
36
37
  private common;
37
38
  private onHorizondalScroll;