@syncfusion/ej2-pivotview 20.1.61 → 20.2.39

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 (142) hide show
  1. package/CHANGELOG.md +30 -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 +391 -157
  5. package/dist/es6/ej2-pivotview.es2015.js.map +1 -1
  6. package/dist/es6/ej2-pivotview.es5.js +403 -166
  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.js +13 -11
  16. package/src/base/olap/engine.js +14 -2
  17. package/src/base/olap/mdx-query.js +1 -1
  18. package/src/common/actions/event-base.d.ts +4 -2
  19. package/src/common/actions/event-base.js +18 -10
  20. package/src/common/actions/field-list.js +2 -1
  21. package/src/common/actions/pivot-button.js +4 -4
  22. package/src/common/base/constant.d.ts +8 -0
  23. package/src/common/base/constant.js +8 -0
  24. package/src/common/base/css-constant.d.ts +16 -0
  25. package/src/common/base/css-constant.js +16 -0
  26. package/src/common/calculatedfield/calculated-field.js +24 -15
  27. package/src/common/conditionalformatting/conditional-formatting.js +5 -5
  28. package/src/common/grouping-bar/grouping-bar.js +1 -1
  29. package/src/common/popups/aggregate-menu.js +4 -3
  30. package/src/common/popups/drillthrough-dialog.js +5 -4
  31. package/src/common/popups/error-dialog.js +1 -1
  32. package/src/common/popups/filter-dialog.js +25 -14
  33. package/src/common/popups/formatting-dialog.js +2 -2
  34. package/src/common/popups/grouping.js +14 -7
  35. package/src/common/popups/toolbar.js +11 -10
  36. package/src/pivotchart/base/pivotchart.js +16 -6
  37. package/src/pivotfieldlist/base/field-list-model.d.ts +5 -0
  38. package/src/pivotfieldlist/base/field-list.d.ts +4 -0
  39. package/src/pivotfieldlist/base/field-list.js +11 -6
  40. package/src/pivotfieldlist/renderer/dialog-renderer.js +17 -9
  41. package/src/pivotfieldlist/renderer/tree-renderer.d.ts +4 -0
  42. package/src/pivotfieldlist/renderer/tree-renderer.js +102 -8
  43. package/src/pivotview/actions/virtualscroll.d.ts +1 -0
  44. package/src/pivotview/actions/virtualscroll.js +61 -32
  45. package/src/pivotview/base/pivotview-model.d.ts +7 -0
  46. package/src/pivotview/base/pivotview.d.ts +6 -0
  47. package/src/pivotview/base/pivotview.js +25 -12
  48. package/src/pivotview/renderer/render.js +4 -1
  49. package/styles/bootstrap-dark.css +166 -33
  50. package/styles/bootstrap.css +166 -33
  51. package/styles/bootstrap4.css +167 -37
  52. package/styles/bootstrap5-dark.css +210 -46
  53. package/styles/bootstrap5.css +210 -46
  54. package/styles/fabric-dark.css +166 -33
  55. package/styles/fabric.css +166 -33
  56. package/styles/fluent-dark.css +184 -50
  57. package/styles/fluent.css +184 -50
  58. package/styles/highcontrast-light.css +166 -33
  59. package/styles/highcontrast.css +166 -33
  60. package/styles/material-dark.css +166 -33
  61. package/styles/material.css +166 -33
  62. package/styles/pivotfieldlist/_bootstrap-dark-definition.scss +10 -0
  63. package/styles/pivotfieldlist/_bootstrap-definition.scss +10 -0
  64. package/styles/pivotfieldlist/_bootstrap4-definition.scss +11 -1
  65. package/styles/pivotfieldlist/_bootstrap5-definition.scss +15 -6
  66. package/styles/pivotfieldlist/_fabric-dark-definition.scss +10 -1
  67. package/styles/pivotfieldlist/_fabric-definition.scss +10 -0
  68. package/styles/pivotfieldlist/_fluent-definition.scss +18 -8
  69. package/styles/pivotfieldlist/_fusionnew-definition.scss +189 -0
  70. package/styles/pivotfieldlist/_highcontrast-definition.scss +10 -0
  71. package/styles/pivotfieldlist/_highcontrast-light-definition.scss +10 -0
  72. package/styles/pivotfieldlist/_layout.scss +31 -15
  73. package/styles/pivotfieldlist/_material-dark-definition.scss +10 -0
  74. package/styles/pivotfieldlist/_material-definition.scss +10 -0
  75. package/styles/pivotfieldlist/_material3-definition.scss +190 -0
  76. package/styles/pivotfieldlist/_tailwind-definition.scss +19 -10
  77. package/styles/pivotfieldlist/_theme.scss +142 -7
  78. package/styles/pivotfieldlist/bootstrap-dark.css +147 -11
  79. package/styles/pivotfieldlist/bootstrap.css +147 -11
  80. package/styles/pivotfieldlist/bootstrap4.css +148 -12
  81. package/styles/pivotfieldlist/bootstrap5-dark.css +152 -16
  82. package/styles/pivotfieldlist/bootstrap5.css +152 -16
  83. package/styles/pivotfieldlist/fabric-dark.css +147 -11
  84. package/styles/pivotfieldlist/fabric.css +147 -11
  85. package/styles/pivotfieldlist/fluent-dark.css +155 -19
  86. package/styles/pivotfieldlist/fluent.css +155 -19
  87. package/styles/pivotfieldlist/highcontrast-light.css +147 -11
  88. package/styles/pivotfieldlist/highcontrast.css +147 -11
  89. package/styles/pivotfieldlist/icons/_bootstrap-dark.scss +5 -0
  90. package/styles/pivotfieldlist/icons/_bootstrap.scss +5 -0
  91. package/styles/pivotfieldlist/icons/_bootstrap4.scss +5 -0
  92. package/styles/pivotfieldlist/icons/_bootstrap5.scss +5 -0
  93. package/styles/pivotfieldlist/icons/_fabric-dark.scss +5 -0
  94. package/styles/pivotfieldlist/icons/_fabric.scss +5 -0
  95. package/styles/pivotfieldlist/icons/_fluent.scss +5 -0
  96. package/styles/pivotfieldlist/icons/_fusionnew.scss +352 -0
  97. package/styles/pivotfieldlist/icons/_highcontrast-light.scss +5 -0
  98. package/styles/pivotfieldlist/icons/_highcontrast.scss +5 -0
  99. package/styles/pivotfieldlist/icons/_material-dark.scss +5 -0
  100. package/styles/pivotfieldlist/icons/_material.scss +4 -0
  101. package/styles/pivotfieldlist/icons/_material3.scss +352 -0
  102. package/styles/pivotfieldlist/icons/_tailwind-dark.scss +4 -0
  103. package/styles/pivotfieldlist/icons/_tailwind.scss +4 -0
  104. package/styles/pivotfieldlist/material-dark.css +147 -11
  105. package/styles/pivotfieldlist/material.css +147 -11
  106. package/styles/pivotfieldlist/tailwind-dark.css +156 -22
  107. package/styles/pivotfieldlist/tailwind.css +157 -22
  108. package/styles/pivotview/_bootstrap-dark-definition.scss +4 -2
  109. package/styles/pivotview/_bootstrap-definition.scss +4 -2
  110. package/styles/pivotview/_bootstrap4-definition.scss +4 -2
  111. package/styles/pivotview/_bootstrap5-definition.scss +9 -8
  112. package/styles/pivotview/_fabric-dark-definition.scss +4 -1
  113. package/styles/pivotview/_fabric-definition.scss +4 -2
  114. package/styles/pivotview/_fluent-definition.scss +11 -9
  115. package/styles/pivotview/_fusionnew-definition.scss +131 -0
  116. package/styles/pivotview/_highcontrast-definition.scss +4 -2
  117. package/styles/pivotview/_highcontrast-light-definition.scss +4 -2
  118. package/styles/pivotview/_layout.scss +3 -17
  119. package/styles/pivotview/_material-dark-definition.scss +4 -1
  120. package/styles/pivotview/_material-definition.scss +4 -2
  121. package/styles/pivotview/_material3-definition.scss +131 -0
  122. package/styles/pivotview/_tailwind-definition.scss +8 -5
  123. package/styles/pivotview/_theme.scss +47 -27
  124. package/styles/pivotview/bootstrap-dark.css +19 -22
  125. package/styles/pivotview/bootstrap.css +19 -22
  126. package/styles/pivotview/bootstrap4.css +19 -25
  127. package/styles/pivotview/bootstrap5-dark.css +58 -30
  128. package/styles/pivotview/bootstrap5.css +58 -30
  129. package/styles/pivotview/fabric-dark.css +19 -22
  130. package/styles/pivotview/fabric.css +19 -22
  131. package/styles/pivotview/fluent-dark.css +29 -31
  132. package/styles/pivotview/fluent.css +29 -31
  133. package/styles/pivotview/highcontrast-light.css +19 -22
  134. package/styles/pivotview/highcontrast.css +19 -22
  135. package/styles/pivotview/icons/_fusionnew.scss +183 -0
  136. package/styles/pivotview/icons/_material3.scss +183 -0
  137. package/styles/pivotview/material-dark.css +19 -22
  138. package/styles/pivotview/material.css +19 -22
  139. package/styles/pivotview/tailwind-dark.css +27 -31
  140. package/styles/pivotview/tailwind.css +27 -31
  141. package/styles/tailwind-dark.css +183 -53
  142. package/styles/tailwind.css +184 -53
@@ -3,7 +3,7 @@ import { DataManager, Deferred, Query } from '@syncfusion/ej2-data';
3
3
  import { Dialog, Tooltip, createSpinner, hideSpinner, showSpinner } from '@syncfusion/ej2-popups';
4
4
  import { ColumnChooser, CommandColumn, ContextMenu, Edit, ExcelExport, Freeze, Grid, Page, PdfExport, Reorder, Resize, Selection, Toolbar, VirtualScroll, getObject, headerRefreshed, setStyleAndAttributes } from '@syncfusion/ej2-grids';
5
5
  import { Accordion, ContextMenu as ContextMenu$1, Menu, Tab, Toolbar as Toolbar$1, TreeView } from '@syncfusion/ej2-navigations';
6
- import { ColorPicker, MaskedTextBox, NumericTextBox } from '@syncfusion/ej2-inputs';
6
+ import { ColorPicker, MaskedTextBox, NumericTextBox, TextBox } from '@syncfusion/ej2-inputs';
7
7
  import { CheckBoxSelection, DropDownList, MultiSelect } from '@syncfusion/ej2-dropdowns';
8
8
  import { DateTimePicker } from '@syncfusion/ej2-calendars';
9
9
  import { DropDownButton } from '@syncfusion/ej2-splitbuttons';
@@ -1326,7 +1326,7 @@ class PivotEngine {
1326
1326
  if (this.fields.indexOf(newFieldName) === -1) {
1327
1327
  this.fields.push(newFieldName);
1328
1328
  }
1329
- item[this.fieldKeys[newFieldName]] = (isInRangeAvail ? undefined : new Date(newDate.setMonth(date.getMonth(), newDate.getDate())).toString());
1329
+ item[this.fieldKeys[newFieldName]] = (isInRangeAvail ? undefined : new Date(newDate.setMonth(date.getMonth(), 1)).toString());
1330
1330
  }
1331
1331
  break;
1332
1332
  case 'Days':
@@ -2543,7 +2543,7 @@ class PivotEngine {
2543
2543
  row: rows[i],
2544
2544
  column: columns,
2545
2545
  value: value,
2546
- cellSets: this.getCellSet(this.rawIndexObject),
2546
+ cellSets: this.getValueCellInfo ? this.getCellSet(this.rawIndexObject) : [],
2547
2547
  rowCellType: (rows[i].hasChild && rows[i].isDrilled ? 'subTotal' : rows[i].type === 'grand sum' ? 'grandTotal' : 'value'),
2548
2548
  columnCellType: (columns.hasChild && columns.isDrilled ? 'subTotal' : columns.type === 'grand sum' ? 'grandTotal' : 'value'),
2549
2549
  aggregateType: aggregate,
@@ -3443,7 +3443,7 @@ class PivotEngine {
3443
3443
  PivotUtil.applyHeadersSort(sortMembersOrder, sortOrder, type);
3444
3444
  isHeaderSortByDefault = true;
3445
3445
  }
3446
- if (isHeaderSortByDefault) {
3446
+ if (isHeaderSortByDefault && this.getHeaderSortInfo) {
3447
3447
  let copyOrder = [];
3448
3448
  for (let m = 0, n = 0; m < sortMembersOrder.length; m++) {
3449
3449
  let member = sortMembersOrder[m];
@@ -3577,7 +3577,7 @@ class PivotEngine {
3577
3577
  row: header,
3578
3578
  column: member,
3579
3579
  value: value,
3580
- cellSets: this.getCellSet(this.rawIndexObject),
3580
+ cellSets: this.getValueCellInfo ? this.getCellSet(this.rawIndexObject) : [],
3581
3581
  rowCellType: (header.hasChild && header.isDrilled ? 'subTotal' : header.type === 'grand sum' ? 'grandTotal' : 'value'),
3582
3582
  columnCellType: (member.hasChild && member.isDrilled ? 'subTotal' : member.type === 'grand sum' ? 'grandTotal' : 'value'),
3583
3583
  aggregateType: mType,
@@ -3967,7 +3967,7 @@ class PivotEngine {
3967
3967
  this.columnCount -= (!(this.showSubTotals && this.showColumnSubTotals && field.showSubTotals) && axis === 'column') ?
3968
3968
  this.colValuesLength : 0;
3969
3969
  let filterPosition = hierarchy[iln].index;
3970
- hierarchy[iln].members = this.getIndexedHeaders(keys, data, keyInd + 1, (filterPosition === undefined ? [] : filterPosition), axis, parentMember);
3970
+ hierarchy[iln].members = this.getIndexedHeaders(keys, data, keyInd + 1, (filterPosition === undefined ? [] : filterPosition), axis, parentMember, valueFil);
3971
3971
  if (this.frameHeaderObjectsCollection) {
3972
3972
  this.headerObjectsCollection[parentMember] = hierarchy[iln].members;
3973
3973
  }
@@ -3977,7 +3977,7 @@ class PivotEngine {
3977
3977
  if (this.enableSort) {
3978
3978
  // return new DataManager(hierarchy as JSON[]).executeLocal(new Query().sortBy('actualText', childrens.sort.toLowerCase()));
3979
3979
  if (isDateType) {
3980
- return this.sortHeaders(fieldName, childrens, hierarchy, childrens.sort, childrens.type);
3980
+ return this.sortHeaders(fieldName, childrens, hierarchy, childrens.sort, 'date');
3981
3981
  }
3982
3982
  else {
3983
3983
  if (childrens.type === 'number' && hierarchy.length > 0 && (typeof (hierarchy[0].actualText) === 'string')) {
@@ -4784,8 +4784,9 @@ class PivotEngine {
4784
4784
  }
4785
4785
  for (let index of indexCollection) {
4786
4786
  let currentSet = data[index[0]][index[1]];
4787
+ let actualValue = isNullOrUndefined(selectedRowValues[index[1]].actualValue) ? 0 : selectedRowValues[index[1]].actualValue;
4787
4788
  // let cVal: number = currentSet.value - (selectedRowValues[index[1]] as IAxisSet).value;
4788
- let cVal = currentSet.actualValue - selectedRowValues[index[1]].actualValue;
4789
+ let cVal = (isNullOrUndefined(currentSet.actualValue) ? 0 : currentSet.actualValue) - actualValue;
4789
4790
  cVal = isNaN(cVal) ? 0 : (currentSet.value === 0 && selectedRowValues[index[1]].value === 0) ? 0 : cVal;
4790
4791
  if (!this.aggregatedValueMatrix[index[0]]) {
4791
4792
  this.aggregatedValueMatrix[index[0]] = [];
@@ -4797,8 +4798,7 @@ class PivotEngine {
4797
4798
  else {
4798
4799
  // cVal = ((selectedRowValues[index[1]] as IAxisSet).value === 0 ?
4799
4800
  // 0 : (cVal / (selectedRowValues[index[1]] as IAxisSet).value));
4800
- cVal = (selectedRowValues[index[1]].actualValue === 0 ?
4801
- 0 : (cVal / selectedRowValues[index[1]].actualValue));
4801
+ cVal = (actualValue === 0 ? 0 : (cVal / actualValue));
4802
4802
  this.aggregatedValueMatrix[index[0]][index[1]] = cVal;
4803
4803
  currentSet.formattedText = currentSet.showSubTotals ? (cVal !== 0 ? this.globalize.formatNumber(cVal, { format: 'P', maximumFractionDigits: this.getPercentFormat(this.formatFields, currentSet.actualText) }) : this.emptyCellTextContent) : currentSet.formattedText;
4804
4804
  }
@@ -5021,7 +5021,9 @@ class PivotEngine {
5021
5021
  activeColumn[cln].valueSort[item.valueSort.levelName] &&
5022
5022
  currentSet.axis === 'value' && currentSet.actualText === name) {
5023
5023
  if (activeColumn[cln].type !== 'grand sum') {
5024
- cVal += currentSet.value;
5024
+ if (!isNullOrUndefined(currentSet.value)) {
5025
+ cVal += currentSet.value;
5026
+ }
5025
5027
  currentSet.formattedText = subTotal ? '' : this.getFormattedValue(cVal, name).formattedText;
5026
5028
  if (!this.aggregatedValueMatrix[rln]) {
5027
5029
  this.aggregatedValueMatrix[rln] = [];
@@ -5133,7 +5135,7 @@ class PivotEngine {
5133
5135
  row: rows[rln],
5134
5136
  column: columns[cln],
5135
5137
  value: value,
5136
- cellSets: this.getCellSet(this.rawIndexObject),
5138
+ cellSets: this.getValueCellInfo ? this.getCellSet(this.rawIndexObject) : [],
5137
5139
  rowCellType: (rows[rln].hasChild && rows[rln].isDrilled ? 'subTotal' : rows[rln].type === 'grand sum' ? 'grandTotal' : 'value'),
5138
5140
  columnCellType: (columns[cln].hasChild && columns[cln].isDrilled ? 'subTotal' : columns[cln].type === 'grand sum' ? 'grandTotal' : 'value'),
5139
5141
  aggregateType: aggregate,
@@ -5968,6 +5970,10 @@ const uiUpdate = 'ui-update';
5968
5970
  /** @hidden */
5969
5971
  const scroll = 'scroll';
5970
5972
  /** @hidden */
5973
+ const verticalScroll = 'vertical-scroll';
5974
+ /** @hidden */
5975
+ const horizontalScroll = 'horizontal-scroll';
5976
+ /** @hidden */
5971
5977
  const contentReady = 'content-ready';
5972
5978
  /** @hidden */
5973
5979
  const dataReady = 'data-ready';
@@ -6167,6 +6173,10 @@ const windowResized = 'Window resized';
6167
6173
  const recordUpdated = 'Records updated';
6168
6174
  /** @hidden */
6169
6175
  const drillThroughClosed = 'Drill-through closed';
6176
+ /** @hidden */
6177
+ const verticalScrolled = 'Vertically scrolled';
6178
+ /** @hidden */
6179
+ const horizontalScrolled = 'Horizontally scrolled';
6170
6180
 
6171
6181
  /**
6172
6182
  * CSS Constants
@@ -6213,12 +6223,26 @@ const OLAP_FIELD_LIST_CLASS = 'e-olap-field-list-tree';
6213
6223
  /** @hidden */
6214
6224
  const FIELD_LIST_TREE_CLASS = 'e-field-list-tree';
6215
6225
  /** @hidden */
6226
+ const FIELD_LIST_TREE_OUTER_DIV_CLASS = 'e-field-list-tree-outer-div';
6227
+ /** @hidden */
6228
+ const FIELD_LIST_TREE_OUTER_DIV_SEARCH_CLASS = 'e-field-list-tree-outer-div-searchMode';
6229
+ /** @hidden */
6230
+ const FIELD_LIST_SEARCH_MODE_CLASS = 'e-search-mode';
6231
+ /** @hidden */
6216
6232
  const FIELD_HEADER_CLASS = 'e-field-header';
6217
6233
  /** @hidden */
6234
+ const FIELD_HEADER_CONTAINER_CLASS = 'e-field-header-container';
6235
+ /** @hidden */
6218
6236
  const FIELD_LIST_TITLE_CLASS = 'e-field-list-title';
6219
6237
  /** @hidden */
6220
6238
  const FIELD_LIST_TITLE_CONTENT_CLASS = 'e-title-content';
6221
6239
  /** @hidden */
6240
+ const FIELD_LIST_SEARCH_CLASS = 'e-field-list-search';
6241
+ /** @hidden */
6242
+ const FIELD_LIST_SEARCH_INPUT_CLASS = 'e-field-list-search-input';
6243
+ /** @hidden */
6244
+ const FIELD_LIST_SEARCH_ICON_CLASS = 'e-field-list-search-icon';
6245
+ /** @hidden */
6222
6246
  const FIELD_LIST_FOOTER_CLASS = 'e-field-list-footer';
6223
6247
  /** @hidden */
6224
6248
  const CALCULATED_FIELD_CLASS = 'e-calculated-field';
@@ -6529,6 +6553,8 @@ const TREEVIEW = 'e-pivot-treeview';
6529
6553
  /** @hidden */
6530
6554
  const TREEVIEWOUTER = 'e-pivot-treeview-outer';
6531
6555
  /** @hidden */
6556
+ const TREE_CONTAINER = 'e-treeContainer';
6557
+ /** @hidden */
6532
6558
  const CALCCANCELBTN = 'e-pivot-cancel-button';
6533
6559
  /** @hidden */
6534
6560
  const CALCADDBTN = 'e-pivot-add-button';
@@ -7006,13 +7032,13 @@ class AggregateMenu {
7006
7032
  buttons: [
7007
7033
  {
7008
7034
  click: this.updateValueSettings.bind(this),
7009
- buttonModel: { cssClass: OK_BUTTON_CLASS, content: this.parent.localeObj.getConstant('ok'), isPrimary: true }
7035
+ buttonModel: { cssClass: OK_BUTTON_CLASS + (this.parent.cssClass ? (' ' + this.parent.cssClass) : ''), content: this.parent.localeObj.getConstant('ok'), isPrimary: true }
7010
7036
  },
7011
7037
  {
7012
7038
  click: () => {
7013
7039
  this.valueDialog.hide();
7014
7040
  },
7015
- buttonModel: { cssClass: CANCEL_BUTTON_CLASS, content: this.parent.localeObj.getConstant('cancel') }
7041
+ buttonModel: { cssClass: CANCEL_BUTTON_CLASS + (this.parent.cssClass ? (' ' + this.parent.cssClass) : ''), content: this.parent.localeObj.getConstant('cancel') }
7016
7042
  }
7017
7043
  ],
7018
7044
  closeOnEscape: (this.parent.getModuleName() === 'pivotfieldlist' && this.parent.renderMode === 'Popup') ? false : true,
@@ -7169,7 +7195,8 @@ class AggregateMenu {
7169
7195
  // floatLabelType: 'Auto',
7170
7196
  enableRtl: this.parent.enableRtl,
7171
7197
  locale: this.parent.locale,
7172
- value: fieldCaption, width: '100%'
7198
+ value: fieldCaption, width: '100%',
7199
+ cssClass: this.parent.cssClass
7173
7200
  });
7174
7201
  inputObj1.isStringTemplate = true;
7175
7202
  inputObj1.appendTo(inputField1);
@@ -7645,6 +7672,9 @@ class Render {
7645
7672
  }
7646
7673
  /* eslint-disable */
7647
7674
  contextMenuOpen(args) {
7675
+ if (args.element && this.parent.cssClass) {
7676
+ addClass([args.element.parentElement], this.parent.cssClass);
7677
+ }
7648
7678
  for (let item of args.items) {
7649
7679
  let cellTarget = this.parent.lastCellClicked;
7650
7680
  let elem = null;
@@ -8432,7 +8462,7 @@ class Render {
8432
8462
  if (cell.isGrandSum || (isGrandSum || this.colGrandPos === Number(tCell.getAttribute('aria-colindex'))) || this.rowGrandPos === Number(tCell.getAttribute('index'))) {
8433
8463
  tCell.classList.add('e-gtot');
8434
8464
  }
8435
- else if (this.parent.dataType === 'olap' ? cell.isSum : this.validateColumnTotalcell(!isNullOrUndefined(cell.value) ? cell.colIndex : cell.colIndex - 1)) {
8465
+ else if (this.parent.dataType === 'olap' ? cell.isSum : this.validateColumnTotalcell(cell.colIndex)) {
8436
8466
  tCell.classList.add('e-colstot');
8437
8467
  }
8438
8468
  if (cell.cssClass) {
@@ -9554,6 +9584,8 @@ class EventBase {
9554
9584
  * @hidden
9555
9585
  */
9556
9586
  constructor(parent) {
9587
+ /** @hidden */
9588
+ this.searchListItem = [];
9557
9589
  this.parent = parent;
9558
9590
  }
9559
9591
  /**
@@ -9737,15 +9769,20 @@ class EventBase {
9737
9769
  let isItemAvail = false;
9738
9770
  let filterTypes = ['Include', 'Exclude'];
9739
9771
  if (filterObj && filterTypes.indexOf(filterObj.type) >= 0) {
9740
- let engineModule = this.parent.engineModule;
9741
- let field = engineModule.fieldList[fieldName];
9742
- let members = (engineModule.formatFields[fieldName] &&
9743
- (['date', 'dateTime', 'time'].indexOf(engineModule.formatFields[fieldName].type) > -1)) ?
9744
- field.formattedMembers : field.members;
9745
- for (let item of filterObj.items) {
9746
- if (members[item]) {
9747
- isItemAvail = true;
9748
- break;
9772
+ if (filterObj.type === 'Include' && filterObj.items.length === 0) {
9773
+ isItemAvail = true;
9774
+ }
9775
+ else {
9776
+ let engineModule = this.parent.engineModule;
9777
+ let field = engineModule.fieldList[fieldName];
9778
+ let members = (engineModule.formatFields[fieldName] &&
9779
+ (['date', 'dateTime', 'time'].indexOf(engineModule.formatFields[fieldName].type) > -1)) ?
9780
+ field.formattedMembers : field.members;
9781
+ for (let item of filterObj.items) {
9782
+ if (members[item]) {
9783
+ isItemAvail = true;
9784
+ break;
9785
+ }
9749
9786
  }
9750
9787
  }
9751
9788
  }
@@ -9985,6 +10022,7 @@ class EventBase {
9985
10022
  else {
9986
10023
  treeObj.expandAll(undefined, undefined, true);
9987
10024
  }
10025
+ this.searchListItem = searchList;
9988
10026
  }
9989
10027
  else {
9990
10028
  this.parent.searchTreeItems = [];
@@ -10657,7 +10695,7 @@ class ErrorDialog {
10657
10695
  buttons: [
10658
10696
  {
10659
10697
  click: this.closeErrorDialog.bind(this),
10660
- buttonModel: { cssClass: OK_BUTTON_CLASS, content: this.parent.localeObj.getConstant('ok'), isPrimary: true }
10698
+ buttonModel: { cssClass: OK_BUTTON_CLASS + (this.parent.cssClass ? (' ' + this.parent.cssClass) : ''), content: this.parent.localeObj.getConstant('ok'), isPrimary: true }
10661
10699
  }
10662
10700
  ],
10663
10701
  cssClass: this.parent.cssClass,
@@ -10731,19 +10769,19 @@ class FilterDialog {
10731
10769
  buttons: [
10732
10770
  {
10733
10771
  buttonModel: {
10734
- cssClass: 'e-clear-filter-button' + (this.allowExcelLikeFilter ? '' : ' ' + ICON_DISABLE),
10772
+ cssClass: 'e-clear-filter-button' + (this.allowExcelLikeFilter ? '' : ' ' + ICON_DISABLE) + (this.parent.cssClass ? (' ' + this.parent.cssClass) : ''),
10735
10773
  iconCss: 'e-icons e-clear-filter-icon', enableRtl: this.parent.enableRtl,
10736
10774
  content: this.parent.localeObj.getConstant('clearFilter'), disabled: (this.filterObject ? false : true)
10737
10775
  }
10738
10776
  },
10739
10777
  {
10740
10778
  buttonModel: {
10741
- cssClass: OK_BUTTON_CLASS, content: this.parent.localeObj.getConstant('ok'), isPrimary: true
10779
+ cssClass: OK_BUTTON_CLASS + (this.parent.cssClass ? (' ' + this.parent.cssClass) : ''), content: this.parent.localeObj.getConstant('ok'), isPrimary: true
10742
10780
  }
10743
10781
  },
10744
10782
  {
10745
10783
  click: this.closeFilterDialog.bind(this),
10746
- buttonModel: { cssClass: CANCEL_BUTTON_CLASS, content: this.parent.localeObj.getConstant('cancel') }
10784
+ buttonModel: { cssClass: CANCEL_BUTTON_CLASS + (this.parent.cssClass ? (' ' + this.parent.cssClass) : ''), content: this.parent.localeObj.getConstant('cancel') }
10747
10785
  }
10748
10786
  ],
10749
10787
  closeOnEscape: this.parent.renderMode === 'Popup' ? false : true,
@@ -10844,7 +10882,7 @@ class FilterDialog {
10844
10882
  this.editorSearch = new MaskedTextBox({
10845
10883
  placeholder: this.parent.localeObj.getConstant('search') + ' ' + '&#8220' + filterCaption + '&#8220',
10846
10884
  enableRtl: this.parent.enableRtl,
10847
- cssClass: EDITOR_SEARCH_CLASS,
10885
+ cssClass: EDITOR_SEARCH_CLASS + (this.parent.cssClass ? (' ' + this.parent.cssClass) : ''),
10848
10886
  showClearButton: true,
10849
10887
  change: (e) => {
10850
10888
  if (this.parent.dataType === 'olap') {
@@ -10882,7 +10920,8 @@ class FilterDialog {
10882
10920
  nodeSelected: (args) => {
10883
10921
  removeClass([args.node], 'e-active');
10884
10922
  args.cancel = true;
10885
- }
10923
+ },
10924
+ cssClass: this.parent.cssClass
10886
10925
  });
10887
10926
  this.allMemberSelect.isStringTemplate = true;
10888
10927
  if (!isNullOrUndefined(this.parent.currentTreeItems)) {
@@ -10907,7 +10946,8 @@ class FilterDialog {
10907
10946
  removeClass([args.node], 'e-active');
10908
10947
  args.cancel = true;
10909
10948
  },
10910
- expandOn: 'None'
10949
+ expandOn: 'None',
10950
+ cssClass: this.parent.cssClass
10911
10951
  });
10912
10952
  this.memberTreeView.isStringTemplate = true;
10913
10953
  this.memberTreeView.appendTo(treeViewContainer);
@@ -10918,7 +10958,7 @@ class FilterDialog {
10918
10958
  if (this.parent.dataType === 'pivot' && treeData && treeData.length > 0) {
10919
10959
  let sortOrder = this.parent.engineModule.fieldList[fieldName].sort;
10920
10960
  let sortWrapper = createElement('div', {
10921
- className: FILTER_SORT_CLASS + ' e-btn-group' + (this.parent.enableRtl ? ' ' + RTL : ''),
10961
+ className: FILTER_SORT_CLASS + ' e-btn-group' + (this.parent.enableRtl ? ' ' + RTL : '') + (this.parent.cssClass ? (' ' + this.parent.cssClass) : ''),
10922
10962
  id: this.parent.element.id + '_Member_Sort'
10923
10963
  });
10924
10964
  this.parent.element.appendChild(sortWrapper);
@@ -10931,11 +10971,11 @@ class FilterDialog {
10931
10971
  id: this.parent.element.id + '_Sort_Descend', attrs: { 'type': 'button' }
10932
10972
  });
10933
10973
  let sortBtnElement = new Button({
10934
- iconCss: ICON + ' ' + SORT_ASCEND_ICON_CLASS, enableRtl: this.parent.enableRtl
10974
+ iconCss: ICON + ' ' + SORT_ASCEND_ICON_CLASS, enableRtl: this.parent.enableRtl, cssClass: this.parent.cssClass
10935
10975
  });
10936
10976
  sortBtnElement.appendTo(sortAscendElement);
10937
10977
  sortBtnElement = new Button({
10938
- iconCss: ICON + ' ' + SORT_DESCEND_ICON_CLASS, enableRtl: this.parent.enableRtl
10978
+ iconCss: ICON + ' ' + SORT_DESCEND_ICON_CLASS, enableRtl: this.parent.enableRtl, cssClass: this.parent.cssClass
10939
10979
  });
10940
10980
  sortBtnElement.appendTo(sortDescendElement);
10941
10981
  sortWrapper.appendChild(sortAscendElement);
@@ -11278,7 +11318,8 @@ class FilterDialog {
11278
11318
  items: items,
11279
11319
  height: '100%',
11280
11320
  selectedItem: selectedIndex,
11281
- enableRtl: this.parent.enableRtl
11321
+ enableRtl: this.parent.enableRtl,
11322
+ cssClass: this.parent.cssClass
11282
11323
  });
11283
11324
  this.tabObj.isStringTemplate = true;
11284
11325
  this.tabObj.appendTo(wrapper);
@@ -11595,7 +11636,9 @@ class FilterDialog {
11595
11636
  else {
11596
11637
  return;
11597
11638
  }
11598
- }, width: '100%'
11639
+ },
11640
+ width: '100%',
11641
+ cssClass: this.parent.cssClass
11599
11642
  });
11600
11643
  let inputObj2 = new NumericTextBox({
11601
11644
  placeholder: this.parent.localeObj.getConstant('enterValue'),
@@ -11614,7 +11657,9 @@ class FilterDialog {
11614
11657
  else {
11615
11658
  return;
11616
11659
  }
11617
- }, width: '100%'
11660
+ },
11661
+ width: '100%',
11662
+ cssClass: this.parent.cssClass
11618
11663
  });
11619
11664
  inputObj1.isStringTemplate = true;
11620
11665
  inputObj1.appendTo(inputDiv1);
@@ -11635,7 +11680,9 @@ class FilterDialog {
11635
11680
  else {
11636
11681
  return;
11637
11682
  }
11638
- }, width: '100%'
11683
+ },
11684
+ width: '100%',
11685
+ cssClass: this.parent.cssClass
11639
11686
  });
11640
11687
  let inputObj2 = new MaskedTextBox({
11641
11688
  placeholder: this.parent.localeObj.getConstant('enterValue'),
@@ -11650,7 +11697,9 @@ class FilterDialog {
11650
11697
  else {
11651
11698
  return;
11652
11699
  }
11653
- }, width: '100%'
11700
+ },
11701
+ width: '100%',
11702
+ cssClass: this.parent.cssClass
11654
11703
  });
11655
11704
  inputObj1.isStringTemplate = true;
11656
11705
  inputObj1.appendTo(inputDiv1);
@@ -13404,6 +13453,9 @@ class VirtualScroll$1 {
13404
13453
  update(mHdr, mCont, top, left, e) {
13405
13454
  this.parent.isScrolling = true;
13406
13455
  let engine = this.parent.dataType === 'pivot' ? this.parent.engineModule : this.parent.olapEngineModule;
13456
+ let args = {
13457
+ dataSourceSettings: PivotUtil.getClonedDataSourceSettings(this.parent.dataSourceSettings)
13458
+ };
13407
13459
  if (this.parent.pageSettings && engine.pageSettings) {
13408
13460
  if (this.direction === 'vertical') {
13409
13461
  let rowValues = this.parent.dataType === 'pivot' ?
@@ -13415,24 +13467,28 @@ class VirtualScroll$1 {
13415
13467
  // this.parent.hideWaitingPopup();
13416
13468
  return;
13417
13469
  }
13470
+ this.parent.actionObj.actionName = verticalScroll;
13471
+ this.parent.actionBeginMethod();
13418
13472
  this.parent.showWaitingPopup();
13419
13473
  this.parent.scrollPosObject.vertical = section;
13420
- engine.pageSettings.rowCurrentPage = section > 1 ? section : 1;
13474
+ this.parent.pageSettings.rowCurrentPage = engine.pageSettings.rowCurrentPage = section > 1 ? section : 1;
13421
13475
  let rowStartPos = 0;
13422
- if (this.parent.dataType === 'pivot') {
13423
- if (this.parent.dataSourceSettings.mode === 'Server') {
13424
- this.parent.getEngine('onScroll', null, null, null, null, null, null);
13476
+ this.parent.trigger(enginePopulating, args, (observedArgs) => {
13477
+ if (this.parent.dataType === 'pivot') {
13478
+ if (this.parent.dataSourceSettings.mode === 'Server') {
13479
+ this.parent.getEngine('onScroll', null, null, null, null, null, null);
13480
+ }
13481
+ else {
13482
+ this.parent.engineModule.generateGridData(this.parent.dataSourceSettings, true, this.parent.engineModule.headerCollection);
13483
+ rowStartPos = this.parent.engineModule.rowStartPos;
13484
+ }
13425
13485
  }
13426
13486
  else {
13427
- this.parent.engineModule.generateGridData(this.parent.dataSourceSettings, true, this.parent.engineModule.headerCollection);
13428
- rowStartPos = this.parent.engineModule.rowStartPos;
13487
+ this.parent.olapEngineModule.scrollPage('scroll');
13488
+ rowStartPos = this.parent.olapEngineModule.pageRowStartPos;
13429
13489
  }
13430
- }
13431
- else {
13432
- this.parent.olapEngineModule.scrollPage('scroll');
13433
- rowStartPos = this.parent.olapEngineModule.pageRowStartPos;
13434
- }
13435
- this.parent.pivotValues = engine.pivotValues;
13490
+ this.enginePopulatedEventMethod(engine);
13491
+ });
13436
13492
  let exactPage = Math.ceil(rowStartPos / (this.parent.pageSettings.rowSize * rowValues));
13437
13493
  let pos = exactSize * exactPage -
13438
13494
  (engine.rowFirstLvl * rowValues * this.parent.gridSettings.rowHeight);
@@ -13448,32 +13504,50 @@ class VirtualScroll$1 {
13448
13504
  // this.parent.hideWaitingPopup();
13449
13505
  return;
13450
13506
  }
13507
+ this.parent.actionObj.actionName = horizontalScroll;
13508
+ this.parent.actionBeginMethod();
13451
13509
  this.parent.showWaitingPopup();
13452
13510
  let pivot = this.parent;
13453
13511
  pivot.scrollPosObject.horizontal = section;
13454
- engine.pageSettings.columnCurrentPage = section > 1 ? section : 1;
13512
+ this.parent.pageSettings.columnCurrentPage = engine.pageSettings.columnCurrentPage = section > 1 ? section : 1;
13455
13513
  let colStartPos = 0;
13456
- if (pivot.dataType === 'pivot') {
13457
- if (this.parent.dataSourceSettings.mode === 'Server') {
13458
- this.parent.getEngine('onScroll', null, null, null, null, null, null);
13514
+ this.parent.trigger(enginePopulating, args, (observedArgs) => {
13515
+ if (pivot.dataType === 'pivot') {
13516
+ if (this.parent.dataSourceSettings.mode === 'Server') {
13517
+ this.parent.getEngine('onScroll', null, null, null, null, null, null);
13518
+ }
13519
+ else {
13520
+ pivot.engineModule.generateGridData(pivot.dataSourceSettings, true, pivot.engineModule.headerCollection);
13521
+ colStartPos = pivot.engineModule.colStartPos;
13522
+ }
13459
13523
  }
13460
13524
  else {
13461
- pivot.engineModule.generateGridData(pivot.dataSourceSettings, true, pivot.engineModule.headerCollection);
13462
- colStartPos = pivot.engineModule.colStartPos;
13525
+ pivot.olapEngineModule.scrollPage('scroll');
13526
+ colStartPos = pivot.olapEngineModule.pageColStartPos;
13463
13527
  }
13464
- }
13465
- else {
13466
- pivot.olapEngineModule.scrollPage('scroll');
13467
- colStartPos = pivot.olapEngineModule.pageColStartPos;
13468
- }
13469
- pivot.pivotValues = engine.pivotValues;
13528
+ this.enginePopulatedEventMethod(engine);
13529
+ });
13470
13530
  let exactPage = Math.ceil(colStartPos / (pivot.pageSettings.columnSize * colValues));
13471
13531
  let pos = exactSize * exactPage - (engine.colFirstLvl *
13472
13532
  colValues * pivot.gridSettings.columnWidth);
13473
13533
  pivot.scrollPosObject.horizontalSection = pos;
13474
13534
  }
13535
+ this.parent.actionObj.actionName = this.parent.getActionCompleteName();
13536
+ if (this.parent.actionObj.actionName) {
13537
+ this.parent.actionCompleteMethod();
13538
+ }
13475
13539
  }
13476
13540
  }
13541
+ enginePopulatedEventMethod(engine, control) {
13542
+ let pivot = control ? control : this.parent;
13543
+ let eventArgs = {
13544
+ dataSourceSettings: pivot.dataSourceSettings,
13545
+ pivotValues: pivot.pivotValues
13546
+ };
13547
+ pivot.trigger(enginePopulated, eventArgs, (observedArgs) => {
13548
+ this.parent.pivotValues = engine.pivotValues;
13549
+ });
13550
+ }
13477
13551
  setPageXY() {
13478
13552
  return (e) => {
13479
13553
  if (e.pointerType === 'mouse') {
@@ -13888,6 +13962,7 @@ class DrillThroughDialog {
13888
13962
  enabled: true,
13889
13963
  format: '####.##',
13890
13964
  locale: this.parent.locale,
13965
+ cssClass: this.parent.cssClass,
13891
13966
  change: () => {
13892
13967
  let textBoxValue = this.numericTextBox.value;
13893
13968
  let indexValue = eventArgs.currentCell.indexObject[indexObject];
@@ -14058,10 +14133,10 @@ class DrillThroughDialog {
14058
14133
  this.drillThroughGrid.columns.push({
14059
14134
  headerText: this.parent.localeObj.getConstant('manageRecords'), width: 160, showInColumnChooser: false,
14060
14135
  commands: [
14061
- { type: 'Edit', buttonOption: { iconCss: ' e-icons e-edit', cssClass: 'e-flat' } },
14062
- { type: 'Delete', buttonOption: { iconCss: 'e-icons e-delete', cssClass: 'e-flat' } },
14063
- { type: 'Save', buttonOption: { iconCss: 'e-icons e-update', cssClass: 'e-flat' } },
14064
- { type: 'Cancel', buttonOption: { iconCss: 'e-icons e-cancel-icon', cssClass: 'e-flat' } }
14136
+ { type: 'Edit', buttonOption: { iconCss: ' e-icons e-edit', cssClass: 'e-flat' + (this.parent.cssClass ? (' ' + this.parent.cssClass) : '') } },
14137
+ { type: 'Delete', buttonOption: { iconCss: 'e-icons e-delete', cssClass: 'e-flat' + (this.parent.cssClass ? (' ' + this.parent.cssClass) : '') } },
14138
+ { type: 'Save', buttonOption: { iconCss: 'e-icons e-update', cssClass: 'e-flat' + (this.parent.cssClass ? (' ' + this.parent.cssClass) : '') } },
14139
+ { type: 'Cancel', buttonOption: { iconCss: 'e-icons e-cancel-icon', cssClass: 'e-flat' + (this.parent.cssClass ? (' ' + this.parent.cssClass) : '') } }
14065
14140
  ]
14066
14141
  });
14067
14142
  }
@@ -15568,14 +15643,14 @@ class PivotChart {
15568
15643
  let aggregateType = this.parent.dataType === 'olap' ? '' : this.parent.localeObj.getConstant(measureField.aggregateType);
15569
15644
  let measureAggregatedName = (this.parent.dataType === 'olap' ? '' : aggregateType + ' ' +
15570
15645
  this.parent.localeObj.getConstant('of') + ' ') + measureField.caption;
15571
- let formattedText = this.accumulationType.indexOf(this.parent.chartSettings.chartSeries.type) < 0 ?
15572
- args.text.split('<b>')[1].split('</b>')[0] : this.engineModule.pivotValues[rowIndex][colIndex].formattedText;
15646
+ let formattedText = this.engineModule.pivotValues[rowIndex][colIndex].formattedText;
15573
15647
  let formatField = this.engineModule.formatFields[measureField.id];
15574
- let formattedValue = ((formatField && formatField.format && formatField.format.toLowerCase().match(/n|p|c/) !== null &&
15648
+ let valueFormat = this.engineModule.getFormattedValue(args.point.y, measureField.id, formattedText);
15649
+ let formattedValue = (formatField && formatField.format && formatField.format.toLowerCase().match(/n|p|c/) !== null &&
15575
15650
  this.chartSettings.useGroupingSeparator) ? this.parent.dataType === 'olap' ?
15576
- this.engineModule.getFormattedValue(args.point.y, measureField.id, formattedText) :
15577
- this.parent.engineModule.getFormattedValue(args.point.y, measureField.id).formattedText :
15578
- formattedText);
15651
+ valueFormat.toString() :
15652
+ valueFormat.formattedText :
15653
+ formattedText;
15579
15654
  let columnText = (args.series.name ? args.series.name.split(' | ')[0] : args.data.seriesName.split(' | ')[0]);
15580
15655
  let rowText = args.point.x;
15581
15656
  if (this.parent.tooltipTemplate && this.parent.getTooltipTemplate() !== undefined || this.chartSettings.tooltip.template) {
@@ -15904,6 +15979,16 @@ class PivotChart {
15904
15979
  args.text = '';
15905
15980
  }
15906
15981
  }
15982
+ if (args.axis.name !== 'primaryXAxis') {
15983
+ let formatField = this.engineModule.formatFields[args.axis.name];
15984
+ let valueFormat = this.engineModule.getFormattedValue(args.value, args.axis.name, args.text);
15985
+ let formattedValue = ((formatField && formatField.format && formatField.format.toLowerCase().match(/n|p|c/) !== null &&
15986
+ this.chartSettings.useGroupingSeparator) ? this.parent.dataType === 'olap' ?
15987
+ valueFormat.toString() :
15988
+ valueFormat.formattedText :
15989
+ args.value.toString());
15990
+ args.text = formattedValue;
15991
+ }
15907
15992
  this.parent.trigger(chartAxisLabelRender, args);
15908
15993
  }
15909
15994
  multiLevelLabelClick(args) {
@@ -18361,7 +18446,7 @@ class MDXQuery {
18361
18446
  query = '((' + name + ').levels(0).AllMembers)';
18362
18447
  }
18363
18448
  else {
18364
- query = (dimension.isNamedSet ? '{' + name + '}' : this.isPaging ? name + '.CHILDREN' :
18449
+ query = (dimension.isNamedSet || dimension.isCalculatedField ? '{' + name + '}' : this.isPaging ? name + '.CHILDREN' :
18365
18450
  'DrilldownLevel({' + name + '}' + ((axis === 'rows' || axis === 'columns') ? ',,,INCLUDE_CALC_MEMBERS' : '') + ')');
18366
18451
  }
18367
18452
  return query;
@@ -19371,7 +19456,9 @@ class OlapEngine {
19371
19456
  let lastAllStartPos;
19372
19457
  let lastAllCount;
19373
19458
  let availAllMember = false;
19459
+ let withoutAllEndPos = -1;
19374
19460
  let isGrandtoalDataAdd = false;
19461
+ let prevTupInfo;
19375
19462
  let isGrandTotalTop = false;
19376
19463
  while (tupPos < tuples.length && !isGrandtoalDataAdd) {
19377
19464
  let members = tuples[this.customArgs.action === 'down' ?
@@ -19380,11 +19467,21 @@ class OlapEngine {
19380
19467
  let allStartPos = this.tupRowInfo[tupPos].allStartPos;
19381
19468
  let measure = this.tupRowInfo[tupPos].measure;
19382
19469
  let typeColl = this.tupRowInfo[tupPos].typeCollection;
19470
+ let drillStartPos = this.tupRowInfo[tupPos].drillStartPos;
19471
+ let startDrillUniquename = this.tupRowInfo[tupPos].startDrillUniquename;
19383
19472
  if (tupPos === 0 && (members.length > (allCount + (measure ? 1 : 0)) || (members.length === 1 && measure))) {
19384
19473
  gTotals.pop();
19385
19474
  }
19386
19475
  if ((tupPos === 0 && this.isPaging) ? gTotals.length === 0 :
19387
19476
  (!availAllMember || allCount === lastAllCount || allStartPos !== lastAllStartPos || (members.length === 1 && measure))) {
19477
+ let attrDrill = this.checkAttributeDrill(this.tupRowInfo[tupPos].drillInfo, 'rows');
19478
+ let drillAllow = drillStartPos > -1 ? (allCount > 0 ? (attrDrill || allStartPos > drillStartPos) : true) : true;
19479
+ drillAllow = (prevTupInfo && drillAllow && drillStartPos > -1) ?
19480
+ (prevTupInfo.startDrillUniquename !== startDrillUniquename ? true :
19481
+ ((withoutAllEndPos > prevTupInfo.measurePosition ? false :
19482
+ prevTupInfo.measureName !== this.tupRowInfo[tupPos].measureName) &&
19483
+ (allStartPos === (drillStartPos + 1) || this.tupRowInfo[tupPos].measurePosition === (drillStartPos + 1))))
19484
+ : drillAllow;
19388
19485
  if (members.length === allCount + (measure ? 1 : 0) && measure && !isGrandTotalTop) {
19389
19486
  let levelName = 'Grand Total.' + members[measurePos].querySelector('Caption').textContent;
19390
19487
  let formattedText = (typeColl[measurePos] === '3' && this.dataFields[this.getUniqueName(members[measurePos].querySelector('UName').textContent)] &&
@@ -20267,7 +20364,7 @@ class OlapEngine {
20267
20364
  }
20268
20365
  isHeaderSortByDefault = true;
20269
20366
  }
20270
- if (isHeaderSortByDefault) {
20367
+ if (isHeaderSortByDefault && this.getHeaderSortInfo) {
20271
20368
  let copyOrder = [];
20272
20369
  for (let m = 0, n = 0; m < headers.length; m++) {
20273
20370
  if (headers[m].actualText !== 'Grand Total') {
@@ -20308,7 +20405,7 @@ class OlapEngine {
20308
20405
  }
20309
20406
  isHeaderSortByDefault = true;
20310
20407
  }
20311
- if (isHeaderSortByDefault) {
20408
+ if (isHeaderSortByDefault && this.getHeaderSortInfo) {
20312
20409
  let copyOrder = [];
20313
20410
  for (let m = 0, n = 0; m < keys.length; m++) {
20314
20411
  if (keys[m] !== 'Grand Total') {
@@ -22799,8 +22896,8 @@ let PivotView = class PivotView extends Component {
22799
22896
  if (this.showTooltip) {
22800
22897
  if (this.tooltipTemplate) {
22801
22898
  this.tooltip = new Tooltip({
22802
- target: 'td.e-valuescontent' + (this.cssClass ? (' ' + this.cssClass) : ''),
22803
- cssClass: 'e-pivottooltiptemplate',
22899
+ target: 'td.e-valuescontent',
22900
+ cssClass: 'e-pivottooltiptemplate' + (this.cssClass ? (' ' + this.cssClass) : ''),
22804
22901
  showTipPointer: false,
22805
22902
  position: 'BottomRight',
22806
22903
  mouseTrail: true,
@@ -22812,7 +22909,8 @@ let PivotView = class PivotView extends Component {
22812
22909
  }
22813
22910
  else {
22814
22911
  this.tooltip = new Tooltip({
22815
- target: 'td.e-valuescontent' + (this.cssClass ? (' ' + this.cssClass) : ''),
22912
+ target: 'td.e-valuescontent',
22913
+ cssClass: this.cssClass,
22816
22914
  showTipPointer: false,
22817
22915
  position: 'BottomRight',
22818
22916
  mouseTrail: true,
@@ -23323,10 +23421,10 @@ let PivotView = class PivotView extends Component {
23323
23421
  this.cellTemplateFn = this.templateParser(this.cellTemplate);
23324
23422
  this.tooltipTemplateFn = this.templateParser(this.tooltipTemplate);
23325
23423
  if (this.spinnerTemplate) {
23326
- createSpinner({ target: this.element, template: this.spinnerTemplate }, this.createElement);
23424
+ createSpinner({ target: this.element, template: this.spinnerTemplate, cssClass: this.cssClass ? this.cssClass : undefined }, this.createElement);
23327
23425
  }
23328
23426
  else {
23329
- createSpinner({ target: this.element }, this.createElement);
23427
+ createSpinner({ target: this.element, cssClass: this.cssClass ? this.cssClass : undefined }, this.createElement);
23330
23428
  }
23331
23429
  let loadArgs = {
23332
23430
  dataSourceSettings: this.dataSourceSettings,
@@ -23735,6 +23833,8 @@ let PivotView = class PivotView extends Component {
23735
23833
  this.pivotFieldListModule.axisFieldModule.render();
23736
23834
  }
23737
23835
  break;
23836
+ case 'enableFieldSearching':
23837
+ this.pivotFieldListModule.enableFieldSearching = this.enableFieldSearching;
23738
23838
  }
23739
23839
  }
23740
23840
  }
@@ -23991,7 +24091,7 @@ let PivotView = class PivotView extends Component {
23991
24091
  }
23992
24092
  }
23993
24093
  else {
23994
- pivot.olapEngineModule.renderEngine(pivot.dataSourceSettings, customProperties, pivot.getHeaderSortInfo.bind(pivot));
24094
+ pivot.olapEngineModule.renderEngine(pivot.dataSourceSettings, customProperties, pivot.onHeadersSort ? pivot.getHeaderSortInfo.bind(pivot) : undefined);
23995
24095
  }
23996
24096
  pivot.allowServerDataBinding = false;
23997
24097
  pivot.setProperties({ pivotValues: pivot.olapEngineModule.pivotValues }, true);
@@ -24032,7 +24132,7 @@ let PivotView = class PivotView extends Component {
24032
24132
  pivot.lastFilterInfo = {};
24033
24133
  }
24034
24134
  else {
24035
- pivot.engineModule.renderEngine(pivot.dataSourceSettings, customProperties, pivot.getValueCellInfo.bind(pivot), pivot.getHeaderSortInfo.bind(pivot));
24135
+ pivot.engineModule.renderEngine(pivot.dataSourceSettings, customProperties, pivot.aggregateCellInfo ? pivot.getValueCellInfo.bind(pivot) : undefined, pivot.onHeadersSort ? pivot.getHeaderSortInfo.bind(pivot) : undefined);
24036
24136
  pivot.allowServerDataBinding = false;
24037
24137
  pivot.setProperties({ pivotValues: pivot.engineModule.pivotValues }, true);
24038
24138
  /* eslint-disable-next-line @typescript-eslint/no-explicit-any */
@@ -24868,6 +24968,9 @@ let PivotView = class PivotView extends Component {
24868
24968
  this.lastCellClicked = e.target;
24869
24969
  }
24870
24970
  let target = e.target;
24971
+ if (closest(target, '.' + PIVOT_BUTTON_CLASS)) {
24972
+ return;
24973
+ }
24871
24974
  let ele = null;
24872
24975
  let axis = (target.parentElement.classList.contains(ROWSHEADER) || target.classList.contains(ROWSHEADER)) ? 'row' : 'column';
24873
24976
  ele = axis === 'column' ? closest(target, 'th') : closest(target, 'td');
@@ -25294,6 +25397,9 @@ let PivotView = class PivotView extends Component {
25294
25397
  this.getSelectedCellsPos();
25295
25398
  });
25296
25399
  }
25400
+ else {
25401
+ this.clearSelection(null, e, null, null);
25402
+ }
25297
25403
  }
25298
25404
  rowDeselect(ele, e, rowIndex, mode, observedArgs) {
25299
25405
  if (!e.shiftKey && !e.ctrlKey && this.gridSettings.selectionSettings.mode !== 'Both' || this.gridSettings.selectionSettings.type === 'Single') {
@@ -25339,7 +25445,7 @@ let PivotView = class PivotView extends Component {
25339
25445
  clearSelection(ele, e, colIndex, rowIndex) {
25340
25446
  if ((!e.shiftKey && !e.ctrlKey) || this.gridSettings.selectionSettings.type === 'Single') {
25341
25447
  if (this.gridSettings.selectionSettings.mode === 'Cell') {
25342
- if (ele.classList.contains(COLUMNSHEADER)) {
25448
+ if (ele && ele.classList.contains(COLUMNSHEADER)) {
25343
25449
  removeClass(this.element.querySelectorAll(('.' + ROW_CELL_CLASS + '.') + CELL_SELECTED_BGCOLOR), CELL_SELECTED_BGCOLOR);
25344
25450
  }
25345
25451
  else {
@@ -25347,7 +25453,7 @@ let PivotView = class PivotView extends Component {
25347
25453
  }
25348
25454
  }
25349
25455
  else if (this.gridSettings.selectionSettings.mode === 'Both') {
25350
- if (ele.classList.contains(ROW_CELL_CLASS)) {
25456
+ if (ele && ele.classList.contains(ROW_CELL_CLASS)) {
25351
25457
  for (let ele of [].slice.call(this.element.querySelectorAll('.' + SELECTED_BGCOLOR + ', .' + CELL_SELECTED_BGCOLOR))) {
25352
25458
  // if (Number((ele as HTMLElement).getAttribute('index')) !== rowIndex) {
25353
25459
  removeClass([ele], [CELL_ACTIVE_BGCOLOR, SELECTED_BGCOLOR, CELL_SELECTED_BGCOLOR]);
@@ -25575,7 +25681,7 @@ let PivotView = class PivotView extends Component {
25575
25681
  this.clonedReport = this.clonedReport ? this.clonedReport : dataSourceSettings;
25576
25682
  }
25577
25683
  if (this.dataSourceSettings.mode !== 'Server') {
25578
- this.engineModule.renderEngine(this.dataSourceSettings, customProperties, this.getValueCellInfo.bind(this), this.getHeaderSortInfo.bind(this));
25684
+ this.engineModule.renderEngine(this.dataSourceSettings, customProperties, this.aggregateCellInfo ? this.getValueCellInfo.bind(this) : undefined, this.onHeadersSort ? this.getHeaderSortInfo.bind(this) : undefined);
25579
25685
  }
25580
25686
  this.allowServerDataBinding = false;
25581
25687
  this.setProperties({ pivotValues: this.engineModule.pivotValues }, true);
@@ -25586,7 +25692,7 @@ let PivotView = class PivotView extends Component {
25586
25692
  else if (this.dataSourceSettings.providerType === 'SSAS' && this.dataType === 'olap') {
25587
25693
  customProperties.savedFieldList = this.olapEngineModule.fieldList;
25588
25694
  customProperties.savedFieldListData = this.olapEngineModule.fieldListData;
25589
- this.olapEngineModule.renderEngine(this.dataSourceSettings, customProperties, this.getHeaderSortInfo.bind(this));
25695
+ this.olapEngineModule.renderEngine(this.dataSourceSettings, customProperties, this.onHeadersSort ? this.getHeaderSortInfo.bind(this) : undefined);
25590
25696
  this.allowServerDataBinding = false;
25591
25697
  this.setProperties({ pivotValues: this.olapEngineModule.pivotValues }, true);
25592
25698
  delete this.bulkChanges.pivotValues;
@@ -26066,7 +26172,8 @@ let PivotView = class PivotView extends Component {
26066
26172
  : this.actionObj.actionName == removeRecord ? recordRemoved : (this.actionObj.actionName == pngExport) ? pngExported : (this.actionObj.actionName == jpegExport) ? jpegExported
26067
26173
  : (this.actionObj.actionName == svgExport) ? svgExported : (this.actionObj.actionName == pdfExport) ? pdfExported : (this.actionObj.actionName == csvExport) ? csvExported : (this.actionObj.actionName == excelExport) ? excelExported : this.actionObj.actionName == windowResize ? windowResized
26068
26174
  : this.actionObj.actionName == saveCurrentReport ? reportSaved : (this.actionObj.actionName == addNewReport) ? newReportAdded : (this.actionObj.actionName == saveAsCurrentReport) ? reportReSaved
26069
- : (this.actionObj.actionName == renameCurrentReport) ? reportRenamed : this.actionObj.actionName;
26175
+ : (this.actionObj.actionName == renameCurrentReport) ? reportRenamed : (this.actionObj.actionName == renameCurrentReport) ? reportRenamed : (this.actionObj.actionName == horizontalScroll) ? horizontalScrolled
26176
+ : (this.actionObj.actionName == verticalScroll) ? verticalScrolled : this.actionObj.actionName;
26070
26177
  return actionName;
26071
26178
  }
26072
26179
  /* eslint-disable-next-line */
@@ -26305,6 +26412,9 @@ __decorate([
26305
26412
  __decorate([
26306
26413
  Property(false)
26307
26414
  ], PivotView.prototype, "allowCalculatedField", void 0);
26415
+ __decorate([
26416
+ Property(false)
26417
+ ], PivotView.prototype, "enableFieldSearching", void 0);
26308
26418
  __decorate([
26309
26419
  Property(false)
26310
26420
  ], PivotView.prototype, "enableValueSorting", void 0);
@@ -27628,6 +27738,12 @@ class DialogRenderer {
27628
27738
  if (this.parent.cssClass) {
27629
27739
  addClass([fieldListWrappper], this.parent.cssClass);
27630
27740
  }
27741
+ if (this.parent.enableFieldSearching) {
27742
+ addClass([fieldListWrappper], FIELD_LIST_SEARCH_MODE_CLASS);
27743
+ }
27744
+ else {
27745
+ removeClass([fieldListWrappper], FIELD_LIST_SEARCH_MODE_CLASS);
27746
+ }
27631
27747
  this.parentElement = createElement('div', { className: CONTAINER_CLASS });
27632
27748
  this.parent.element.appendChild(fieldListWrappper);
27633
27749
  if (this.parent.isAdaptive) {
@@ -27672,13 +27788,14 @@ class DialogRenderer {
27672
27788
  checked: true,
27673
27789
  enableRtl: this.parent.enableRtl,
27674
27790
  locale: this.parent.locale,
27675
- change: this.onCheckChange.bind(this)
27791
+ change: this.onCheckChange.bind(this),
27792
+ cssClass: this.parent.cssClass
27676
27793
  });
27677
27794
  this.deferUpdateCheckBox.isStringTemplate = true;
27678
27795
  this.deferUpdateCheckBox.appendTo('#' + this.parent.element.id + 'DeferUpdateCheckBox');
27679
27796
  this.deferUpdateApplyButton = new Button({
27680
27797
  cssClass: DEFER_APPLY_BUTTON + ' ' + DEFER_UPDATE_BUTTON + (this.parent.renderMode === 'Popup' ?
27681
- (' ' + BUTTON_FLAT_CLASS) : ''),
27798
+ (' ' + BUTTON_FLAT_CLASS) : '') + (this.parent.cssClass ? (' ' + this.parent.cssClass) : ''),
27682
27799
  content: this.parent.localeObj.getConstant('apply'),
27683
27800
  enableRtl: this.parent.enableRtl,
27684
27801
  locale: this.parent.locale,
@@ -27691,7 +27808,7 @@ class DialogRenderer {
27691
27808
  }
27692
27809
  this.deferUpdateCancelButton = new Button({
27693
27810
  cssClass: DEFER_CANCEL_BUTTON + ' ' + CANCEL_BUTTON_CLASS + (this.parent.renderMode === 'Popup' ?
27694
- (' ' + BUTTON_FLAT_CLASS) : ''),
27811
+ (' ' + BUTTON_FLAT_CLASS) : '') + (this.parent.cssClass ? (' ' + this.parent.cssClass) : ''),
27695
27812
  content: this.parent.allowDeferLayoutUpdate ? this.parent.localeObj.getConstant('cancel') :
27696
27813
  this.parent.localeObj.getConstant('close'),
27697
27814
  enableRtl: this.parent.enableRtl, isPrimary: !this.parent.allowDeferLayoutUpdate, locale: this.parent.locale
@@ -27808,7 +27925,7 @@ class DialogRenderer {
27808
27925
  let buttons = [{
27809
27926
  click: this.showFieldListDialog.bind(this),
27810
27927
  buttonModel: {
27811
- cssClass: ADAPTIVE_FIELD_LIST_BUTTON_CLASS + ' ' + BUTTON_SMALL_CLASS + ' ' + BUTTON_ROUND_CLASS,
27928
+ cssClass: ADAPTIVE_FIELD_LIST_BUTTON_CLASS + ' ' + BUTTON_SMALL_CLASS + ' ' + BUTTON_ROUND_CLASS + (this.parent.cssClass ? (' ' + this.parent.cssClass) : ''),
27812
27929
  iconCss: ICON + ' ' + ADD_ICON_CLASS,
27813
27930
  isPrimary: true
27814
27931
  }
@@ -27816,7 +27933,7 @@ class DialogRenderer {
27816
27933
  click: this.showCalculatedField.bind(this),
27817
27934
  buttonModel: {
27818
27935
  cssClass: ADAPTIVE_CALCULATED_FIELD_BUTTON_CLASS +
27819
- ' ' + BUTTON_SMALL_CLASS + ' ' + BUTTON_ROUND_CLASS + ' ' + ICON_DISABLE,
27936
+ ' ' + BUTTON_SMALL_CLASS + ' ' + BUTTON_ROUND_CLASS + ' ' + ICON_DISABLE + (this.parent.cssClass ? (' ' + this.parent.cssClass) : ''),
27820
27937
  iconCss: ICON + ' ' + ADD_ICON_CLASS, enableRtl: this.parent.enableRtl,
27821
27938
  isPrimary: true
27822
27939
  }
@@ -27953,7 +28070,8 @@ class DialogRenderer {
27953
28070
  height: '100%',
27954
28071
  enableRtl: this.parent.enableRtl,
27955
28072
  locale: this.parent.locale,
27956
- selected: this.tabSelect.bind(this)
28073
+ selected: this.tabSelect.bind(this),
28074
+ cssClass: this.parent.cssClass
27957
28075
  });
27958
28076
  if (this.parent.renderMode === 'Fixed') {
27959
28077
  layoutFooter.appendChild(this.createAddButton());
@@ -27999,7 +28117,7 @@ class DialogRenderer {
27999
28117
  }
28000
28118
  });
28001
28119
  let calculateField = new Button({
28002
- cssClass: CALCULATED_FIELD_CLASS + ' ' + ICON_DISABLE,
28120
+ cssClass: CALCULATED_FIELD_CLASS + ' ' + ICON_DISABLE + (this.parent.cssClass ? (' ' + this.parent.cssClass) : ''),
28003
28121
  content: this.parent.localeObj.getConstant('CalculatedField'),
28004
28122
  enableRtl: this.parent.enableRtl, locale: this.parent.locale
28005
28123
  });
@@ -28019,12 +28137,12 @@ class DialogRenderer {
28019
28137
  let calculatedButton = createElement('div', {});
28020
28138
  let calculateField = new Button({
28021
28139
  cssClass: ADAPTIVE_CALCULATED_FIELD_BUTTON_CLASS +
28022
- ' ' + BUTTON_SMALL_CLASS + ' ' + BUTTON_ROUND_CLASS + ' ' + ICON_DISABLE,
28140
+ ' ' + BUTTON_SMALL_CLASS + ' ' + BUTTON_ROUND_CLASS + ' ' + ICON_DISABLE + (this.parent.cssClass ? (' ' + this.parent.cssClass) : ''),
28023
28141
  iconCss: ICON + ' ' + ADD_ICON_CLASS,
28024
28142
  enableRtl: this.parent.enableRtl, locale: this.parent.locale
28025
28143
  });
28026
28144
  let fieldList = new Button({
28027
- cssClass: ADAPTIVE_FIELD_LIST_BUTTON_CLASS + ' ' + BUTTON_SMALL_CLASS + ' ' + BUTTON_ROUND_CLASS,
28145
+ cssClass: ADAPTIVE_FIELD_LIST_BUTTON_CLASS + ' ' + BUTTON_SMALL_CLASS + ' ' + BUTTON_ROUND_CLASS + (this.parent.cssClass ? (' ' + this.parent.cssClass) : ''),
28028
28146
  iconCss: ICON + ' ' + ADD_ICON_CLASS,
28029
28147
  enableRtl: this.parent.enableRtl, locale: this.parent.locale
28030
28148
  });
@@ -28214,6 +28332,8 @@ class TreeViewRenderer {
28214
28332
  */
28215
28333
  constructor(parent) {
28216
28334
  this.selectedNodes = [];
28335
+ this.isSearching = false;
28336
+ this.parentIDs = [];
28217
28337
  this.parent = parent;
28218
28338
  this.addEventListener();
28219
28339
  }
@@ -28234,15 +28354,42 @@ class TreeViewRenderer {
28234
28354
  className: FIELD_HEADER_CLASS,
28235
28355
  innerHTML: this.parent.localeObj.getConstant('allFields')
28236
28356
  });
28237
- let treeOuterDiv = createElement('div', { className: FIELD_LIST_TREE_CLASS + '-outer-div' });
28357
+ let searchWrapper = createElement('div', {
28358
+ id: this.parent.element.id + '_SearchDiv', attrs: { 'tabindex': '-1' },
28359
+ className: FIELD_LIST_SEARCH_CLASS
28360
+ });
28361
+ let searchInput = createElement('input', { attrs: { 'type': 'text' } });
28362
+ searchWrapper.appendChild(searchInput);
28363
+ this.fieldSearch = new TextBox({
28364
+ placeholder: this.parent.localeObj.getConstant('search'),
28365
+ enableRtl: this.parent.enableRtl,
28366
+ locale: this.parent.locale,
28367
+ cssClass: FIELD_LIST_SEARCH_INPUT_CLASS + (this.parent.cssClass ? (' ' + this.parent.cssClass) : ''),
28368
+ input: this.textChange.bind(this),
28369
+ showClearButton: true
28370
+ });
28371
+ this.fieldSearch.isStringTemplate = true;
28372
+ this.fieldSearch.appendTo(searchInput);
28373
+ this.fieldSearch.addIcon('append', FIELD_LIST_SEARCH_ICON_CLASS + ' ' + ICON);
28374
+ let promptDiv = createElement('div', {
28375
+ className: EMPTY_MEMBER_CLASS + ' ' + ICON_DISABLE,
28376
+ innerHTML: this.parent.localeObj.getConstant('noMatches')
28377
+ });
28378
+ let treeOuterDiv = createElement('div', {
28379
+ className: FIELD_LIST_TREE_OUTER_DIV_CLASS + ' ' + TREE_CONTAINER
28380
+ });
28238
28381
  this.treeViewElement = createElement('div', {
28239
28382
  id: this.parent.element.id + '_TreeView',
28240
28383
  className: FIELD_LIST_CLASS + ' ' + (this.parent.dataType === 'olap' ? OLAP_FIELD_LIST_CLASS : '')
28241
28384
  });
28242
- let fieldHeaderWrappper = createElement('div', { className: 'e-field-header-container' });
28385
+ let fieldHeaderWrappper = createElement('div', { className: FIELD_HEADER_CONTAINER_CLASS });
28243
28386
  fieldHeaderWrappper.appendChild(treeHeader);
28244
28387
  fieldTable.appendChild(fieldHeaderWrappper);
28245
28388
  this.updateSortElements(fieldHeaderWrappper);
28389
+ if (this.parent.enableFieldSearching) {
28390
+ fieldTable.appendChild(searchWrapper);
28391
+ fieldTable.appendChild(promptDiv);
28392
+ }
28246
28393
  treeOuterDiv.appendChild(this.treeViewElement);
28247
28394
  fieldTable.appendChild(treeOuterDiv);
28248
28395
  this.parentElement.appendChild(fieldTable);
@@ -28365,6 +28512,39 @@ class TreeViewRenderer {
28365
28512
  if (args.node.querySelector('.' + NODE_CHECK_CLASS)) {
28366
28513
  addClass([args.node.querySelector('.' + LIST_TEXT_CLASS)], LIST_SELECT_CLASS);
28367
28514
  }
28515
+ if (this.parent.enableFieldSearching && this.isSearching) {
28516
+ let liElement = args.node;
28517
+ if (this.parent.dataType === 'olap') {
28518
+ let id = liElement.getAttribute('data-uid');
28519
+ let searchItem = this.parent.pivotCommon.eventBase.searchListItem;
28520
+ for (let i = 0; i < this.parentIDs.length; i++) {
28521
+ if (id === this.parentIDs[i]) {
28522
+ addClass([liElement], ICON_DISABLE);
28523
+ }
28524
+ for (let li2 of searchItem) {
28525
+ let parentID = this.parent.pivotCommon.eventBase.getParentIDs(this.fieldTable, li2.getAttribute('data-uid'), []);
28526
+ if (PivotUtil.inArray(id, parentID) > -1) {
28527
+ removeClass([liElement], ICON_DISABLE);
28528
+ break;
28529
+ }
28530
+ }
28531
+ }
28532
+ }
28533
+ else {
28534
+ for (let i = 0; i < this.nonSearchList.length; i++) {
28535
+ if (liElement.textContent === this.nonSearchList[i].textContent) {
28536
+ addClass([liElement], ICON_DISABLE);
28537
+ break;
28538
+ }
28539
+ else {
28540
+ if (liElement.innerText === this.nonSearchList[i].textContent) {
28541
+ addClass([liElement], ICON_DISABLE);
28542
+ break;
28543
+ }
28544
+ }
28545
+ }
28546
+ }
28547
+ }
28368
28548
  }
28369
28549
  updateOlapTreeNode(args) {
28370
28550
  let allowDrag = false;
@@ -28420,12 +28600,12 @@ class TreeViewRenderer {
28420
28600
  buttons: [{
28421
28601
  click: this.closeTreeDialog.bind(this),
28422
28602
  buttonModel: {
28423
- cssClass: CANCEL_BUTTON_CLASS, content: this.parent.localeObj.getConstant('cancel')
28603
+ cssClass: CANCEL_BUTTON_CLASS + (this.parent.cssClass ? (' ' + this.parent.cssClass) : ''), content: this.parent.localeObj.getConstant('cancel')
28424
28604
  }
28425
28605
  }, {
28426
28606
  click: this.onFieldAdd.bind(this),
28427
28607
  buttonModel: {
28428
- cssClass: OK_BUTTON_CLASS, content: this.parent.localeObj.getConstant('add'),
28608
+ cssClass: OK_BUTTON_CLASS + (this.parent.cssClass ? (' ' + this.parent.cssClass) : ''), content: this.parent.localeObj.getConstant('add'),
28429
28609
  isPrimary: true
28430
28610
  }
28431
28611
  }],
@@ -28454,7 +28634,7 @@ class TreeViewRenderer {
28454
28634
  });
28455
28635
  let editorSearch = createElement('input', { attrs: { 'type': 'text' } });
28456
28636
  searchWrapper.appendChild(editorSearch);
28457
- let treeOuterDiv = createElement('div', { className: EDITOR_TREE_CONTAINER_CLASS + '-outer-div' });
28637
+ let treeOuterDiv = createElement('div', { className: FIELD_LIST_TREE_OUTER_DIV_CLASS });
28458
28638
  let treeViewContainer = createElement('div', {
28459
28639
  className: EDITOR_TREE_CONTAINER_CLASS + ' ' + (this.parent.dataType === 'olap' ? 'e-olap-field-list-tree' : '')
28460
28640
  });
@@ -28464,7 +28644,7 @@ class TreeViewRenderer {
28464
28644
  placeholder: this.parent.localeObj.getConstant('search'),
28465
28645
  enableRtl: this.parent.enableRtl,
28466
28646
  locale: this.parent.locale,
28467
- cssClass: EDITOR_SEARCH_CLASS,
28647
+ cssClass: EDITOR_SEARCH_CLASS + (this.parent.cssClass ? (' ' + this.parent.cssClass) : ''),
28468
28648
  change: this.textChange.bind(this)
28469
28649
  });
28470
28650
  this.editorSearch.isStringTemplate = true;
@@ -28500,14 +28680,41 @@ class TreeViewRenderer {
28500
28680
  }
28501
28681
  textChange(e) {
28502
28682
  this.parent.pivotCommon.eventBase.searchTreeNodes(e, this.fieldTable, true);
28503
- let promptDiv = this.fieldDialog.element.querySelector('.' + EMPTY_MEMBER_CLASS);
28683
+ let promptDiv;
28684
+ let treeOuterDiv;
28685
+ if (this.parent.isAdaptive) {
28686
+ promptDiv = this.fieldDialog.element.querySelector('.' + EMPTY_MEMBER_CLASS);
28687
+ }
28688
+ else {
28689
+ promptDiv = this.parentElement.querySelector('.' + EMPTY_MEMBER_CLASS);
28690
+ treeOuterDiv = this.parentElement.querySelector('.' + TREE_CONTAINER);
28691
+ }
28504
28692
  let liList = [].slice.call(this.fieldTable.element.querySelectorAll('li'));
28505
28693
  let disabledList = [].slice.call(this.fieldTable.element.querySelectorAll('li.' + ICON_DISABLE));
28506
28694
  if (liList.length === disabledList.length) {
28507
28695
  removeClass([promptDiv], ICON_DISABLE);
28696
+ if (!this.parent.isAdaptive) {
28697
+ addClass([treeOuterDiv], ICON_DISABLE);
28698
+ removeClass([treeOuterDiv], FIELD_LIST_TREE_OUTER_DIV_SEARCH_CLASS);
28699
+ }
28508
28700
  }
28509
28701
  else {
28510
28702
  addClass([promptDiv], ICON_DISABLE);
28703
+ if (!this.parent.isAdaptive) {
28704
+ removeClass([treeOuterDiv], ICON_DISABLE);
28705
+ addClass([treeOuterDiv], FIELD_LIST_TREE_OUTER_DIV_SEARCH_CLASS);
28706
+ }
28707
+ }
28708
+ this.isSearching = disabledList.length > 0 ? true : false;
28709
+ this.nonSearchList = disabledList;
28710
+ if (this.parent.dataType === 'olap') {
28711
+ this.parentIDs = [];
28712
+ for (let i = 0; i < liList.length; i++) {
28713
+ if (liList[i].classList.contains("e-level-1")) {
28714
+ let id = liList[i].getAttribute('data-uid');
28715
+ this.parentIDs.push(id);
28716
+ }
28717
+ }
28511
28718
  }
28512
28719
  }
28513
28720
  dragStart(args) {
@@ -29150,6 +29357,10 @@ class TreeViewRenderer {
29150
29357
  this.editorSearch.destroy();
29151
29358
  this.editorSearch = null;
29152
29359
  }
29360
+ if (this.fieldSearch && !this.fieldSearch.isDestroyed) {
29361
+ this.fieldSearch.destroy();
29362
+ this.fieldSearch = null;
29363
+ }
29153
29364
  }
29154
29365
  }
29155
29366
 
@@ -29453,7 +29664,7 @@ class PivotButton {
29453
29664
  buttonWrapper.appendChild(buttonElement);
29454
29665
  }
29455
29666
  element.appendChild(buttonWrapper);
29456
- let pivotButton = new Button({ enableRtl: this.parent.enableRtl, locale: this.parent.locale });
29667
+ let pivotButton = new Button({ enableRtl: this.parent.enableRtl, locale: this.parent.locale, cssClass: this.parent.cssClass });
29457
29668
  pivotButton.isStringTemplate = true;
29458
29669
  pivotButton.appendTo(buttonElement);
29459
29670
  this.unWireEvent(buttonWrapper, i === valuePos && axis !== 'all-fields' ? 'values' : axis, isMeasureAvail);
@@ -30264,7 +30475,7 @@ class PivotButton {
30264
30475
  return [
30265
30476
  {
30266
30477
  buttonModel: {
30267
- cssClass: 'e-clear-filter-button' + (this.parent.pivotCommon.filterDialog.allowExcelLikeFilter ? '' : ' ' + ICON_DISABLE),
30478
+ cssClass: 'e-clear-filter-button' + (this.parent.pivotCommon.filterDialog.allowExcelLikeFilter ? '' : ' ' + ICON_DISABLE) + (this.parent.cssClass ? (' ' + this.parent.cssClass) : ''),
30268
30479
  iconCss: 'e-icons e-clear-filter-icon', enableRtl: this.parent.enableRtl,
30269
30480
  content: this.parent.localeObj.getConstant('clearFilter'), disabled: (this.parent.pivotCommon.filterDialog.filterObject ? false : true)
30270
30481
  },
@@ -30272,13 +30483,13 @@ class PivotButton {
30272
30483
  },
30273
30484
  {
30274
30485
  buttonModel: {
30275
- cssClass: OK_BUTTON_CLASS, content: this.parent.localeObj.getConstant('ok'), isPrimary: true
30486
+ cssClass: OK_BUTTON_CLASS + (this.parent.cssClass ? (' ' + this.parent.cssClass) : ''), content: this.parent.localeObj.getConstant('ok'), isPrimary: true
30276
30487
  },
30277
30488
  click: (this.index === 0 ? this.updateFilterState.bind(this, this.fieldName) : this.updateCustomFilter.bind(this))
30278
30489
  },
30279
30490
  {
30280
30491
  click: this.parent.pivotCommon.filterDialog.closeFilterDialog.bind(this.parent.pivotCommon.filterDialog),
30281
- buttonModel: { cssClass: CANCEL_BUTTON_CLASS, content: this.parent.localeObj.getConstant('cancel') }
30492
+ buttonModel: { cssClass: CANCEL_BUTTON_CLASS + (this.parent.cssClass ? (' ' + this.parent.cssClass) : ''), content: this.parent.localeObj.getConstant('cancel') }
30282
30493
  }
30283
30494
  ];
30284
30495
  }
@@ -31484,6 +31695,8 @@ let PivotFieldList = class PivotFieldList extends Component {
31484
31695
  }
31485
31696
  requireRefresh = true;
31486
31697
  break;
31698
+ case 'enableFieldSearching':
31699
+ this.refresh();
31487
31700
  }
31488
31701
  if (requireRefresh) {
31489
31702
  this.fieldListRender();
@@ -31526,7 +31739,7 @@ let PivotFieldList = class PivotFieldList extends Component {
31526
31739
  customProperties.enableValueSorting = this.staticPivotGridModule ?
31527
31740
  this.staticPivotGridModule.enableValueSorting : this.enableValueSorting;
31528
31741
  if (this.dataSourceSettings.mode !== 'Server') {
31529
- this.engineModule.renderEngine(this.dataSourceSettings, customProperties, this.getValueCellInfo.bind(this), this.getHeaderSortInfo.bind(this));
31742
+ this.engineModule.renderEngine(this.dataSourceSettings, customProperties, this.aggregateCellInfo ? this.getValueCellInfo.bind(this) : undefined, this.onHeadersSort ? this.getHeaderSortInfo.bind(this) : undefined);
31530
31743
  }
31531
31744
  this.pivotFieldList = this.engineModule.fieldList;
31532
31745
  let eventArgs = {
@@ -31542,7 +31755,7 @@ let PivotFieldList = class PivotFieldList extends Component {
31542
31755
  });
31543
31756
  }
31544
31757
  else if (this.dataType === 'olap') {
31545
- this.olapEngineModule.renderEngine(this.dataSourceSettings, this.frameCustomProperties(this.olapEngineModule.fieldListData, this.olapEngineModule.fieldList), this.getHeaderSortInfo.bind(this));
31758
+ this.olapEngineModule.renderEngine(this.dataSourceSettings, this.frameCustomProperties(this.olapEngineModule.fieldListData, this.olapEngineModule.fieldList), this.onHeadersSort ? this.getHeaderSortInfo.bind(this) : undefined);
31546
31759
  this.pivotFieldList = this.olapEngineModule.fieldList;
31547
31760
  let eventArgs = {
31548
31761
  pivotFieldList: this.pivotFieldList,
@@ -31620,10 +31833,10 @@ let PivotFieldList = class PivotFieldList extends Component {
31620
31833
  this.fieldListSpinnerElement = this.element.querySelector('.e-pivotfieldlist-container');
31621
31834
  }
31622
31835
  if (this.spinnerTemplate) {
31623
- createSpinner({ target: this.fieldListSpinnerElement, template: this.spinnerTemplate }, this.createElement);
31836
+ createSpinner({ target: this.fieldListSpinnerElement, template: this.spinnerTemplate, cssClass: this.cssClass ? this.cssClass : undefined }, this.createElement);
31624
31837
  }
31625
31838
  else {
31626
- createSpinner({ target: this.fieldListSpinnerElement }, this.createElement);
31839
+ createSpinner({ target: this.fieldListSpinnerElement, cssClass: this.cssClass ? this.cssClass : undefined }, this.createElement);
31627
31840
  }
31628
31841
  let args;
31629
31842
  args = {
@@ -31781,7 +31994,7 @@ let PivotFieldList = class PivotFieldList extends Component {
31781
31994
  pivot.lastFilterInfo = {};
31782
31995
  }
31783
31996
  else {
31784
- pivot.engineModule.renderEngine(pivot.dataSourceSettings, customProperties, pivot.getValueCellInfo.bind(pivot), pivot.getHeaderSortInfo.bind(pivot));
31997
+ pivot.engineModule.renderEngine(pivot.dataSourceSettings, customProperties, pivot.aggregateCellInfo ? pivot.getValueCellInfo.bind(pivot) : undefined, pivot.onHeadersSort ? pivot.getHeaderSortInfo.bind(pivot) : undefined);
31785
31998
  }
31786
31999
  }
31787
32000
  }
@@ -31878,7 +32091,7 @@ let PivotFieldList = class PivotFieldList extends Component {
31878
32091
  }
31879
32092
  }
31880
32093
  else {
31881
- pivot.olapEngineModule.renderEngine(pivot.dataSourceSettings, customProperties, pivot.getHeaderSortInfo.bind(pivot));
32094
+ pivot.olapEngineModule.renderEngine(pivot.dataSourceSettings, customProperties, pivot.onHeadersSort ? pivot.getHeaderSortInfo.bind(pivot) : undefined);
31882
32095
  }
31883
32096
  pivot.lastSortInfo = {};
31884
32097
  pivot.lastAggregationInfo = {};
@@ -32127,6 +32340,9 @@ __decorate$4([
32127
32340
  __decorate$4([
32128
32341
  Property(false)
32129
32342
  ], PivotFieldList.prototype, "allowCalculatedField", void 0);
32343
+ __decorate$4([
32344
+ Property(false)
32345
+ ], PivotFieldList.prototype, "enableFieldSearching", void 0);
32130
32346
  __decorate$4([
32131
32347
  Property(false)
32132
32348
  ], PivotFieldList.prototype, "showValuesButton", void 0);
@@ -33189,13 +33405,15 @@ class CalculatedField {
33189
33405
  click: this.applyFormula.bind(this),
33190
33406
  buttonModel: {
33191
33407
  content: this.parent.localeObj.getConstant('ok'),
33192
- isPrimary: true
33408
+ isPrimary: true,
33409
+ cssClass: this.parent.cssClass
33193
33410
  }
33194
33411
  },
33195
33412
  {
33196
33413
  click: this.cancelClick.bind(this),
33197
33414
  buttonModel: {
33198
- content: this.parent.localeObj.getConstant('cancel')
33415
+ content: this.parent.localeObj.getConstant('cancel'),
33416
+ cssClass: this.parent.cssClass
33199
33417
  }
33200
33418
  }
33201
33419
  ];
@@ -33203,7 +33421,7 @@ class CalculatedField {
33203
33421
  let clearButton = {
33204
33422
  click: this.clearFormula.bind(this),
33205
33423
  buttonModel: {
33206
- cssClass: 'e-calc-clear-btn',
33424
+ cssClass: 'e-calc-clear-btn' + (this.parent.cssClass ? (' ' + this.parent.cssClass) : ''),
33207
33425
  content: this.parent.localeObj.getConstant('clear'),
33208
33426
  }
33209
33427
  };
@@ -33632,7 +33850,8 @@ class CalculatedField {
33632
33850
  change: (args) => {
33633
33851
  this.formatText = args.value;
33634
33852
  this.formulaText = select('#' + this.parentID + 'droppable', document).value;
33635
- }
33853
+ },
33854
+ cssClass: this.parent.cssClass
33636
33855
  });
33637
33856
  customerFormatObj.isStringTemplate = true;
33638
33857
  customerFormatObj.appendTo('#' + this.parentID + 'Custom_Format_Element');
@@ -33935,7 +34154,7 @@ class CalculatedField {
33935
34154
  dialogRenderer.parentElement.querySelector('.' + FORMULA) !== null) {
33936
34155
  this.createOlapDropElements();
33937
34156
  }
33938
- let cancelBtn = new Button({ cssClass: FLAT, isPrimary: true, locale: this.parent.locale, enableRtl: this.parent.enableRtl });
34157
+ let cancelBtn = new Button({ cssClass: FLAT + (this.parent.cssClass ? (' ' + this.parent.cssClass) : ''), isPrimary: true, locale: this.parent.locale, enableRtl: this.parent.enableRtl });
33939
34158
  cancelBtn.isStringTemplate = true;
33940
34159
  cancelBtn.appendTo('#' + this.parentID + 'cancelBtn');
33941
34160
  if (cancelBtn.element) {
@@ -33943,7 +34162,7 @@ class CalculatedField {
33943
34162
  }
33944
34163
  if (this.parent.
33945
34164
  dialogRenderer.parentElement.querySelector('.' + FORMULA) !== null && this.parent.isAdaptive) {
33946
- let okBtn = new Button({ cssClass: FLAT + ' ' + OUTLINE_CLASS, isPrimary: true, locale: this.parent.locale, enableRtl: this.parent.enableRtl });
34165
+ let okBtn = new Button({ cssClass: FLAT + ' ' + OUTLINE_CLASS + (this.parent.cssClass ? (' ' + this.parent.cssClass) : ''), isPrimary: true, locale: this.parent.locale, enableRtl: this.parent.enableRtl });
33947
34166
  okBtn.isStringTemplate = true;
33948
34167
  okBtn.appendTo('#' + this.parentID + 'okBtn');
33949
34168
  this.inputObj = new MaskedTextBox({
@@ -33952,7 +34171,8 @@ class CalculatedField {
33952
34171
  change: (args) => {
33953
34172
  this.fieldText = args.value;
33954
34173
  this.formulaText = select('#' + this.parentID + 'droppable', document).value;
33955
- }
34174
+ },
34175
+ cssClass: this.parent.cssClass
33956
34176
  });
33957
34177
  this.inputObj.isStringTemplate = true;
33958
34178
  this.inputObj.appendTo('#' + this.parentID + 'ddlelement');
@@ -33963,7 +34183,8 @@ class CalculatedField {
33963
34183
  change: (args) => {
33964
34184
  this.formatText = args.value;
33965
34185
  this.formulaText = select('#' + this.parentID + 'droppable', document).value;
33966
- }
34186
+ },
34187
+ cssClass: this.parent.cssClass
33967
34188
  });
33968
34189
  formatInputObj.isStringTemplate = true;
33969
34190
  formatInputObj.appendTo('#' + this.parentID + 'Custom_Format_Element');
@@ -33989,7 +34210,7 @@ class CalculatedField {
33989
34210
  }
33990
34211
  }
33991
34212
  else if (this.parent.isAdaptive) {
33992
- let addBtn = new Button({ cssClass: FLAT, isPrimary: true, locale: this.parent.locale, enableRtl: this.parent.enableRtl });
34213
+ let addBtn = new Button({ cssClass: FLAT + (this.parent.cssClass ? (' ' + this.parent.cssClass) : ''), isPrimary: true, locale: this.parent.locale, enableRtl: this.parent.enableRtl });
33993
34214
  addBtn.isStringTemplate = true;
33994
34215
  addBtn.appendTo('#' + this.parentID + 'addBtn');
33995
34216
  if (this.parent.dataType === 'olap') {
@@ -34046,7 +34267,8 @@ class CalculatedField {
34046
34267
  name: AGRTYPE + key,
34047
34268
  checked: args.element.querySelector('[data-type').getAttribute('data-type') === type[i],
34048
34269
  change: this.onChange.bind(this),
34049
- locale: this.parent.locale, enableRtl: this.parent.enableRtl
34270
+ locale: this.parent.locale, enableRtl: this.parent.enableRtl,
34271
+ cssClass: this.parent.cssClass
34050
34272
  });
34051
34273
  radiobutton.isStringTemplate = true;
34052
34274
  radiobutton.appendTo('#' + this.parentID + 'radio' + key + type[i]);
@@ -34083,7 +34305,8 @@ class CalculatedField {
34083
34305
  }
34084
34306
  let checkbox = new CheckBox({
34085
34307
  label: this.parent.engineModule.fieldList[key].caption + ' (' + this.parent.localeObj.getConstant(type) + ')',
34086
- locale: this.parent.locale, enableRtl: this.parent.enableRtl
34308
+ locale: this.parent.locale, enableRtl: this.parent.enableRtl,
34309
+ cssClass: this.parent.cssClass
34087
34310
  });
34088
34311
  checkbox.isStringTemplate = true;
34089
34312
  checkbox.appendTo('#' + this.parentID + '_' + index);
@@ -34178,14 +34401,16 @@ class CalculatedField {
34178
34401
  this.dialog.refresh();
34179
34402
  this.inputObj = new MaskedTextBox({
34180
34403
  placeholder: this.parent.localeObj.getConstant('fieldName'),
34181
- locale: this.parent.locale, enableRtl: this.parent.enableRtl
34404
+ locale: this.parent.locale, enableRtl: this.parent.enableRtl,
34405
+ cssClass: this.parent.cssClass
34182
34406
  });
34183
34407
  this.inputObj.isStringTemplate = true;
34184
34408
  this.inputObj.appendTo('#' + this.parentID + 'ddlelement');
34185
34409
  if (this.parent.dataType === 'pivot') {
34186
34410
  let customerFormatObj = new MaskedTextBox({
34187
34411
  placeholder: this.parent.localeObj.getConstant('numberFormatString'),
34188
- locale: this.parent.locale, enableRtl: this.parent.enableRtl
34412
+ locale: this.parent.locale, enableRtl: this.parent.enableRtl,
34413
+ cssClass: this.parent.cssClass
34189
34414
  });
34190
34415
  customerFormatObj.isStringTemplate = true;
34191
34416
  customerFormatObj.appendTo('#' + this.parentID + 'Custom_Format_Element');
@@ -34226,14 +34451,14 @@ class CalculatedField {
34226
34451
  {
34227
34452
  click: isRemove ? this.removeCalcField.bind(this, node) : this.replaceFormula.bind(this, calcInfo),
34228
34453
  buttonModel: {
34229
- cssClass: OK_BUTTON_CLASS + ' ' + FLAT_CLASS,
34454
+ cssClass: OK_BUTTON_CLASS + ' ' + FLAT_CLASS + (this.parent.cssClass ? (' ' + this.parent.cssClass) : ''),
34230
34455
  content: isRemove ? this.parent.localeObj.getConstant('yes') : this.parent.localeObj.getConstant('ok'), isPrimary: true
34231
34456
  }
34232
34457
  },
34233
34458
  {
34234
34459
  click: this.removeErrorDialog.bind(this),
34235
34460
  buttonModel: {
34236
- cssClass: CANCEL_BUTTON_CLASS,
34461
+ cssClass: CANCEL_BUTTON_CLASS + (this.parent.cssClass ? (' ' + this.parent.cssClass) : ''),
34237
34462
  content: isRemove ? this.parent.localeObj.getConstant('no') : this.parent.localeObj.getConstant('cancel'), isPrimary: true
34238
34463
  }
34239
34464
  }
@@ -34377,7 +34602,8 @@ class FieldList {
34377
34602
  maxNodeLimitInMemberEditor: this.parent.maxNodeLimitInMemberEditor,
34378
34603
  aggregateCellInfo: this.parent.bindTriggerEvents.bind(this.parent),
34379
34604
  onHeadersSort: this.parent.bindTriggerEvents.bind(this.parent),
34380
- cssClass: this.parent.cssClass
34605
+ cssClass: this.parent.cssClass,
34606
+ enableFieldSearching: this.parent.enableFieldSearching
34381
34607
  });
34382
34608
  this.parent.pivotFieldListModule.isPopupView = true;
34383
34609
  this.parent.pivotFieldListModule.pivotGridModule = this.parent;
@@ -35043,7 +35269,7 @@ class GroupingBar {
35043
35269
  }
35044
35270
  element.prepend(createElement('div', { id: this.parent.element.id + '_AllFields' }));
35045
35271
  let toolbarObj = new Toolbar$1({
35046
- cssClass: ALL_FIELDS_PANEL_CLASS,
35272
+ cssClass: ALL_FIELDS_PANEL_CLASS + (this.parent.cssClass ? (' ' + this.parent.cssClass) : ''),
35047
35273
  enableRtl: this.parent.enableRtl,
35048
35274
  items: [{ template: '<div class=' + GROUP_ALL_FIELDS_CLASS + '></div>' }],
35049
35275
  allowKeyboard: false,
@@ -35142,8 +35368,8 @@ class ConditionalFormatting {
35142
35368
  {
35143
35369
  click: this.addButtonClick.bind(this),
35144
35370
  buttonModel: {
35145
- cssClass: this.parent.isAdaptive ? (FORMAT_ROUND_BUTTON + ' ' + FORMAT_CONDITION_BUTTON) :
35146
- FORMAT_CONDITION_BUTTON,
35371
+ cssClass: (this.parent.isAdaptive ? (FORMAT_ROUND_BUTTON + ' ' + FORMAT_CONDITION_BUTTON) :
35372
+ FORMAT_CONDITION_BUTTON) + (this.parent.cssClass ? (' ' + this.parent.cssClass) : ''),
35147
35373
  iconCss: ICON + ' ' + ADD_ICON_CLASS,
35148
35374
  content: this.parent.isAdaptive ? '' : this.parent.localeObj.getConstant('condition')
35149
35375
  }
@@ -35152,7 +35378,7 @@ class ConditionalFormatting {
35152
35378
  click: this.applyButtonClick.bind(this),
35153
35379
  isFlat: true,
35154
35380
  buttonModel: {
35155
- isPrimary: true, cssClass: FORMAT_APPLY_BUTTON,
35381
+ isPrimary: true, cssClass: FORMAT_APPLY_BUTTON + (this.parent.cssClass ? (' ' + this.parent.cssClass) : ''),
35156
35382
  content: this.parent.localeObj.getConstant('apply')
35157
35383
  }
35158
35384
  },
@@ -35160,7 +35386,7 @@ class ConditionalFormatting {
35160
35386
  click: this.cancelButtonClick.bind(this),
35161
35387
  isFlat: true,
35162
35388
  buttonModel: {
35163
- cssClass: FORMAT_CANCEL_BUTTON,
35389
+ cssClass: FORMAT_CANCEL_BUTTON + (this.parent.cssClass ? (' ' + this.parent.cssClass) : ''),
35164
35390
  content: this.parent.localeObj.getConstant('cancel')
35165
35391
  }
35166
35392
  }
@@ -35527,7 +35753,7 @@ class ConditionalFormatting {
35527
35753
  addClass([this.backgroundColor[i].element.nextElementSibling.querySelector('.e-selected-color')], ICON);
35528
35754
  let toggleBtn = new Button({
35529
35755
  iconCss: ICON + ' ' + FORMAT_DELETE_ICON,
35530
- cssClass: FLAT, locale: this.parent.locale, enableRtl: this.parent.enableRtl
35756
+ cssClass: FLAT + (this.parent.cssClass ? (' ' + this.parent.cssClass) : ''), locale: this.parent.locale, enableRtl: this.parent.enableRtl
35531
35757
  });
35532
35758
  toggleBtn.isStringTemplate = true;
35533
35759
  toggleBtn.appendTo('#' + this.parentID + 'removeButton' + i);
@@ -35748,6 +35974,7 @@ class Toolbar$2 {
35748
35974
  locale: this.parent.locale,
35749
35975
  items: this.getItems(),
35750
35976
  allowKeyboard: false,
35977
+ cssClass: this.parent.cssClass,
35751
35978
  width: !this.parent.gridSettings.allowAutoResizing ? (this.parent.grid ? (this.parent.getGridWidthAsNumber() - 2) : (this.parent.getWidthAsNumber() - 2)) : 'auto'
35752
35979
  });
35753
35980
  this.toolbar.isStringTemplate = true;
@@ -35837,7 +36064,7 @@ class Toolbar$2 {
35837
36064
  let toDisable = this.parent.displayOption.view === 'Chart';
35838
36065
  items.push({
35839
36066
  prefixIcon: TOOLBAR_GRID + ' ' + ICON, tooltipText: this.parent.localeObj.getConstant('grid'),
35840
- id: this.parent.element.id + 'grid', cssClass: toDisable ? MENU_DISABLE : '',
36067
+ id: this.parent.element.id + 'grid', cssClass: (toDisable ? MENU_DISABLE : '') + (this.parent.cssClass ? (' ' + this.parent.cssClass) : ''),
35841
36068
  click: this.menuItemClick.bind(this)
35842
36069
  });
35843
36070
  break;
@@ -35845,7 +36072,7 @@ class Toolbar$2 {
35845
36072
  let validTypes = (this.parent.displayOption.view === 'Table');
35846
36073
  items.push({
35847
36074
  template: '<ul id="' + this.parent.element.id + 'chart_menu"></ul>',
35848
- id: this.parent.element.id + 'chartmenu', cssClass: validTypes ? MENU_DISABLE : ''
36075
+ id: this.parent.element.id + 'chartmenu', cssClass: (validTypes ? MENU_DISABLE : '') + (this.parent.cssClass ? (' ' + this.parent.cssClass) : '')
35849
36076
  });
35850
36077
  break;
35851
36078
  case 'MDX':
@@ -36337,14 +36564,14 @@ class Toolbar$2 {
36337
36564
  {
36338
36565
  buttonModel: {
36339
36566
  content: this.parent.localeObj.getConstant('yes'), isPrimary: true,
36340
- cssClass: OK_BUTTON_CLASS
36567
+ cssClass: OK_BUTTON_CLASS + (this.parent.cssClass ? (' ' + this.parent.cssClass) : '')
36341
36568
  },
36342
36569
  click: this.okButtonClick.bind(this)
36343
36570
  },
36344
36571
  {
36345
36572
  buttonModel: {
36346
36573
  content: this.parent.localeObj.getConstant('no'),
36347
- cssClass: CANCEL_BUTTON_CLASS
36574
+ cssClass: CANCEL_BUTTON_CLASS + (this.parent.cssClass ? (' ' + this.parent.cssClass) : '')
36348
36575
  },
36349
36576
  click: this.cancelButtonClick.bind(this)
36350
36577
  }
@@ -36761,7 +36988,7 @@ class Toolbar$2 {
36761
36988
  this.parent.element.appendChild(inputCheckbox);
36762
36989
  let checkbox = new CheckBox({
36763
36990
  label: this.parent.localeObj.getConstant('multipleAxes'),
36764
- cssClass: 'e-multipleAxes',
36991
+ cssClass: 'e-multipleAxes' + (this.parent.cssClass ? (' ' + this.parent.cssClass) : ''),
36765
36992
  checked: this.parent.chartSettings.enableMultipleAxis,
36766
36993
  change: (args) => {
36767
36994
  document.getElementById(this.parent.element.id + '_' + 'multipleAxes').click();
@@ -36793,7 +37020,7 @@ class Toolbar$2 {
36793
37020
  let checkbox = new CheckBox({
36794
37021
  label: this.parent.localeObj.getConstant('showLegend'),
36795
37022
  checked: this.getLableState(this.parent.chartSettings.chartSeries.type),
36796
- cssClass: 'e-showLegend',
37023
+ cssClass: 'e-showLegend' + (this.parent.cssClass ? (' ' + this.parent.cssClass) : ''),
36797
37024
  change: (args) => {
36798
37025
  document.getElementById(this.parent.element.id + '_' + 'showLegend').click();
36799
37026
  },
@@ -37165,11 +37392,11 @@ class Toolbar$2 {
37165
37392
  buttons: [
37166
37393
  {
37167
37394
  click: () => { this.chartTypeDialogUpdate(); },
37168
- buttonModel: { cssClass: OK_BUTTON_CLASS, content: this.parent.localeObj.getConstant('ok'), isPrimary: true },
37395
+ buttonModel: { cssClass: OK_BUTTON_CLASS + (this.parent.cssClass ? (' ' + this.parent.cssClass) : ''), content: this.parent.localeObj.getConstant('ok'), isPrimary: true },
37169
37396
  },
37170
37397
  {
37171
37398
  click: () => { this.removeDialog(); },
37172
- buttonModel: { cssClass: CANCEL_BUTTON_CLASS, content: this.parent.localeObj.getConstant('cancel') }
37399
+ buttonModel: { cssClass: CANCEL_BUTTON_CLASS + (this.parent.cssClass ? (' ' + this.parent.cssClass) : ''), content: this.parent.localeObj.getConstant('cancel') }
37173
37400
  }
37174
37401
  ],
37175
37402
  closeOnEscape: true,
@@ -37310,7 +37537,7 @@ class Toolbar$2 {
37310
37537
  beforeOpen() {
37311
37538
  let checkbox = new CheckBox({
37312
37539
  label: this.parent.localeObj.getConstant('multipleAxes'),
37313
- cssClass: 'e-dialog-multiple-axis',
37540
+ cssClass: 'e-dialog-multiple-axis' + (this.parent.cssClass ? (' ' + this.parent.cssClass) : ''),
37314
37541
  checked: this.parent.chartSettings.enableMultipleAxis ? this.parent.chartSettings.enableMultipleAxis : false,
37315
37542
  change: (args) => {
37316
37543
  getInstance(select('#' + this.parent.element.id + '_AxisModeOption'), DropDownList).enabled = args.checked;
@@ -37322,7 +37549,7 @@ class Toolbar$2 {
37322
37549
  label: this.parent.localeObj.getConstant('showLegend'),
37323
37550
  checked: this.getLableState(this.parent.chartSettings.chartSeries.type),
37324
37551
  change: () => { this.chartLableState = true; },
37325
- cssClass: 'e-dialog-show-legend',
37552
+ cssClass: 'e-dialog-show-legend' + (this.parent.cssClass ? (' ' + this.parent.cssClass) : ''),
37326
37553
  enableRtl: this.parent.enableRtl,
37327
37554
  locale: this.parent.locale
37328
37555
  });
@@ -37455,13 +37682,13 @@ class NumberFormatting {
37455
37682
  buttons: [
37456
37683
  {
37457
37684
  click: this.updateFormatting.bind(this),
37458
- buttonModel: { cssClass: OK_BUTTON_CLASS, content: this.parent.localeObj.getConstant('apply'), isPrimary: true }
37685
+ buttonModel: { cssClass: OK_BUTTON_CLASS + (this.parent.cssClass ? (' ' + this.parent.cssClass) : ''), content: this.parent.localeObj.getConstant('apply'), isPrimary: true }
37459
37686
  },
37460
37687
  {
37461
37688
  click: () => {
37462
37689
  this.dialog.hide();
37463
37690
  },
37464
- buttonModel: { cssClass: CANCEL_BUTTON_CLASS, content: this.parent.localeObj.getConstant('cancel') }
37691
+ buttonModel: { cssClass: CANCEL_BUTTON_CLASS + (this.parent.cssClass ? (' ' + this.parent.cssClass) : ''), content: this.parent.localeObj.getConstant('cancel') }
37465
37692
  }
37466
37693
  ],
37467
37694
  closeOnEscape: true,
@@ -38124,13 +38351,13 @@ class Grouping {
38124
38351
  buttons: [
38125
38352
  {
38126
38353
  click: this.updateGroupSettings.bind(this),
38127
- buttonModel: { cssClass: OK_BUTTON_CLASS, content: this.parent.localeObj.getConstant('ok'), isPrimary: true }
38354
+ buttonModel: { cssClass: OK_BUTTON_CLASS + (this.parent.cssClass ? (' ' + this.parent.cssClass) : ''), content: this.parent.localeObj.getConstant('ok'), isPrimary: true }
38128
38355
  },
38129
38356
  {
38130
38357
  click: () => {
38131
38358
  this.groupDialog.hide();
38132
38359
  },
38133
- buttonModel: { cssClass: CANCEL_BUTTON_CLASS, content: this.parent.localeObj.getConstant('cancel') }
38360
+ buttonModel: { cssClass: CANCEL_BUTTON_CLASS + (this.parent.cssClass ? (' ' + this.parent.cssClass) : ''), content: this.parent.localeObj.getConstant('cancel') }
38134
38361
  }
38135
38362
  ],
38136
38363
  overlayClick: () => {
@@ -38198,7 +38425,8 @@ class Grouping {
38198
38425
  placeholder: this.parent.localeObj.getConstant('captionName'),
38199
38426
  enableRtl: this.parent.enableRtl,
38200
38427
  locale: this.parent.locale,
38201
- value: caption, width: '100%'
38428
+ value: caption, width: '100%',
38429
+ cssClass: this.parent.cssClass
38202
38430
  });
38203
38431
  captionInputObj1.isStringTemplate = true;
38204
38432
  captionInputObj1.appendTo(captionInputField1);
@@ -38206,7 +38434,8 @@ class Grouping {
38206
38434
  placeholder: this.parent.localeObj.getConstant('groupName'),
38207
38435
  enableRtl: this.parent.enableRtl,
38208
38436
  locale: this.parent.locale,
38209
- width: '100%'
38437
+ width: '100%',
38438
+ cssClass: this.parent.cssClass
38210
38439
  });
38211
38440
  inputObj1.isStringTemplate = true;
38212
38441
  inputObj1.appendTo(inputField1);
@@ -38354,7 +38583,8 @@ class Grouping {
38354
38583
  format: '###',
38355
38584
  value: startAt === undefined ? undefined : parseInt(startAt, 10),
38356
38585
  enabled: !(startAt === undefined),
38357
- width: '100%'
38586
+ width: '100%',
38587
+ cssClass: this.parent.cssClass
38358
38588
  });
38359
38589
  startAtInputObj.isStringTemplate = true;
38360
38590
  startAtInputObj.appendTo(startAtInputField1);
@@ -38366,7 +38596,8 @@ class Grouping {
38366
38596
  format: '###',
38367
38597
  value: endAt === undefined ? undefined : parseInt(endAt, 10),
38368
38598
  enabled: !(endAt === undefined),
38369
- width: '100%'
38599
+ width: '100%',
38600
+ cssClass: this.parent.cssClass
38370
38601
  });
38371
38602
  endAtInputObj.isStringTemplate = true;
38372
38603
  endAtInputObj.appendTo(endAtInputField1);
@@ -38378,7 +38609,8 @@ class Grouping {
38378
38609
  format: '###',
38379
38610
  min: 1,
38380
38611
  value: selectedInterval,
38381
- width: '100%'
38612
+ width: '100%',
38613
+ cssClass: this.parent.cssClass
38382
38614
  });
38383
38615
  intervalObj.isStringTemplate = true;
38384
38616
  intervalObj.appendTo(intervalInputField1);
@@ -38388,6 +38620,7 @@ class Grouping {
38388
38620
  checked: !(startAt === undefined),
38389
38621
  enableRtl: this.parent.enableRtl,
38390
38622
  locale: this.parent.locale,
38623
+ cssClass: this.parent.cssClass,
38391
38624
  change: (args) => {
38392
38625
  let startAtObj = (type === 'date' ?
38393
38626
  getInstance(select('#' + this.parentElement.id + 'group_start_input'), DateTimePicker) :
@@ -38403,6 +38636,7 @@ class Grouping {
38403
38636
  checked: !(endAt === undefined),
38404
38637
  enableRtl: this.parent.enableRtl,
38405
38638
  locale: this.parent.locale,
38639
+ cssClass: this.parent.cssClass,
38406
38640
  change: (args) => {
38407
38641
  let endAtObj = (type === 'date' ?
38408
38642
  getInstance(select('#' + this.parentElement.id + 'group_end_input'), DateTimePicker) :
@@ -38703,5 +38937,5 @@ class Grouping {
38703
38937
  * Export PivotGrid components
38704
38938
  */
38705
38939
 
38706
- export { GroupingBarSettings, CellEditSettings, ConditionalSettings, HyperlinkSettings, DisplayOption, PivotView, Render, ExcelExport$1 as ExcelExport, PDFExport, KeyboardInteraction, VirtualScroll$1 as VirtualScroll, DrillThrough, PivotChart, PivotFieldList, TreeViewRenderer, AxisFieldRenderer, AxisTableRenderer, DialogRenderer, EventBase, NodeStateModified, DataSourceUpdate, FieldList, CommonKeyboardInteraction, Common, GroupingBar, CalculatedField, ConditionalFormatting, PivotCommon, load, enginePopulating, enginePopulated, onFieldDropped, fieldDrop, beforePivotTableRender, afterPivotTableRender, beforeExport, excelHeaderQueryCellInfo, pdfHeaderQueryCellInfo, excelQueryCellInfo, pdfQueryCellInfo, onPdfCellRender, dataBound, queryCellInfo, headerCellInfo, hyperlinkCellClick, resizing, resizeStop, cellClick, drillThrough, beforeColumnsRender, selected, cellSelecting, drill, cellSelected, cellDeselected, rowSelected, rowDeselected, beginDrillThrough, editCompleted, multiLevelLabelClick, saveReport, fetchReport, loadReport, renameReport, removeReport, newReport, toolbarRender, toolbarClick, chartTooltipRender, chartLoaded, chartLoad, chartResized, chartAxisLabelRender, chartSeriesCreated, aggregateCellInfo, onHeadersSort, contextMenuClick, contextMenuOpen, fieldListRefreshed, conditionalFormatting, beforePdfExport, beforeExcelExport, memberFiltering, calculatedFieldCreate, memberEditorOpen, fieldRemove, numberFormatting, aggregateMenuOpen, fieldDragStart, chartPointClick, beforeServiceInvoke, actionBegin, actionComplete, actionFailure, initialLoad, uiUpdate, scroll, contentReady, dataReady, initSubComponent, treeViewUpdate, pivotButtonUpdate, initCalculatedField, click, initToolbar, initFormatting, initGrouping, sortValue, drillUp, drillDown, addNewReport, saveCurrentReport, saveAsCurrentReport, renameCurrentReport, removeCurrentReport, loadReports, openConditionalFormatting, openNumberFormatting, MdxQuery, showFieldList, tableView, chartView, multipleAxis, showLegend, pdfExport, pngExport, excelExport, csvExport, jpegExport, svgExport, hideSubTotals, subTotalsRow, subTotalsColumn, showSubTotals, hideGrandTotals, grandTotalsRow, grandTotalsColumn, showGrandTotals, numberFormattingMenu, conditionalFormattingMenu, reportChange, sortFieldTree, editCalculatedField, sortField, filterField, removeField, openCalculatedField, editRecord, saveEditedRecords, addNewRecord, removeRecord, aggregateField, contextMenuCalculatedField, windowResize, calculatedFieldApplied, editedRecordsSaved, newRecordAdded, recordRemoved, closeFieldlist, fieldTreeSorted, reportSaved, newReportAdded, reportReSaved, reportRenamed, reportRemoved, excelExported, csvExported, pdfExported, pngExported, jpegExported, svgExported, conditionallyFormatted, numberFormatted, tableViewed, chartViewed, subTotalsHidden, subTotalsRowShown, subTotalsColumnShown, subTotalsShown, grandTotalsHidden, grandTotalsRowShown, grandTotalsColumnShown, grandTotalsShown, valueSorted, calculatedFieldEdited, fieldSorted, fieldFiltered, fieldRemoved, fieldAggregated, recordEdited, reportChanged, windowResized, recordUpdated, drillThroughClosed, Theme, ErrorDialog, FilterDialog, PivotContextMenu, AggregateMenu, Toolbar$2 as Toolbar, NumberFormatting, Grouping, PivotEngine, PivotUtil, OlapEngine, MDXQuery };
38940
+ export { GroupingBarSettings, CellEditSettings, ConditionalSettings, HyperlinkSettings, DisplayOption, PivotView, Render, ExcelExport$1 as ExcelExport, PDFExport, KeyboardInteraction, VirtualScroll$1 as VirtualScroll, DrillThrough, PivotChart, PivotFieldList, TreeViewRenderer, AxisFieldRenderer, AxisTableRenderer, DialogRenderer, EventBase, NodeStateModified, DataSourceUpdate, FieldList, CommonKeyboardInteraction, Common, GroupingBar, CalculatedField, ConditionalFormatting, PivotCommon, load, enginePopulating, enginePopulated, onFieldDropped, fieldDrop, beforePivotTableRender, afterPivotTableRender, beforeExport, excelHeaderQueryCellInfo, pdfHeaderQueryCellInfo, excelQueryCellInfo, pdfQueryCellInfo, onPdfCellRender, dataBound, queryCellInfo, headerCellInfo, hyperlinkCellClick, resizing, resizeStop, cellClick, drillThrough, beforeColumnsRender, selected, cellSelecting, drill, cellSelected, cellDeselected, rowSelected, rowDeselected, beginDrillThrough, editCompleted, multiLevelLabelClick, saveReport, fetchReport, loadReport, renameReport, removeReport, newReport, toolbarRender, toolbarClick, chartTooltipRender, chartLoaded, chartLoad, chartResized, chartAxisLabelRender, chartSeriesCreated, aggregateCellInfo, onHeadersSort, contextMenuClick, contextMenuOpen, fieldListRefreshed, conditionalFormatting, beforePdfExport, beforeExcelExport, memberFiltering, calculatedFieldCreate, memberEditorOpen, fieldRemove, numberFormatting, aggregateMenuOpen, fieldDragStart, chartPointClick, beforeServiceInvoke, actionBegin, actionComplete, actionFailure, initialLoad, uiUpdate, scroll, verticalScroll, horizontalScroll, contentReady, dataReady, initSubComponent, treeViewUpdate, pivotButtonUpdate, initCalculatedField, click, initToolbar, initFormatting, initGrouping, sortValue, drillUp, drillDown, addNewReport, saveCurrentReport, saveAsCurrentReport, renameCurrentReport, removeCurrentReport, loadReports, openConditionalFormatting, openNumberFormatting, MdxQuery, showFieldList, tableView, chartView, multipleAxis, showLegend, pdfExport, pngExport, excelExport, csvExport, jpegExport, svgExport, hideSubTotals, subTotalsRow, subTotalsColumn, showSubTotals, hideGrandTotals, grandTotalsRow, grandTotalsColumn, showGrandTotals, numberFormattingMenu, conditionalFormattingMenu, reportChange, sortFieldTree, editCalculatedField, sortField, filterField, removeField, openCalculatedField, editRecord, saveEditedRecords, addNewRecord, removeRecord, aggregateField, contextMenuCalculatedField, windowResize, calculatedFieldApplied, editedRecordsSaved, newRecordAdded, recordRemoved, closeFieldlist, fieldTreeSorted, reportSaved, newReportAdded, reportReSaved, reportRenamed, reportRemoved, excelExported, csvExported, pdfExported, pngExported, jpegExported, svgExported, conditionallyFormatted, numberFormatted, tableViewed, chartViewed, subTotalsHidden, subTotalsRowShown, subTotalsColumnShown, subTotalsShown, grandTotalsHidden, grandTotalsRowShown, grandTotalsColumnShown, grandTotalsShown, valueSorted, calculatedFieldEdited, fieldSorted, fieldFiltered, fieldRemoved, fieldAggregated, recordEdited, reportChanged, windowResized, recordUpdated, drillThroughClosed, verticalScrolled, horizontalScrolled, Theme, ErrorDialog, FilterDialog, PivotContextMenu, AggregateMenu, Toolbar$2 as Toolbar, NumberFormatting, Grouping, PivotEngine, PivotUtil, OlapEngine, MDXQuery };
38707
38941
  //# sourceMappingURL=ej2-pivotview.es2015.js.map