@syncfusion/ej2-pivotview 20.1.58 → 20.2.38

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (149) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/dist/ej2-pivotview.umd.min.js +2 -2
  3. package/dist/ej2-pivotview.umd.min.js.map +1 -1
  4. package/dist/es6/ej2-pivotview.es2015.js +530 -235
  5. package/dist/es6/ej2-pivotview.es2015.js.map +1 -1
  6. package/dist/es6/ej2-pivotview.es5.js +544 -246
  7. package/dist/es6/ej2-pivotview.es5.js.map +1 -1
  8. package/dist/global/ej2-pivotview.min.js +2 -2
  9. package/dist/global/ej2-pivotview.min.js.map +1 -1
  10. package/dist/global/index.d.ts +1 -1
  11. package/helpers/e2e/index.js +9 -7
  12. package/helpers/e2e/pivotfieldlist.js +47 -31
  13. package/helpers/e2e/pivotview.js +68 -52
  14. package/package.json +22 -22
  15. package/src/base/engine.d.ts +1 -1
  16. package/src/base/engine.js +129 -82
  17. package/src/base/olap/engine.js +2 -2
  18. package/src/base/olap/mdx-query.js +1 -1
  19. package/src/base/util.js +2 -2
  20. package/src/common/actions/event-base.d.ts +4 -2
  21. package/src/common/actions/event-base.js +45 -10
  22. package/src/common/actions/field-list.js +2 -1
  23. package/src/common/actions/pivot-button.js +4 -4
  24. package/src/common/base/constant.d.ts +8 -0
  25. package/src/common/base/constant.js +8 -0
  26. package/src/common/base/css-constant.d.ts +16 -0
  27. package/src/common/base/css-constant.js +16 -0
  28. package/src/common/calculatedfield/calculated-field.js +24 -15
  29. package/src/common/conditionalformatting/conditional-formatting.js +5 -5
  30. package/src/common/grouping-bar/grouping-bar.js +1 -1
  31. package/src/common/popups/aggregate-menu.js +4 -3
  32. package/src/common/popups/drillthrough-dialog.js +10 -10
  33. package/src/common/popups/error-dialog.js +1 -1
  34. package/src/common/popups/filter-dialog.js +25 -14
  35. package/src/common/popups/formatting-dialog.js +2 -2
  36. package/src/common/popups/grouping.js +14 -7
  37. package/src/common/popups/toolbar.d.ts +1 -0
  38. package/src/common/popups/toolbar.js +26 -16
  39. package/src/pivotchart/base/pivotchart.js +3 -0
  40. package/src/pivotfieldlist/base/field-list-model.d.ts +5 -0
  41. package/src/pivotfieldlist/base/field-list.d.ts +4 -0
  42. package/src/pivotfieldlist/base/field-list.js +11 -6
  43. package/src/pivotfieldlist/renderer/dialog-renderer.js +17 -9
  44. package/src/pivotfieldlist/renderer/tree-renderer.d.ts +4 -0
  45. package/src/pivotfieldlist/renderer/tree-renderer.js +102 -8
  46. package/src/pivotview/actions/drill-through.js +2 -2
  47. package/src/pivotview/actions/virtualscroll.d.ts +1 -0
  48. package/src/pivotview/actions/virtualscroll.js +59 -30
  49. package/src/pivotview/base/pivotview-model.d.ts +7 -0
  50. package/src/pivotview/base/pivotview.d.ts +6 -0
  51. package/src/pivotview/base/pivotview.js +25 -12
  52. package/src/pivotview/model/chartsettings-model.d.ts +2 -2
  53. package/src/pivotview/model/chartsettings.d.ts +2 -2
  54. package/src/pivotview/model/chartsettings.js +2 -2
  55. package/src/pivotview/renderer/render.js +5 -2
  56. package/styles/bootstrap-dark.css +165 -32
  57. package/styles/bootstrap.css +165 -32
  58. package/styles/bootstrap4.css +166 -36
  59. package/styles/bootstrap5-dark.css +209 -45
  60. package/styles/bootstrap5.css +209 -45
  61. package/styles/fabric-dark.css +165 -32
  62. package/styles/fabric.css +165 -32
  63. package/styles/fluent-dark.css +183 -49
  64. package/styles/fluent.css +183 -49
  65. package/styles/highcontrast-light.css +165 -32
  66. package/styles/highcontrast.css +165 -32
  67. package/styles/material-dark.css +165 -32
  68. package/styles/material.css +165 -32
  69. package/styles/pivotfieldlist/_bootstrap-dark-definition.scss +10 -0
  70. package/styles/pivotfieldlist/_bootstrap-definition.scss +10 -0
  71. package/styles/pivotfieldlist/_bootstrap4-definition.scss +11 -1
  72. package/styles/pivotfieldlist/_bootstrap5-definition.scss +15 -6
  73. package/styles/pivotfieldlist/_fabric-dark-definition.scss +10 -1
  74. package/styles/pivotfieldlist/_fabric-definition.scss +10 -0
  75. package/styles/pivotfieldlist/_fluent-definition.scss +18 -8
  76. package/styles/pivotfieldlist/_fusionnew-definition.scss +189 -0
  77. package/styles/pivotfieldlist/_highcontrast-definition.scss +10 -0
  78. package/styles/pivotfieldlist/_highcontrast-light-definition.scss +10 -0
  79. package/styles/pivotfieldlist/_layout.scss +30 -14
  80. package/styles/pivotfieldlist/_material-dark-definition.scss +10 -0
  81. package/styles/pivotfieldlist/_material-definition.scss +10 -0
  82. package/styles/pivotfieldlist/_material3-definition.scss +190 -0
  83. package/styles/pivotfieldlist/_tailwind-definition.scss +19 -10
  84. package/styles/pivotfieldlist/_theme.scss +142 -7
  85. package/styles/pivotfieldlist/bootstrap-dark.css +146 -10
  86. package/styles/pivotfieldlist/bootstrap.css +146 -10
  87. package/styles/pivotfieldlist/bootstrap4.css +147 -11
  88. package/styles/pivotfieldlist/bootstrap5-dark.css +151 -15
  89. package/styles/pivotfieldlist/bootstrap5.css +151 -15
  90. package/styles/pivotfieldlist/fabric-dark.css +146 -10
  91. package/styles/pivotfieldlist/fabric.css +146 -10
  92. package/styles/pivotfieldlist/fluent-dark.css +154 -18
  93. package/styles/pivotfieldlist/fluent.css +154 -18
  94. package/styles/pivotfieldlist/highcontrast-light.css +146 -10
  95. package/styles/pivotfieldlist/highcontrast.css +146 -10
  96. package/styles/pivotfieldlist/icons/_bootstrap-dark.scss +5 -0
  97. package/styles/pivotfieldlist/icons/_bootstrap.scss +5 -0
  98. package/styles/pivotfieldlist/icons/_bootstrap4.scss +5 -0
  99. package/styles/pivotfieldlist/icons/_bootstrap5.scss +5 -0
  100. package/styles/pivotfieldlist/icons/_fabric-dark.scss +5 -0
  101. package/styles/pivotfieldlist/icons/_fabric.scss +5 -0
  102. package/styles/pivotfieldlist/icons/_fluent.scss +5 -0
  103. package/styles/pivotfieldlist/icons/_fusionnew.scss +352 -0
  104. package/styles/pivotfieldlist/icons/_highcontrast-light.scss +5 -0
  105. package/styles/pivotfieldlist/icons/_highcontrast.scss +5 -0
  106. package/styles/pivotfieldlist/icons/_material-dark.scss +5 -0
  107. package/styles/pivotfieldlist/icons/_material.scss +4 -0
  108. package/styles/pivotfieldlist/icons/_material3.scss +352 -0
  109. package/styles/pivotfieldlist/icons/_tailwind-dark.scss +4 -0
  110. package/styles/pivotfieldlist/icons/_tailwind.scss +4 -0
  111. package/styles/pivotfieldlist/material-dark.css +146 -10
  112. package/styles/pivotfieldlist/material.css +146 -10
  113. package/styles/pivotfieldlist/tailwind-dark.css +155 -21
  114. package/styles/pivotfieldlist/tailwind.css +156 -21
  115. package/styles/pivotview/_bootstrap-dark-definition.scss +4 -2
  116. package/styles/pivotview/_bootstrap-definition.scss +4 -2
  117. package/styles/pivotview/_bootstrap4-definition.scss +4 -2
  118. package/styles/pivotview/_bootstrap5-definition.scss +9 -8
  119. package/styles/pivotview/_fabric-dark-definition.scss +4 -1
  120. package/styles/pivotview/_fabric-definition.scss +4 -2
  121. package/styles/pivotview/_fluent-definition.scss +11 -9
  122. package/styles/pivotview/_fusionnew-definition.scss +131 -0
  123. package/styles/pivotview/_highcontrast-definition.scss +4 -2
  124. package/styles/pivotview/_highcontrast-light-definition.scss +4 -2
  125. package/styles/pivotview/_layout.scss +3 -17
  126. package/styles/pivotview/_material-dark-definition.scss +4 -1
  127. package/styles/pivotview/_material-definition.scss +4 -2
  128. package/styles/pivotview/_material3-definition.scss +131 -0
  129. package/styles/pivotview/_tailwind-definition.scss +8 -5
  130. package/styles/pivotview/_theme.scss +47 -27
  131. package/styles/pivotview/bootstrap-dark.css +19 -22
  132. package/styles/pivotview/bootstrap.css +19 -22
  133. package/styles/pivotview/bootstrap4.css +19 -25
  134. package/styles/pivotview/bootstrap5-dark.css +58 -30
  135. package/styles/pivotview/bootstrap5.css +58 -30
  136. package/styles/pivotview/fabric-dark.css +19 -22
  137. package/styles/pivotview/fabric.css +19 -22
  138. package/styles/pivotview/fluent-dark.css +29 -31
  139. package/styles/pivotview/fluent.css +29 -31
  140. package/styles/pivotview/highcontrast-light.css +19 -22
  141. package/styles/pivotview/highcontrast.css +19 -22
  142. package/styles/pivotview/icons/_fusionnew.scss +183 -0
  143. package/styles/pivotview/icons/_material3.scss +183 -0
  144. package/styles/pivotview/material-dark.css +19 -22
  145. package/styles/pivotview/material.css +19 -22
  146. package/styles/pivotview/tailwind-dark.css +27 -31
  147. package/styles/pivotview/tailwind.css +27 -31
  148. package/styles/tailwind-dark.css +182 -52
  149. package/styles/tailwind.css +183 -52
@@ -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';
@@ -862,9 +862,9 @@ class PivotUtil {
862
862
  }
863
863
  else if (type === true) {
864
864
  sortOrder === 'Ascending' ?
865
- (sortMembersOrder.sort((a, b) => (a.actualText === 'Grand Total' || b.actualText === 'Grand Total') ? 0 : (Number(a.actualText.toString().match(/\d+/)[0]) > Number(b.actualText.toString().match(/\d+/)[0])) ? 1 : ((Number(b.actualText.toString().match(/\d+/)[0]) > Number(a.actualText.toString().match(/\d+/)[0])) ? -1 : 0))) :
865
+ (sortMembersOrder.sort((a, b) => (a.actualText === 'Grand Total' || b.actualText === 'Grand Total') ? 0 : (a.actualText === 'Out of Range') ? 1 : (b.actualText === 'Out of Range') ? -1 : (Number(a.actualText.toString().match(/\d+/)) > Number(b.actualText.toString().match(/\d+/))) ? 1 : ((Number(b.actualText.toString().match(/\d+/)) > Number(a.actualText.toString().match(/\d+/))) ? -1 : 0))) :
866
866
  sortOrder === 'Descending' ?
867
- (sortMembersOrder.sort((a, b) => (a.actualText === 'Grand Total' || b.actualText === 'Grand Total') ? 0 : (Number(a.actualText.toString().match(/\d+/)[0]) < Number(b.actualText.toString().match(/\d+/)[0])) ? 1 : ((Number(b.actualText.toString().match(/\d+/)[0]) < Number(a.actualText.toString().match(/\d+/)[0])) ? -1 : 0))) :
867
+ (sortMembersOrder.sort((a, b) => (a.actualText === 'Grand Total' || b.actualText === 'Grand Total') ? 0 : (a.actualText === 'Out of Range') ? -1 : (b.actualText === 'Out of Range') ? 1 : (Number(a.actualText.toString().match(/\d+/)) < Number(b.actualText.toString().match(/\d+/))) ? 1 : ((Number(b.actualText.toString().match(/\d+/)) < Number(a.actualText.toString().match(/\d+/))) ? -1 : 0))) :
868
868
  sortMembersOrder;
869
869
  }
870
870
  else {
@@ -2536,14 +2536,14 @@ class PivotEngine {
2536
2536
  let mPos = this.fieldList[measure].index;
2537
2537
  let aggregate = this.fieldList[measure].aggregateType;
2538
2538
  this.rawIndexObject = {};
2539
- value = (type === 'row' ? this.getAggregateValue(rows[i].index, columns.indexObject, mPos, aggregate) :
2540
- this.getAggregateValue(columns.index, rows[i].indexObject, mPos, aggregate));
2539
+ value = (type === 'row' ? this.getAggregateValue(rows[i].index, columns.indexObject, mPos, aggregate, false) :
2540
+ this.getAggregateValue(columns.index, rows[i].indexObject, mPos, aggregate, false));
2541
2541
  let cellDetails = {
2542
2542
  fieldName: measure,
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,
@@ -3202,68 +3202,92 @@ class PivotEngine {
3202
3202
  return headers;
3203
3203
  }
3204
3204
  performFilterCommonUpdate(filterItem, headersInfo, addPos) {
3205
- let rawHeaders = headersInfo.axis === 'row' ? this.rMembers : this.cMembers;
3206
- let filterObjects = {};
3207
- for (let item of this.filterMembers) {
3208
- filterObjects[item] = item;
3209
- }
3210
- if (this.fieldFilterMem[filterItem.name]) {
3211
- rawHeaders = this.performFilterDeletion(headersInfo.headers, filterItem, headersInfo, filterObjects, 0);
3212
- }
3213
- if (addPos.length > 0 && headersInfo.fields.length > 0) {
3214
- this.frameHeaderObjectsCollection = true;
3215
- if (headersInfo.fields.filter((item) => { return item.showNoDataItems; }).length > 0) {
3216
- for (let i = 0; i < this.data.length; i++) {
3217
- addPos.push(i);
3205
+ if (headersInfo.axis === 'row' || headersInfo.axis === 'column') {
3206
+ let rawHeaders = headersInfo.axis === 'row' ? this.rMembers : this.cMembers;
3207
+ let filterObjects = {};
3208
+ for (let item of this.filterMembers) {
3209
+ filterObjects[item] = item;
3210
+ }
3211
+ if (this.fieldFilterMem[filterItem.name]) {
3212
+ rawHeaders = this.performFilterDeletion(headersInfo.headers, filterItem, headersInfo, filterObjects, 0);
3213
+ }
3214
+ if (addPos.length > 0 && headersInfo.fields.length > 0) {
3215
+ this.frameHeaderObjectsCollection = true;
3216
+ if (headersInfo.fields.filter((item) => { return item.showNoDataItems; }).length > 0) {
3217
+ for (let i = 0; i < this.data.length; i++) {
3218
+ addPos.push(i);
3219
+ }
3220
+ //addPos = (this.data as any).map((item, pos) => { return pos; });
3221
+ }
3222
+ /* eslint-disable */
3223
+ this.headerObjectsCollection['parent'] = this.getIndexedHeaders(headersInfo.fields, this.data, 0, addPos, headersInfo.axis, '');
3224
+ rawHeaders = this.performFilterAddition(rawHeaders, headersInfo.fields, headersInfo);
3225
+ let headerNames = {};
3226
+ for (let header of rawHeaders) {
3227
+ headerNames[header.valueSort.levelName.toString()] = header.valueSort.levelName.toString();
3228
+ }
3229
+ let excessHeaders = this.headerObjectsCollection['parent'].filter((header) => {
3230
+ return !headerNames[header.valueSort.levelName.toString()];
3231
+ });
3232
+ let grandHeader = rawHeaders.filter((item) => { return item.type === 'grand sum'; });
3233
+ if (grandHeader.length > 0) {
3234
+ rawHeaders.pop();
3235
+ }
3236
+ /* eslint-enable */
3237
+ rawHeaders = this.getSortedHeaders(rawHeaders.concat(excessHeaders), this.fieldList[headersInfo.fields[0].name].sort).concat(grandHeader);
3238
+ if (headersInfo.axis === 'row') {
3239
+ this.cMembers = this.getIndexedHeaders(this.columns, this.data, 0, this.filterMembers, 'column', '');
3240
+ this.insertAllMember(this.cMembers, this.filterMembers, '', 'column');
3241
+ }
3242
+ else {
3243
+ this.rMembers = this.getIndexedHeaders(this.rows, this.data, 0, this.filterMembers, 'row', '');
3244
+ this.insertAllMember(this.rMembers, this.filterMembers, '', 'row');
3218
3245
  }
3219
- //addPos = (this.data as any).map((item, pos) => { return pos; });
3220
3246
  }
3221
- /* eslint-disable */
3222
- this.headerObjectsCollection['parent'] = this.getIndexedHeaders(headersInfo.fields, this.data, 0, addPos, headersInfo.axis, '');
3223
- rawHeaders = this.performFilterAddition(rawHeaders, headersInfo.fields, headersInfo);
3224
- let headerNames = {};
3225
- for (let header of rawHeaders) {
3226
- headerNames[header.valueSort.levelName.toString()] = header.valueSort.levelName.toString();
3227
- }
3228
- let excessHeaders = this.headerObjectsCollection['parent'].filter((header) => {
3229
- return !headerNames[header.valueSort.levelName.toString()];
3230
- });
3231
- let grandHeader = rawHeaders.filter((item) => { return item.type === 'grand sum'; });
3232
- if (grandHeader.length > 0) {
3233
- rawHeaders.pop();
3247
+ if (headersInfo.axis === 'row') {
3248
+ this.rowCount = 0;
3234
3249
  }
3235
- /* eslint-enable */
3236
- rawHeaders = this.getSortedHeaders(rawHeaders.concat(excessHeaders), this.fieldList[headersInfo.fields[0].name].sort).concat(grandHeader);
3250
+ else {
3251
+ this.columnCount = 0;
3252
+ }
3253
+ this.updateHeadersCount(rawHeaders, headersInfo.axis, 0, headersInfo.fields, 'plus', false);
3237
3254
  if (headersInfo.axis === 'row') {
3238
- this.cMembers = this.getIndexedHeaders(this.columns, this.data, 0, this.filterMembers, 'column', '');
3239
- this.insertAllMember(this.cMembers, this.filterMembers, '', 'column');
3255
+ if (headersInfo.position > 0) {
3256
+ this.insertPosition(this.rows, this.data, 0, this.filterMembers, 'row', '', rawHeaders);
3257
+ }
3258
+ this.insertTotalPosition(rawHeaders);
3259
+ this.rMembers = this.headerCollection.rowHeaders = rawHeaders;
3260
+ this.headerCollection.rowHeadersCount = this.rowCount;
3240
3261
  }
3241
3262
  else {
3242
- this.rMembers = this.getIndexedHeaders(this.rows, this.data, 0, this.filterMembers, 'row', '');
3243
- this.insertAllMember(this.rMembers, this.filterMembers, '', 'row');
3263
+ if (headersInfo.position > 0) {
3264
+ this.insertPosition(this.columns, this.data, 0, this.filterMembers, 'column', '', rawHeaders);
3265
+ }
3266
+ this.insertTotalPosition(rawHeaders);
3267
+ this.cMembers = this.headerCollection.columnHeaders = rawHeaders;
3268
+ this.headerCollection.columnHeadersCount = this.columnCount;
3244
3269
  }
3245
3270
  }
3246
- if (headersInfo.axis === 'row') {
3247
- this.rowCount = 0;
3248
- }
3249
3271
  else {
3272
+ let showNoDataItems = (this.rows[0] && this.rows[0].showNoDataItems) || (this.columns[0] && this.columns[0].showNoDataItems);
3273
+ if (this.rows.length > 0) {
3274
+ this.rMembers = this.getIndexedHeaders(this.rows, this.data, 0, showNoDataItems ? addPos : this.filterMembers, 'row', '');
3275
+ }
3276
+ if (this.columns.length > 0) {
3277
+ this.cMembers = this.getIndexedHeaders(this.columns, this.data, 0, showNoDataItems ? addPos : this.filterMembers, 'column', '');
3278
+ }
3279
+ this.insertAllMembersCommon();
3280
+ this.rowCount = 0;
3250
3281
  this.columnCount = 0;
3251
- }
3252
- this.updateHeadersCount(rawHeaders, headersInfo.axis, 0, headersInfo.fields, 'plus', false);
3253
- if (headersInfo.axis === 'row') {
3254
- if (headersInfo.position > 0) {
3255
- this.insertPosition(this.rows, this.data, 0, this.filterMembers, 'row', '', rawHeaders);
3282
+ this.updateHeadersCount(this.cMembers, 'column', 0, this.columns, 'plus', false);
3283
+ this.updateHeadersCount(this.rMembers, 'row', 0, this.rows, 'plus', false);
3284
+ if (showNoDataItems) {
3285
+ this.insertPosition(this.rows, this.data, 0, this.filterMembers, 'row', '', this.rMembers);
3286
+ this.insertPosition(this.columns, this.data, 0, this.filterMembers, 'column', '', this.cMembers);
3256
3287
  }
3257
- this.insertTotalPosition(rawHeaders);
3258
- this.rMembers = this.headerCollection.rowHeaders = rawHeaders;
3288
+ this.headerCollection.rowHeaders = this.rMembers;
3259
3289
  this.headerCollection.rowHeadersCount = this.rowCount;
3260
- }
3261
- else {
3262
- if (headersInfo.position > 0) {
3263
- this.insertPosition(this.columns, this.data, 0, this.filterMembers, 'column', '', rawHeaders);
3264
- }
3265
- this.insertTotalPosition(rawHeaders);
3266
- this.cMembers = this.headerCollection.columnHeaders = rawHeaders;
3290
+ this.headerCollection.columnHeaders = this.cMembers;
3267
3291
  this.headerCollection.columnHeadersCount = this.columnCount;
3268
3292
  }
3269
3293
  this.applyValueSorting();
@@ -3384,15 +3408,13 @@ class PivotEngine {
3384
3408
  }
3385
3409
  else {
3386
3410
  alphaNumbervalue.push(headers[i]);
3411
+ break;
3387
3412
  }
3388
3413
  }
3389
- if (stringValue.length > 1) {
3390
- stringValue = this.sortHeaders(fieldName, childrens, headers, childrens.sort, childrens.type);
3391
- }
3392
3414
  if (alphaNumbervalue.length > 0) {
3393
3415
  alphaNumbervalue = this.sortHeaders(fieldName, childrens, headers, childrens.sort, childrens.isAlphanumeric);
3394
3416
  }
3395
- return headers = nullValue.concat(alphaNumbervalue, stringValue);
3417
+ return headers;
3396
3418
  }
3397
3419
  else {
3398
3420
  return this.sortHeaders(fieldName, childrens, headers, sortOrder, childrens.type);
@@ -3421,7 +3443,7 @@ class PivotEngine {
3421
3443
  PivotUtil.applyHeadersSort(sortMembersOrder, sortOrder, type);
3422
3444
  isHeaderSortByDefault = true;
3423
3445
  }
3424
- if (isHeaderSortByDefault) {
3446
+ if (isHeaderSortByDefault && this.getHeaderSortInfo) {
3425
3447
  let copyOrder = [];
3426
3448
  for (let m = 0, n = 0; m < sortMembersOrder.length; m++) {
3427
3449
  let member = sortMembersOrder[m];
@@ -3549,13 +3571,13 @@ class PivotEngine {
3549
3571
  }
3550
3572
  else {
3551
3573
  this.rawIndexObject = {};
3552
- let value = this.getAggregateValue(header.index, member.indexObject, mIndex, mType);
3574
+ let value = this.getAggregateValue(header.index, member.indexObject, mIndex, mType, false);
3553
3575
  let cellDetails = {
3554
3576
  fieldName: this.fields[mIndex],
3555
3577
  row: header,
3556
3578
  column: member,
3557
3579
  value: value,
3558
- cellSets: this.getCellSet(this.rawIndexObject),
3580
+ cellSets: this.getValueCellInfo ? this.getCellSet(this.rawIndexObject) : [],
3559
3581
  rowCellType: (header.hasChild && header.isDrilled ? 'subTotal' : header.type === 'grand sum' ? 'grandTotal' : 'value'),
3560
3582
  columnCellType: (member.hasChild && member.isDrilled ? 'subTotal' : member.type === 'grand sum' ? 'grandTotal' : 'value'),
3561
3583
  aggregateType: mType,
@@ -3945,7 +3967,7 @@ class PivotEngine {
3945
3967
  this.columnCount -= (!(this.showSubTotals && this.showColumnSubTotals && field.showSubTotals) && axis === 'column') ?
3946
3968
  this.colValuesLength : 0;
3947
3969
  let filterPosition = hierarchy[iln].index;
3948
- 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);
3949
3971
  if (this.frameHeaderObjectsCollection) {
3950
3972
  this.headerObjectsCollection[parentMember] = hierarchy[iln].members;
3951
3973
  }
@@ -3955,32 +3977,55 @@ class PivotEngine {
3955
3977
  if (this.enableSort) {
3956
3978
  // return new DataManager(hierarchy as JSON[]).executeLocal(new Query().sortBy('actualText', childrens.sort.toLowerCase()));
3957
3979
  if (isDateType) {
3958
- return this.sortHeaders(fieldName, childrens, hierarchy, childrens.sort, childrens.type);
3980
+ return this.sortHeaders(fieldName, childrens, hierarchy, childrens.sort, 'date');
3959
3981
  }
3960
3982
  else {
3961
3983
  if (childrens.type === 'number' && hierarchy.length > 0 && (typeof (hierarchy[0].actualText) === 'string')) {
3962
3984
  let stringValue = [];
3985
+ let outOfRange;
3963
3986
  let alphaNumbervalue = [];
3964
3987
  let nullValue = [];
3965
3988
  for (let i = 0; i < hierarchy.length; i++) {
3966
3989
  if (isNaN(hierarchy[i].actualText.toString().charAt(0))) {
3967
3990
  stringValue.push(hierarchy[i]);
3991
+ if (!outOfRange && childrens.sort !== 'None') {
3992
+ if (hierarchy[i].actualText === 'Out of Range') {
3993
+ outOfRange = hierarchy[i];
3994
+ hierarchy.splice(i, 1);
3995
+ }
3996
+ }
3968
3997
  }
3969
3998
  else if (hierarchy[i].actualText === "") {
3970
3999
  nullValue.push(hierarchy[i]);
3971
4000
  }
3972
4001
  else {
4002
+ this.fieldList[fieldName].isAlphanumeric = true;
3973
4003
  alphaNumbervalue.push(hierarchy[i]);
4004
+ break;
3974
4005
  }
3975
4006
  }
3976
- if (stringValue.length > 0) {
3977
- stringValue = this.sortHeaders(fieldName, childrens, hierarchy, childrens.sort, childrens.type);
4007
+ if (outOfRange) {
4008
+ if (childrens.sort === 'Ascending') {
4009
+ if (hierarchy[0].actualText === 'Grand Total') {
4010
+ hierarchy.splice(1, 0, outOfRange);
4011
+ }
4012
+ else {
4013
+ hierarchy.splice(0, 0, outOfRange);
4014
+ }
4015
+ }
4016
+ else {
4017
+ if (hierarchy[hierarchy.length - 1].actualText === 'Grand Total') {
4018
+ hierarchy.splice(hierarchy.length - 1, 0, outOfRange);
4019
+ }
4020
+ else {
4021
+ hierarchy.splice(hierarchy.length, 0, outOfRange);
4022
+ }
4023
+ }
3978
4024
  }
3979
4025
  if (alphaNumbervalue.length > 0) {
3980
- this.fieldList[fieldName].isAlphanumeric = true;
3981
- alphaNumbervalue = this.sortHeaders(fieldName, childrens, hierarchy, childrens.sort, childrens.isAlphanumeric);
4026
+ this.sortHeaders(fieldName, childrens, hierarchy, childrens.sort, childrens.isAlphanumeric);
3982
4027
  }
3983
- return hierarchy = nullValue.concat(alphaNumbervalue, stringValue);
4028
+ return hierarchy;
3984
4029
  }
3985
4030
  else {
3986
4031
  return this.sortHeaders(fieldName, childrens, hierarchy, childrens.sort, childrens.type);
@@ -4818,7 +4863,7 @@ class PivotEngine {
4818
4863
  let selectedColumnValue = 0;
4819
4864
  if (selectedColumnValues.length === 0) {
4820
4865
  let selectedRow = this.getSelectedRow(currentSet.rowHeaders, rowheads);
4821
- selectedColumnValue = this.getAggregateValue(selectedRow.index, selectedColumn.indexObject, this.fieldList[name].index, headers.type);
4866
+ selectedColumnValue = this.getAggregateValue(selectedRow.index, selectedColumn.indexObject, this.fieldList[name].index, headers.type, false);
4822
4867
  }
4823
4868
  else {
4824
4869
  selectedColumnValue = selectedColumnValues[index[0]].value;
@@ -4873,7 +4918,7 @@ class PivotEngine {
4873
4918
  // let cVal: number = currentSet.value / (selectedRowValues[i[1]] as IAxisSet).value;
4874
4919
  let selectedRowValue = 0;
4875
4920
  if (selectedRowValues.length === 0 && activeValues) {
4876
- selectedRowValue = this.getAggregateValue(activeValues.index, colheads[i[1] - 1].indexObject, this.fieldList[name].index, headers.type);
4921
+ selectedRowValue = this.getAggregateValue(activeValues.index, colheads[i[1] - 1].indexObject, this.fieldList[name].index, headers.type, false);
4877
4922
  }
4878
4923
  else {
4879
4924
  selectedRowValue = selectedRowValues[i[1]] ? selectedRowValues[i[1]].actualValue : 0;
@@ -4917,7 +4962,7 @@ class PivotEngine {
4917
4962
  let selectedColValue = 0;
4918
4963
  if (selectedColumnValues.length === 0) {
4919
4964
  let selectedRow = this.getSelectedRow(currentSet.rowHeaders, rowheads);
4920
- selectedColValue = this.getAggregateValue(selectedRow.index, selectedCol.indexObject, this.fieldList[name].index, headers.type);
4965
+ selectedColValue = this.getAggregateValue(selectedRow.index, selectedCol.indexObject, this.fieldList[name].index, headers.type, false);
4921
4966
  }
4922
4967
  else {
4923
4968
  selectedColValue = selectedColumnValues[i[0]].value;
@@ -4946,7 +4991,7 @@ class PivotEngine {
4946
4991
  rowheads[rlen].level === item.level && currentSet.axis === 'value' &&
4947
4992
  currentSet.actualText === name) {
4948
4993
  if (rowheads[rlen].type !== 'grand sum') {
4949
- cVal += (!currentSet.showSubTotals && !(!isNullOrUndefined(currentSet.actualValue) && isNaN(currentSet.actualValue))) ? currentSet.actualValue : currentSet.value;
4994
+ cVal += (!currentSet.showSubTotals && !(!isNullOrUndefined(currentSet.actualValue) && isNaN(currentSet.actualValue))) ? currentSet.actualValue : (!isNullOrUndefined(currentSet.value) && !isNaN(currentSet.value)) ? currentSet.value : null;
4950
4995
  currentSet.formattedText = currentSet.showSubTotals ? (cVal === 0 && (currentSet.actualValue && currentSet.actualValue !== 0) ? '' : this.getFormattedValue(cVal, name).formattedText) : currentSet.formattedText;
4951
4996
  if (!this.aggregatedValueMatrix[rlen]) {
4952
4997
  this.aggregatedValueMatrix[rlen] = [];
@@ -5046,7 +5091,7 @@ class PivotEngine {
5046
5091
  let valueContent = ['cVal', 'rTotalVal', 'cTotalVal', 'gTotalVal'];
5047
5092
  let i = 0;
5048
5093
  for (let rIndex of gTotalIndex) {
5049
- totalValues[valueContent[i]] = this.getAggregateValue((rIndex[0]).index, (rIndex[1]).indexObject, mPos, aggregate);
5094
+ totalValues[valueContent[i]] = this.getAggregateValue((rIndex[0]).index, (rIndex[1]).indexObject, mPos, aggregate, i === 0 ? false : true);
5050
5095
  i++;
5051
5096
  }
5052
5097
  let val = ((totalValues.cVal) * (totalValues.gTotalVal)) / ((totalValues.rTotalVal) * (totalValues.cTotalVal));
@@ -5066,7 +5111,7 @@ class PivotEngine {
5066
5111
  let valueContent = ['cVal', 'gTotalVal'];
5067
5112
  let i = 0;
5068
5113
  for (let rIndex of gTotalIndex) {
5069
- totalValues[valueContent[i]] = this.getAggregateValue((rIndex[0]).index, (rIndex[1]).indexObject, mPos, aggregate);
5114
+ totalValues[valueContent[i]] = this.getAggregateValue((rIndex[0]).index, (rIndex[1]).indexObject, mPos, aggregate, i === 0 ? false : true);
5070
5115
  i++;
5071
5116
  }
5072
5117
  let val = ((totalValues.cVal) / (totalValues.gTotalVal));
@@ -5077,7 +5122,7 @@ class PivotEngine {
5077
5122
  }
5078
5123
  break;
5079
5124
  default:
5080
- let val = this.getAggregateValue(rows[rln].index, columns[cln].indexObject, mPos, aggregate);
5125
+ let val = this.getAggregateValue(rows[rln].index, columns[cln].indexObject, mPos, aggregate, false);
5081
5126
  value = (rows[rln].members.length > 0 && rows[rln].hasChild && rows[rln].isDrilled && ((!isNullOrUndefined(rows[rln].showSubTotals) && !rows[rln].showSubTotals) ||
5082
5127
  !this.showSubTotals || !this.showRowSubTotals)) ? undefined : val;
5083
5128
  actualValue = val;
@@ -5088,7 +5133,7 @@ class PivotEngine {
5088
5133
  row: rows[rln],
5089
5134
  column: columns[cln],
5090
5135
  value: value,
5091
- cellSets: this.getCellSet(this.rawIndexObject),
5136
+ cellSets: this.getValueCellInfo ? this.getCellSet(this.rawIndexObject) : [],
5092
5137
  rowCellType: (rows[rln].hasChild && rows[rln].isDrilled ? 'subTotal' : rows[rln].type === 'grand sum' ? 'grandTotal' : 'value'),
5093
5138
  columnCellType: (columns[cln].hasChild && columns[cln].isDrilled ? 'subTotal' : columns[cln].type === 'grand sum' ? 'grandTotal' : 'value'),
5094
5139
  aggregateType: aggregate,
@@ -5426,7 +5471,7 @@ class PivotEngine {
5426
5471
  }
5427
5472
  }
5428
5473
  /* eslint-disable */
5429
- getAggregateValue(rowIndex, columnIndex, value, type) {
5474
+ getAggregateValue(rowIndex, columnIndex, value, type, isGrandTotal) {
5430
5475
  //rowIndex = rowIndex.sort();
5431
5476
  //columnIndex = columnIndex.sort();
5432
5477
  let rlt = rowIndex.length;
@@ -5604,7 +5649,7 @@ class PivotEngine {
5604
5649
  let value = aggregateField[aggregatedValue.formula];
5605
5650
  if (value === undefined) {
5606
5651
  let type = aggregatedValue.type;
5607
- value = this.getAggregateValue(rowIndex, columnIndex, aggregatedValue.index, type);
5652
+ value = this.getAggregateValue(rowIndex, columnIndex, aggregatedValue.index, type, false);
5608
5653
  aggregateField[aggregatedValue.formula] = value;
5609
5654
  }
5610
5655
  actualFormula = (actualFormula).replace(aggregatedValue.formula, String(value));
@@ -5618,7 +5663,9 @@ class PivotEngine {
5618
5663
  while (rowIndex[ri] !== undefined) {
5619
5664
  if (columnIndex[rowIndex[ri]] !== undefined) {
5620
5665
  isValueExist = true;
5621
- this.rawIndexObject[rowIndex[ri]] = rowIndex[ri];
5666
+ if (!isGrandTotal) {
5667
+ this.rawIndexObject[rowIndex[ri]] = rowIndex[ri];
5668
+ }
5622
5669
  //let cIndx: number = isLeastLevel ? columnIndex.splice(columnIndex.indexOf(rowIndex[ri]), 1)[0] : rowIndex[ri];
5623
5670
  let currentVal = this.valueMatrix[rowIndex[ri]][value];
5624
5671
  if (isNullOrUndefined(cellValue) && isNullOrUndefined(currentVal)) {
@@ -5921,6 +5968,10 @@ const uiUpdate = 'ui-update';
5921
5968
  /** @hidden */
5922
5969
  const scroll = 'scroll';
5923
5970
  /** @hidden */
5971
+ const verticalScroll = 'vertical-scroll';
5972
+ /** @hidden */
5973
+ const horizontalScroll = 'horizontal-scroll';
5974
+ /** @hidden */
5924
5975
  const contentReady = 'content-ready';
5925
5976
  /** @hidden */
5926
5977
  const dataReady = 'data-ready';
@@ -6120,6 +6171,10 @@ const windowResized = 'Window resized';
6120
6171
  const recordUpdated = 'Records updated';
6121
6172
  /** @hidden */
6122
6173
  const drillThroughClosed = 'Drill-through closed';
6174
+ /** @hidden */
6175
+ const verticalScrolled = 'Vertically scrolled';
6176
+ /** @hidden */
6177
+ const horizontalScrolled = 'Horizontally scrolled';
6123
6178
 
6124
6179
  /**
6125
6180
  * CSS Constants
@@ -6166,12 +6221,26 @@ const OLAP_FIELD_LIST_CLASS = 'e-olap-field-list-tree';
6166
6221
  /** @hidden */
6167
6222
  const FIELD_LIST_TREE_CLASS = 'e-field-list-tree';
6168
6223
  /** @hidden */
6224
+ const FIELD_LIST_TREE_OUTER_DIV_CLASS = 'e-field-list-tree-outer-div';
6225
+ /** @hidden */
6226
+ const FIELD_LIST_TREE_OUTER_DIV_SEARCH_CLASS = 'e-field-list-tree-outer-div-searchMode';
6227
+ /** @hidden */
6228
+ const FIELD_LIST_SEARCH_MODE_CLASS = 'e-search-mode';
6229
+ /** @hidden */
6169
6230
  const FIELD_HEADER_CLASS = 'e-field-header';
6170
6231
  /** @hidden */
6232
+ const FIELD_HEADER_CONTAINER_CLASS = 'e-field-header-container';
6233
+ /** @hidden */
6171
6234
  const FIELD_LIST_TITLE_CLASS = 'e-field-list-title';
6172
6235
  /** @hidden */
6173
6236
  const FIELD_LIST_TITLE_CONTENT_CLASS = 'e-title-content';
6174
6237
  /** @hidden */
6238
+ const FIELD_LIST_SEARCH_CLASS = 'e-field-list-search';
6239
+ /** @hidden */
6240
+ const FIELD_LIST_SEARCH_INPUT_CLASS = 'e-field-list-search-input';
6241
+ /** @hidden */
6242
+ const FIELD_LIST_SEARCH_ICON_CLASS = 'e-field-list-search-icon';
6243
+ /** @hidden */
6175
6244
  const FIELD_LIST_FOOTER_CLASS = 'e-field-list-footer';
6176
6245
  /** @hidden */
6177
6246
  const CALCULATED_FIELD_CLASS = 'e-calculated-field';
@@ -6482,6 +6551,8 @@ const TREEVIEW = 'e-pivot-treeview';
6482
6551
  /** @hidden */
6483
6552
  const TREEVIEWOUTER = 'e-pivot-treeview-outer';
6484
6553
  /** @hidden */
6554
+ const TREE_CONTAINER = 'e-treeContainer';
6555
+ /** @hidden */
6485
6556
  const CALCCANCELBTN = 'e-pivot-cancel-button';
6486
6557
  /** @hidden */
6487
6558
  const CALCADDBTN = 'e-pivot-add-button';
@@ -6959,13 +7030,13 @@ class AggregateMenu {
6959
7030
  buttons: [
6960
7031
  {
6961
7032
  click: this.updateValueSettings.bind(this),
6962
- buttonModel: { cssClass: OK_BUTTON_CLASS, content: this.parent.localeObj.getConstant('ok'), isPrimary: true }
7033
+ buttonModel: { cssClass: OK_BUTTON_CLASS + (this.parent.cssClass ? (' ' + this.parent.cssClass) : ''), content: this.parent.localeObj.getConstant('ok'), isPrimary: true }
6963
7034
  },
6964
7035
  {
6965
7036
  click: () => {
6966
7037
  this.valueDialog.hide();
6967
7038
  },
6968
- buttonModel: { cssClass: CANCEL_BUTTON_CLASS, content: this.parent.localeObj.getConstant('cancel') }
7039
+ buttonModel: { cssClass: CANCEL_BUTTON_CLASS + (this.parent.cssClass ? (' ' + this.parent.cssClass) : ''), content: this.parent.localeObj.getConstant('cancel') }
6969
7040
  }
6970
7041
  ],
6971
7042
  closeOnEscape: (this.parent.getModuleName() === 'pivotfieldlist' && this.parent.renderMode === 'Popup') ? false : true,
@@ -7122,7 +7193,8 @@ class AggregateMenu {
7122
7193
  // floatLabelType: 'Auto',
7123
7194
  enableRtl: this.parent.enableRtl,
7124
7195
  locale: this.parent.locale,
7125
- value: fieldCaption, width: '100%'
7196
+ value: fieldCaption, width: '100%',
7197
+ cssClass: this.parent.cssClass
7126
7198
  });
7127
7199
  inputObj1.isStringTemplate = true;
7128
7200
  inputObj1.appendTo(inputField1);
@@ -7598,6 +7670,9 @@ class Render {
7598
7670
  }
7599
7671
  /* eslint-disable */
7600
7672
  contextMenuOpen(args) {
7673
+ if (args.element && this.parent.cssClass) {
7674
+ addClass([args.element.parentElement], this.parent.cssClass);
7675
+ }
7601
7676
  for (let item of args.items) {
7602
7677
  let cellTarget = this.parent.lastCellClicked;
7603
7678
  let elem = null;
@@ -9158,8 +9233,8 @@ class Render {
9158
9233
  args.value = this.parent.exportType === 'Excel' ? null : '';
9159
9234
  }
9160
9235
  else {
9161
- let aggMatrix = this.parent.engineModule.aggregatedValueMatrix;
9162
- if (aggMatrix[pivotValue.rowIndex] && aggMatrix[pivotValue.rowIndex][pivotValue.colIndex]) {
9236
+ let aggMatrix = this.parent.dataType === 'pivot' && this.parent.engineModule ? this.parent.engineModule.aggregatedValueMatrix : undefined;
9237
+ if (aggMatrix && aggMatrix[pivotValue.rowIndex] && aggMatrix[pivotValue.rowIndex][pivotValue.colIndex]) {
9163
9238
  args.value = aggMatrix[pivotValue.rowIndex][pivotValue.colIndex];
9164
9239
  }
9165
9240
  else {
@@ -9507,6 +9582,8 @@ class EventBase {
9507
9582
  * @hidden
9508
9583
  */
9509
9584
  constructor(parent) {
9585
+ /** @hidden */
9586
+ this.searchListItem = [];
9510
9587
  this.parent = parent;
9511
9588
  }
9512
9589
  /**
@@ -9603,6 +9680,15 @@ class EventBase {
9603
9680
  /* eslint-disable */
9604
9681
  let membersInfo = fieldInfo && fieldInfo.membersOrder ?
9605
9682
  [...fieldInfo.membersOrder] : [];
9683
+ let outOfRange;
9684
+ if (members[0].actualText === 'Out of Range') {
9685
+ outOfRange = members[0];
9686
+ members.splice(0, 1);
9687
+ }
9688
+ else if (members[members.length - 1].actualText === 'Out of Range') {
9689
+ outOfRange = members[members.length - 1];
9690
+ members.splice(members.length - 1, 1);
9691
+ }
9606
9692
  let sortDetails = {
9607
9693
  fieldName: fieldName,
9608
9694
  sortOrder: fieldInfo.sort,
@@ -9624,6 +9710,24 @@ class EventBase {
9624
9710
  isInclude = this.isValidFilterItemsAvail(fieldName, filterObj) && filterObj.type === 'Include' ? true : false;
9625
9711
  filterItems = filterObj.items ? filterObj.items : [];
9626
9712
  }
9713
+ if (outOfRange) {
9714
+ if (sortDetails.sortOrder === 'Ascending') {
9715
+ if (members[members.length - 1].actualText === 'Grand Total') {
9716
+ members.splice(members.length - 1, 0, outOfRange);
9717
+ }
9718
+ else {
9719
+ members.splice(members.length, 0, outOfRange);
9720
+ }
9721
+ }
9722
+ else {
9723
+ if (members[0].actualText === 'Grand Total') {
9724
+ members.splice(1, 0, outOfRange);
9725
+ }
9726
+ else {
9727
+ members.splice(0, 0, outOfRange);
9728
+ }
9729
+ }
9730
+ }
9627
9731
  if (isHeaderSortByDefault) {
9628
9732
  let copyOrder = [];
9629
9733
  for (let m = 0, n = 0; m < members.length; m++) {
@@ -9663,15 +9767,20 @@ class EventBase {
9663
9767
  let isItemAvail = false;
9664
9768
  let filterTypes = ['Include', 'Exclude'];
9665
9769
  if (filterObj && filterTypes.indexOf(filterObj.type) >= 0) {
9666
- let engineModule = this.parent.engineModule;
9667
- let field = engineModule.fieldList[fieldName];
9668
- let members = (engineModule.formatFields[fieldName] &&
9669
- (['date', 'dateTime', 'time'].indexOf(engineModule.formatFields[fieldName].type) > -1)) ?
9670
- field.formattedMembers : field.members;
9671
- for (let item of filterObj.items) {
9672
- if (members[item]) {
9673
- isItemAvail = true;
9674
- break;
9770
+ if (filterObj.type === 'Include' && filterObj.items.length === 0) {
9771
+ isItemAvail = true;
9772
+ }
9773
+ else {
9774
+ let engineModule = this.parent.engineModule;
9775
+ let field = engineModule.fieldList[fieldName];
9776
+ let members = (engineModule.formatFields[fieldName] &&
9777
+ (['date', 'dateTime', 'time'].indexOf(engineModule.formatFields[fieldName].type) > -1)) ?
9778
+ field.formattedMembers : field.members;
9779
+ for (let item of filterObj.items) {
9780
+ if (members[item]) {
9781
+ isItemAvail = true;
9782
+ break;
9783
+ }
9675
9784
  }
9676
9785
  }
9677
9786
  }
@@ -9911,6 +10020,7 @@ class EventBase {
9911
10020
  else {
9912
10021
  treeObj.expandAll(undefined, undefined, true);
9913
10022
  }
10023
+ this.searchListItem = searchList;
9914
10024
  }
9915
10025
  else {
9916
10026
  this.parent.searchTreeItems = [];
@@ -10583,7 +10693,7 @@ class ErrorDialog {
10583
10693
  buttons: [
10584
10694
  {
10585
10695
  click: this.closeErrorDialog.bind(this),
10586
- buttonModel: { cssClass: OK_BUTTON_CLASS, content: this.parent.localeObj.getConstant('ok'), isPrimary: true }
10696
+ buttonModel: { cssClass: OK_BUTTON_CLASS + (this.parent.cssClass ? (' ' + this.parent.cssClass) : ''), content: this.parent.localeObj.getConstant('ok'), isPrimary: true }
10587
10697
  }
10588
10698
  ],
10589
10699
  cssClass: this.parent.cssClass,
@@ -10657,19 +10767,19 @@ class FilterDialog {
10657
10767
  buttons: [
10658
10768
  {
10659
10769
  buttonModel: {
10660
- cssClass: 'e-clear-filter-button' + (this.allowExcelLikeFilter ? '' : ' ' + ICON_DISABLE),
10770
+ cssClass: 'e-clear-filter-button' + (this.allowExcelLikeFilter ? '' : ' ' + ICON_DISABLE) + (this.parent.cssClass ? (' ' + this.parent.cssClass) : ''),
10661
10771
  iconCss: 'e-icons e-clear-filter-icon', enableRtl: this.parent.enableRtl,
10662
10772
  content: this.parent.localeObj.getConstant('clearFilter'), disabled: (this.filterObject ? false : true)
10663
10773
  }
10664
10774
  },
10665
10775
  {
10666
10776
  buttonModel: {
10667
- cssClass: OK_BUTTON_CLASS, content: this.parent.localeObj.getConstant('ok'), isPrimary: true
10777
+ cssClass: OK_BUTTON_CLASS + (this.parent.cssClass ? (' ' + this.parent.cssClass) : ''), content: this.parent.localeObj.getConstant('ok'), isPrimary: true
10668
10778
  }
10669
10779
  },
10670
10780
  {
10671
10781
  click: this.closeFilterDialog.bind(this),
10672
- buttonModel: { cssClass: CANCEL_BUTTON_CLASS, content: this.parent.localeObj.getConstant('cancel') }
10782
+ buttonModel: { cssClass: CANCEL_BUTTON_CLASS + (this.parent.cssClass ? (' ' + this.parent.cssClass) : ''), content: this.parent.localeObj.getConstant('cancel') }
10673
10783
  }
10674
10784
  ],
10675
10785
  closeOnEscape: this.parent.renderMode === 'Popup' ? false : true,
@@ -10770,7 +10880,7 @@ class FilterDialog {
10770
10880
  this.editorSearch = new MaskedTextBox({
10771
10881
  placeholder: this.parent.localeObj.getConstant('search') + ' ' + '&#8220' + filterCaption + '&#8220',
10772
10882
  enableRtl: this.parent.enableRtl,
10773
- cssClass: EDITOR_SEARCH_CLASS,
10883
+ cssClass: EDITOR_SEARCH_CLASS + (this.parent.cssClass ? (' ' + this.parent.cssClass) : ''),
10774
10884
  showClearButton: true,
10775
10885
  change: (e) => {
10776
10886
  if (this.parent.dataType === 'olap') {
@@ -10808,7 +10918,8 @@ class FilterDialog {
10808
10918
  nodeSelected: (args) => {
10809
10919
  removeClass([args.node], 'e-active');
10810
10920
  args.cancel = true;
10811
- }
10921
+ },
10922
+ cssClass: this.parent.cssClass
10812
10923
  });
10813
10924
  this.allMemberSelect.isStringTemplate = true;
10814
10925
  if (!isNullOrUndefined(this.parent.currentTreeItems)) {
@@ -10833,7 +10944,8 @@ class FilterDialog {
10833
10944
  removeClass([args.node], 'e-active');
10834
10945
  args.cancel = true;
10835
10946
  },
10836
- expandOn: 'None'
10947
+ expandOn: 'None',
10948
+ cssClass: this.parent.cssClass
10837
10949
  });
10838
10950
  this.memberTreeView.isStringTemplate = true;
10839
10951
  this.memberTreeView.appendTo(treeViewContainer);
@@ -10844,7 +10956,7 @@ class FilterDialog {
10844
10956
  if (this.parent.dataType === 'pivot' && treeData && treeData.length > 0) {
10845
10957
  let sortOrder = this.parent.engineModule.fieldList[fieldName].sort;
10846
10958
  let sortWrapper = createElement('div', {
10847
- className: FILTER_SORT_CLASS + ' e-btn-group' + (this.parent.enableRtl ? ' ' + RTL : ''),
10959
+ className: FILTER_SORT_CLASS + ' e-btn-group' + (this.parent.enableRtl ? ' ' + RTL : '') + (this.parent.cssClass ? (' ' + this.parent.cssClass) : ''),
10848
10960
  id: this.parent.element.id + '_Member_Sort'
10849
10961
  });
10850
10962
  this.parent.element.appendChild(sortWrapper);
@@ -10857,11 +10969,11 @@ class FilterDialog {
10857
10969
  id: this.parent.element.id + '_Sort_Descend', attrs: { 'type': 'button' }
10858
10970
  });
10859
10971
  let sortBtnElement = new Button({
10860
- iconCss: ICON + ' ' + SORT_ASCEND_ICON_CLASS, enableRtl: this.parent.enableRtl
10972
+ iconCss: ICON + ' ' + SORT_ASCEND_ICON_CLASS, enableRtl: this.parent.enableRtl, cssClass: this.parent.cssClass
10861
10973
  });
10862
10974
  sortBtnElement.appendTo(sortAscendElement);
10863
10975
  sortBtnElement = new Button({
10864
- iconCss: ICON + ' ' + SORT_DESCEND_ICON_CLASS, enableRtl: this.parent.enableRtl
10976
+ iconCss: ICON + ' ' + SORT_DESCEND_ICON_CLASS, enableRtl: this.parent.enableRtl, cssClass: this.parent.cssClass
10865
10977
  });
10866
10978
  sortBtnElement.appendTo(sortDescendElement);
10867
10979
  sortWrapper.appendChild(sortAscendElement);
@@ -11204,7 +11316,8 @@ class FilterDialog {
11204
11316
  items: items,
11205
11317
  height: '100%',
11206
11318
  selectedItem: selectedIndex,
11207
- enableRtl: this.parent.enableRtl
11319
+ enableRtl: this.parent.enableRtl,
11320
+ cssClass: this.parent.cssClass
11208
11321
  });
11209
11322
  this.tabObj.isStringTemplate = true;
11210
11323
  this.tabObj.appendTo(wrapper);
@@ -11521,7 +11634,9 @@ class FilterDialog {
11521
11634
  else {
11522
11635
  return;
11523
11636
  }
11524
- }, width: '100%'
11637
+ },
11638
+ width: '100%',
11639
+ cssClass: this.parent.cssClass
11525
11640
  });
11526
11641
  let inputObj2 = new NumericTextBox({
11527
11642
  placeholder: this.parent.localeObj.getConstant('enterValue'),
@@ -11540,7 +11655,9 @@ class FilterDialog {
11540
11655
  else {
11541
11656
  return;
11542
11657
  }
11543
- }, width: '100%'
11658
+ },
11659
+ width: '100%',
11660
+ cssClass: this.parent.cssClass
11544
11661
  });
11545
11662
  inputObj1.isStringTemplate = true;
11546
11663
  inputObj1.appendTo(inputDiv1);
@@ -11561,7 +11678,9 @@ class FilterDialog {
11561
11678
  else {
11562
11679
  return;
11563
11680
  }
11564
- }, width: '100%'
11681
+ },
11682
+ width: '100%',
11683
+ cssClass: this.parent.cssClass
11565
11684
  });
11566
11685
  let inputObj2 = new MaskedTextBox({
11567
11686
  placeholder: this.parent.localeObj.getConstant('enterValue'),
@@ -11576,7 +11695,9 @@ class FilterDialog {
11576
11695
  else {
11577
11696
  return;
11578
11697
  }
11579
- }, width: '100%'
11698
+ },
11699
+ width: '100%',
11700
+ cssClass: this.parent.cssClass
11580
11701
  });
11581
11702
  inputObj1.isStringTemplate = true;
11582
11703
  inputObj1.appendTo(inputDiv1);
@@ -13330,6 +13451,9 @@ class VirtualScroll$1 {
13330
13451
  update(mHdr, mCont, top, left, e) {
13331
13452
  this.parent.isScrolling = true;
13332
13453
  let engine = this.parent.dataType === 'pivot' ? this.parent.engineModule : this.parent.olapEngineModule;
13454
+ let args = {
13455
+ dataSourceSettings: PivotUtil.getClonedDataSourceSettings(this.parent.dataSourceSettings)
13456
+ };
13333
13457
  if (this.parent.pageSettings && engine.pageSettings) {
13334
13458
  if (this.direction === 'vertical') {
13335
13459
  let rowValues = this.parent.dataType === 'pivot' ?
@@ -13341,24 +13465,28 @@ class VirtualScroll$1 {
13341
13465
  // this.parent.hideWaitingPopup();
13342
13466
  return;
13343
13467
  }
13468
+ this.parent.actionObj.actionName = verticalScroll;
13469
+ this.parent.actionBeginMethod();
13344
13470
  this.parent.showWaitingPopup();
13345
13471
  this.parent.scrollPosObject.vertical = section;
13346
13472
  engine.pageSettings.rowCurrentPage = section > 1 ? section : 1;
13347
13473
  let rowStartPos = 0;
13348
- if (this.parent.dataType === 'pivot') {
13349
- if (this.parent.dataSourceSettings.mode === 'Server') {
13350
- this.parent.getEngine('onScroll', null, null, null, null, null, null);
13474
+ this.parent.trigger(enginePopulating, args, (observedArgs) => {
13475
+ if (this.parent.dataType === 'pivot') {
13476
+ if (this.parent.dataSourceSettings.mode === 'Server') {
13477
+ this.parent.getEngine('onScroll', null, null, null, null, null, null);
13478
+ }
13479
+ else {
13480
+ this.parent.engineModule.generateGridData(this.parent.dataSourceSettings, true, this.parent.engineModule.headerCollection);
13481
+ rowStartPos = this.parent.engineModule.rowStartPos;
13482
+ }
13351
13483
  }
13352
13484
  else {
13353
- this.parent.engineModule.generateGridData(this.parent.dataSourceSettings, true, this.parent.engineModule.headerCollection);
13354
- rowStartPos = this.parent.engineModule.rowStartPos;
13485
+ this.parent.olapEngineModule.scrollPage('scroll');
13486
+ rowStartPos = this.parent.olapEngineModule.pageRowStartPos;
13355
13487
  }
13356
- }
13357
- else {
13358
- this.parent.olapEngineModule.scrollPage('scroll');
13359
- rowStartPos = this.parent.olapEngineModule.pageRowStartPos;
13360
- }
13361
- this.parent.pivotValues = engine.pivotValues;
13488
+ this.enginePopulatedEventMethod(engine);
13489
+ });
13362
13490
  let exactPage = Math.ceil(rowStartPos / (this.parent.pageSettings.rowSize * rowValues));
13363
13491
  let pos = exactSize * exactPage -
13364
13492
  (engine.rowFirstLvl * rowValues * this.parent.gridSettings.rowHeight);
@@ -13374,32 +13502,50 @@ class VirtualScroll$1 {
13374
13502
  // this.parent.hideWaitingPopup();
13375
13503
  return;
13376
13504
  }
13505
+ this.parent.actionObj.actionName = horizontalScroll;
13506
+ this.parent.actionBeginMethod();
13377
13507
  this.parent.showWaitingPopup();
13378
13508
  let pivot = this.parent;
13379
13509
  pivot.scrollPosObject.horizontal = section;
13380
13510
  engine.pageSettings.columnCurrentPage = section > 1 ? section : 1;
13381
13511
  let colStartPos = 0;
13382
- if (pivot.dataType === 'pivot') {
13383
- if (this.parent.dataSourceSettings.mode === 'Server') {
13384
- this.parent.getEngine('onScroll', null, null, null, null, null, null);
13512
+ this.parent.trigger(enginePopulating, args, (observedArgs) => {
13513
+ if (pivot.dataType === 'pivot') {
13514
+ if (this.parent.dataSourceSettings.mode === 'Server') {
13515
+ this.parent.getEngine('onScroll', null, null, null, null, null, null);
13516
+ }
13517
+ else {
13518
+ pivot.engineModule.generateGridData(pivot.dataSourceSettings, true, pivot.engineModule.headerCollection);
13519
+ colStartPos = pivot.engineModule.colStartPos;
13520
+ }
13385
13521
  }
13386
13522
  else {
13387
- pivot.engineModule.generateGridData(pivot.dataSourceSettings, true, pivot.engineModule.headerCollection);
13388
- colStartPos = pivot.engineModule.colStartPos;
13523
+ pivot.olapEngineModule.scrollPage('scroll');
13524
+ colStartPos = pivot.olapEngineModule.pageColStartPos;
13389
13525
  }
13390
- }
13391
- else {
13392
- pivot.olapEngineModule.scrollPage('scroll');
13393
- colStartPos = pivot.olapEngineModule.pageColStartPos;
13394
- }
13395
- pivot.pivotValues = engine.pivotValues;
13526
+ this.enginePopulatedEventMethod(engine);
13527
+ });
13396
13528
  let exactPage = Math.ceil(colStartPos / (pivot.pageSettings.columnSize * colValues));
13397
13529
  let pos = exactSize * exactPage - (engine.colFirstLvl *
13398
13530
  colValues * pivot.gridSettings.columnWidth);
13399
13531
  pivot.scrollPosObject.horizontalSection = pos;
13400
13532
  }
13533
+ this.parent.actionObj.actionName = this.parent.getActionCompleteName();
13534
+ if (this.parent.actionObj.actionName) {
13535
+ this.parent.actionCompleteMethod();
13536
+ }
13401
13537
  }
13402
13538
  }
13539
+ enginePopulatedEventMethod(engine, control) {
13540
+ let pivot = control ? control : this.parent;
13541
+ let eventArgs = {
13542
+ dataSourceSettings: pivot.dataSourceSettings,
13543
+ pivotValues: pivot.pivotValues
13544
+ };
13545
+ pivot.trigger(enginePopulated, eventArgs, (observedArgs) => {
13546
+ this.parent.pivotValues = engine.pivotValues;
13547
+ });
13548
+ }
13403
13549
  setPageXY() {
13404
13550
  return (e) => {
13405
13551
  if (e.pointerType === 'mouse') {
@@ -13642,9 +13788,8 @@ class DrillThroughDialog {
13642
13788
  }
13643
13789
  let actualText = eventArgs.currentCell.actualText.toString();
13644
13790
  try {
13645
- if (this.parent.currentView === 'Table' && this.engine.fieldList[actualText].aggregateType !== 'Count' && this.parent.editSettings.allowInlineEditing &&
13646
- this.parent.editSettings.allowEditing && eventArgs.rawData.length === 1 &&
13647
- this.engine.fieldList[actualText].aggregateType !== 'DistinctCount' && typeof (eventArgs.rawData[0][actualText]) !== 'string') {
13791
+ if (this.parent.currentView === 'Table' && this.parent.editSettings.allowInlineEditing &&
13792
+ this.parent.editSettings.allowEditing && eventArgs.rawData.length === 1) {
13648
13793
  this.parent.actionObj.actionName = editRecord;
13649
13794
  if (this.parent.actionBeginMethod()) {
13650
13795
  return;
@@ -13802,9 +13947,9 @@ class DrillThroughDialog {
13802
13947
  let previousData = this.frameHeaderWithKeys(eventArgs.rawData[eventArgs.rawData.length - 1]);
13803
13948
  let currentData = eventArgs.rawData[eventArgs.rawData.length - 1];
13804
13949
  /* eslint-enable */
13805
- if (eventArgs.currentCell.actualText in previousData) {
13806
- currentData[eventArgs.currentCell.actualText] = eventArgs.currentCell.actualValue;
13807
- }
13950
+ // if (eventArgs.currentCell.actualText in previousData) {
13951
+ // currentData[eventArgs.currentCell.actualText] = eventArgs.currentCell.actualValue;
13952
+ // }
13808
13953
  let actionInfo = {
13809
13954
  editInfo: { type: 'Inline editing', action: 'update', data: this.gridData }
13810
13955
  };
@@ -13815,6 +13960,7 @@ class DrillThroughDialog {
13815
13960
  enabled: true,
13816
13961
  format: '####.##',
13817
13962
  locale: this.parent.locale,
13963
+ cssClass: this.parent.cssClass,
13818
13964
  change: () => {
13819
13965
  let textBoxValue = this.numericTextBox.value;
13820
13966
  let indexValue = eventArgs.currentCell.indexObject[indexObject];
@@ -13985,10 +14131,10 @@ class DrillThroughDialog {
13985
14131
  this.drillThroughGrid.columns.push({
13986
14132
  headerText: this.parent.localeObj.getConstant('manageRecords'), width: 160, showInColumnChooser: false,
13987
14133
  commands: [
13988
- { type: 'Edit', buttonOption: { iconCss: ' e-icons e-edit', cssClass: 'e-flat' } },
13989
- { type: 'Delete', buttonOption: { iconCss: 'e-icons e-delete', cssClass: 'e-flat' } },
13990
- { type: 'Save', buttonOption: { iconCss: 'e-icons e-update', cssClass: 'e-flat' } },
13991
- { type: 'Cancel', buttonOption: { iconCss: 'e-icons e-cancel-icon', cssClass: 'e-flat' } }
14134
+ { type: 'Edit', buttonOption: { iconCss: ' e-icons e-edit', cssClass: 'e-flat' + (this.parent.cssClass ? (' ' + this.parent.cssClass) : '') } },
14135
+ { type: 'Delete', buttonOption: { iconCss: 'e-icons e-delete', cssClass: 'e-flat' + (this.parent.cssClass ? (' ' + this.parent.cssClass) : '') } },
14136
+ { type: 'Save', buttonOption: { iconCss: 'e-icons e-update', cssClass: 'e-flat' + (this.parent.cssClass ? (' ' + this.parent.cssClass) : '') } },
14137
+ { type: 'Cancel', buttonOption: { iconCss: 'e-icons e-cancel-icon', cssClass: 'e-flat' + (this.parent.cssClass ? (' ' + this.parent.cssClass) : '') } }
13992
14138
  ]
13993
14139
  });
13994
14140
  }
@@ -14247,7 +14393,7 @@ class DrillThrough {
14247
14393
  let valueCaption = '';
14248
14394
  let aggType = '';
14249
14395
  let rawData = [];
14250
- if (pivotValue.rowHeaders !== undefined && pivotValue.columnHeaders !== undefined && !isNullOrUndefined(pivotValue.value)) {
14396
+ if (pivotValue.rowHeaders !== undefined && pivotValue.columnHeaders !== undefined) {
14251
14397
  if (this.parent.dataType === 'olap') {
14252
14398
  let tupleInfo;
14253
14399
  if (this.parent.dataSourceSettings.valueAxis === 'row') {
@@ -14317,7 +14463,7 @@ class DrillThrough {
14317
14463
  }
14318
14464
  }
14319
14465
  if (!isNullOrUndefined(rawData[k])) {
14320
- let calculatedFeildValue = this.parent.engineModule.getAggregateValue([Number(indexArray[k])], colIndex, indexValue, 'calculatedfield');
14466
+ let calculatedFeildValue = this.parent.engineModule.getAggregateValue([Number(indexArray[k])], colIndex, indexValue, 'calculatedfield', false);
14321
14467
  rawData[k][this.parent.dataSourceSettings.calculatedFieldSettings[i].name] = (isNaN(calculatedFeildValue) && isNullOrUndefined(calculatedFeildValue)) ? '#DIV/0!' : calculatedFeildValue;
14322
14468
  }
14323
14469
  }
@@ -14794,6 +14940,9 @@ class PivotChart {
14794
14940
  if (this.persistSettings.chartSeries && this.persistSettings.chartSeries.emptyPointSettings) {
14795
14941
  currentSeries.emptyPointSettings = this.persistSettings.chartSeries.emptyPointSettings;
14796
14942
  }
14943
+ if (!currentSeries.emptyPointSettings) {
14944
+ currentSeries.emptyPointSettings = { mode: 'Zero' };
14945
+ }
14797
14946
  this.chartSeries = this.chartSeries.concat(currentSeries);
14798
14947
  }
14799
14948
  }
@@ -16523,7 +16672,7 @@ __decorate$3([
16523
16672
  Complex({ color: 'transparent', width: 0 }, Border)
16524
16673
  ], EmptyPointSettings.prototype, "border", void 0);
16525
16674
  __decorate$3([
16526
- Property('Gap')
16675
+ Property('Zero')
16527
16676
  ], EmptyPointSettings.prototype, "mode", void 0);
16528
16677
  /**
16529
16678
  * Allows to customize the rounded corners of the column series in the chart.
@@ -16897,7 +17046,7 @@ __decorate$3([
16897
17046
  Complex({ color: 'transparent', width: 0 }, Border)
16898
17047
  ], PivotChartSeriesEmptyPointSettings.prototype, "border", void 0);
16899
17048
  __decorate$3([
16900
- Property('Gap')
17049
+ Property('Zero')
16901
17050
  ], PivotChartSeriesEmptyPointSettings.prototype, "mode", void 0);
16902
17051
  /**
16903
17052
  * Allows to customize the rounded corners of the column series in the chart.
@@ -18285,7 +18434,7 @@ class MDXQuery {
18285
18434
  query = '((' + name + ').levels(0).AllMembers)';
18286
18435
  }
18287
18436
  else {
18288
- query = (dimension.isNamedSet ? '{' + name + '}' : this.isPaging ? name + '.CHILDREN' :
18437
+ query = (dimension.isNamedSet || dimension.isCalculatedField ? '{' + name + '}' : this.isPaging ? name + '.CHILDREN' :
18289
18438
  'DrilldownLevel({' + name + '}' + ((axis === 'rows' || axis === 'columns') ? ',,,INCLUDE_CALC_MEMBERS' : '') + ')');
18290
18439
  }
18291
18440
  return query;
@@ -20203,7 +20352,7 @@ class OlapEngine {
20203
20352
  }
20204
20353
  isHeaderSortByDefault = true;
20205
20354
  }
20206
- if (isHeaderSortByDefault) {
20355
+ if (isHeaderSortByDefault && this.getHeaderSortInfo) {
20207
20356
  let copyOrder = [];
20208
20357
  for (let m = 0, n = 0; m < headers.length; m++) {
20209
20358
  if (headers[m].actualText !== 'Grand Total') {
@@ -20244,7 +20393,7 @@ class OlapEngine {
20244
20393
  }
20245
20394
  isHeaderSortByDefault = true;
20246
20395
  }
20247
- if (isHeaderSortByDefault) {
20396
+ if (isHeaderSortByDefault && this.getHeaderSortInfo) {
20248
20397
  let copyOrder = [];
20249
20398
  for (let m = 0, n = 0; m < keys.length; m++) {
20250
20399
  if (keys[m] !== 'Grand Total') {
@@ -22735,8 +22884,8 @@ let PivotView = class PivotView extends Component {
22735
22884
  if (this.showTooltip) {
22736
22885
  if (this.tooltipTemplate) {
22737
22886
  this.tooltip = new Tooltip({
22738
- target: 'td.e-valuescontent' + (this.cssClass ? (' ' + this.cssClass) : ''),
22739
- cssClass: 'e-pivottooltiptemplate',
22887
+ target: 'td.e-valuescontent',
22888
+ cssClass: 'e-pivottooltiptemplate' + (this.cssClass ? (' ' + this.cssClass) : ''),
22740
22889
  showTipPointer: false,
22741
22890
  position: 'BottomRight',
22742
22891
  mouseTrail: true,
@@ -22748,7 +22897,8 @@ let PivotView = class PivotView extends Component {
22748
22897
  }
22749
22898
  else {
22750
22899
  this.tooltip = new Tooltip({
22751
- target: 'td.e-valuescontent' + (this.cssClass ? (' ' + this.cssClass) : ''),
22900
+ target: 'td.e-valuescontent',
22901
+ cssClass: this.cssClass,
22752
22902
  showTipPointer: false,
22753
22903
  position: 'BottomRight',
22754
22904
  mouseTrail: true,
@@ -23259,10 +23409,10 @@ let PivotView = class PivotView extends Component {
23259
23409
  this.cellTemplateFn = this.templateParser(this.cellTemplate);
23260
23410
  this.tooltipTemplateFn = this.templateParser(this.tooltipTemplate);
23261
23411
  if (this.spinnerTemplate) {
23262
- createSpinner({ target: this.element, template: this.spinnerTemplate }, this.createElement);
23412
+ createSpinner({ target: this.element, template: this.spinnerTemplate, cssClass: this.cssClass ? this.cssClass : undefined }, this.createElement);
23263
23413
  }
23264
23414
  else {
23265
- createSpinner({ target: this.element }, this.createElement);
23415
+ createSpinner({ target: this.element, cssClass: this.cssClass ? this.cssClass : undefined }, this.createElement);
23266
23416
  }
23267
23417
  let loadArgs = {
23268
23418
  dataSourceSettings: this.dataSourceSettings,
@@ -23671,6 +23821,8 @@ let PivotView = class PivotView extends Component {
23671
23821
  this.pivotFieldListModule.axisFieldModule.render();
23672
23822
  }
23673
23823
  break;
23824
+ case 'enableFieldSearching':
23825
+ this.pivotFieldListModule.enableFieldSearching = this.enableFieldSearching;
23674
23826
  }
23675
23827
  }
23676
23828
  }
@@ -23927,7 +24079,7 @@ let PivotView = class PivotView extends Component {
23927
24079
  }
23928
24080
  }
23929
24081
  else {
23930
- pivot.olapEngineModule.renderEngine(pivot.dataSourceSettings, customProperties, pivot.getHeaderSortInfo.bind(pivot));
24082
+ pivot.olapEngineModule.renderEngine(pivot.dataSourceSettings, customProperties, pivot.onHeadersSort ? pivot.getHeaderSortInfo.bind(pivot) : undefined);
23931
24083
  }
23932
24084
  pivot.allowServerDataBinding = false;
23933
24085
  pivot.setProperties({ pivotValues: pivot.olapEngineModule.pivotValues }, true);
@@ -23968,7 +24120,7 @@ let PivotView = class PivotView extends Component {
23968
24120
  pivot.lastFilterInfo = {};
23969
24121
  }
23970
24122
  else {
23971
- pivot.engineModule.renderEngine(pivot.dataSourceSettings, customProperties, pivot.getValueCellInfo.bind(pivot), pivot.getHeaderSortInfo.bind(pivot));
24123
+ pivot.engineModule.renderEngine(pivot.dataSourceSettings, customProperties, pivot.aggregateCellInfo ? pivot.getValueCellInfo.bind(pivot) : undefined, pivot.onHeadersSort ? pivot.getHeaderSortInfo.bind(pivot) : undefined);
23972
24124
  pivot.allowServerDataBinding = false;
23973
24125
  pivot.setProperties({ pivotValues: pivot.engineModule.pivotValues }, true);
23974
24126
  /* eslint-disable-next-line @typescript-eslint/no-explicit-any */
@@ -24804,6 +24956,9 @@ let PivotView = class PivotView extends Component {
24804
24956
  this.lastCellClicked = e.target;
24805
24957
  }
24806
24958
  let target = e.target;
24959
+ if (closest(target, '.' + PIVOT_BUTTON_CLASS)) {
24960
+ return;
24961
+ }
24807
24962
  let ele = null;
24808
24963
  let axis = (target.parentElement.classList.contains(ROWSHEADER) || target.classList.contains(ROWSHEADER)) ? 'row' : 'column';
24809
24964
  ele = axis === 'column' ? closest(target, 'th') : closest(target, 'td');
@@ -25230,6 +25385,9 @@ let PivotView = class PivotView extends Component {
25230
25385
  this.getSelectedCellsPos();
25231
25386
  });
25232
25387
  }
25388
+ else {
25389
+ this.clearSelection(null, e, null, null);
25390
+ }
25233
25391
  }
25234
25392
  rowDeselect(ele, e, rowIndex, mode, observedArgs) {
25235
25393
  if (!e.shiftKey && !e.ctrlKey && this.gridSettings.selectionSettings.mode !== 'Both' || this.gridSettings.selectionSettings.type === 'Single') {
@@ -25275,7 +25433,7 @@ let PivotView = class PivotView extends Component {
25275
25433
  clearSelection(ele, e, colIndex, rowIndex) {
25276
25434
  if ((!e.shiftKey && !e.ctrlKey) || this.gridSettings.selectionSettings.type === 'Single') {
25277
25435
  if (this.gridSettings.selectionSettings.mode === 'Cell') {
25278
- if (ele.classList.contains(COLUMNSHEADER)) {
25436
+ if (ele && ele.classList.contains(COLUMNSHEADER)) {
25279
25437
  removeClass(this.element.querySelectorAll(('.' + ROW_CELL_CLASS + '.') + CELL_SELECTED_BGCOLOR), CELL_SELECTED_BGCOLOR);
25280
25438
  }
25281
25439
  else {
@@ -25283,7 +25441,7 @@ let PivotView = class PivotView extends Component {
25283
25441
  }
25284
25442
  }
25285
25443
  else if (this.gridSettings.selectionSettings.mode === 'Both') {
25286
- if (ele.classList.contains(ROW_CELL_CLASS)) {
25444
+ if (ele && ele.classList.contains(ROW_CELL_CLASS)) {
25287
25445
  for (let ele of [].slice.call(this.element.querySelectorAll('.' + SELECTED_BGCOLOR + ', .' + CELL_SELECTED_BGCOLOR))) {
25288
25446
  // if (Number((ele as HTMLElement).getAttribute('index')) !== rowIndex) {
25289
25447
  removeClass([ele], [CELL_ACTIVE_BGCOLOR, SELECTED_BGCOLOR, CELL_SELECTED_BGCOLOR]);
@@ -25511,7 +25669,7 @@ let PivotView = class PivotView extends Component {
25511
25669
  this.clonedReport = this.clonedReport ? this.clonedReport : dataSourceSettings;
25512
25670
  }
25513
25671
  if (this.dataSourceSettings.mode !== 'Server') {
25514
- this.engineModule.renderEngine(this.dataSourceSettings, customProperties, this.getValueCellInfo.bind(this), this.getHeaderSortInfo.bind(this));
25672
+ this.engineModule.renderEngine(this.dataSourceSettings, customProperties, this.aggregateCellInfo ? this.getValueCellInfo.bind(this) : undefined, this.onHeadersSort ? this.getHeaderSortInfo.bind(this) : undefined);
25515
25673
  }
25516
25674
  this.allowServerDataBinding = false;
25517
25675
  this.setProperties({ pivotValues: this.engineModule.pivotValues }, true);
@@ -25522,7 +25680,7 @@ let PivotView = class PivotView extends Component {
25522
25680
  else if (this.dataSourceSettings.providerType === 'SSAS' && this.dataType === 'olap') {
25523
25681
  customProperties.savedFieldList = this.olapEngineModule.fieldList;
25524
25682
  customProperties.savedFieldListData = this.olapEngineModule.fieldListData;
25525
- this.olapEngineModule.renderEngine(this.dataSourceSettings, customProperties, this.getHeaderSortInfo.bind(this));
25683
+ this.olapEngineModule.renderEngine(this.dataSourceSettings, customProperties, this.onHeadersSort ? this.getHeaderSortInfo.bind(this) : undefined);
25526
25684
  this.allowServerDataBinding = false;
25527
25685
  this.setProperties({ pivotValues: this.olapEngineModule.pivotValues }, true);
25528
25686
  delete this.bulkChanges.pivotValues;
@@ -26002,7 +26160,8 @@ let PivotView = class PivotView extends Component {
26002
26160
  : this.actionObj.actionName == removeRecord ? recordRemoved : (this.actionObj.actionName == pngExport) ? pngExported : (this.actionObj.actionName == jpegExport) ? jpegExported
26003
26161
  : (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
26004
26162
  : this.actionObj.actionName == saveCurrentReport ? reportSaved : (this.actionObj.actionName == addNewReport) ? newReportAdded : (this.actionObj.actionName == saveAsCurrentReport) ? reportReSaved
26005
- : (this.actionObj.actionName == renameCurrentReport) ? reportRenamed : this.actionObj.actionName;
26163
+ : (this.actionObj.actionName == renameCurrentReport) ? reportRenamed : (this.actionObj.actionName == renameCurrentReport) ? reportRenamed : (this.actionObj.actionName == horizontalScroll) ? horizontalScrolled
26164
+ : (this.actionObj.actionName == verticalScroll) ? verticalScrolled : this.actionObj.actionName;
26006
26165
  return actionName;
26007
26166
  }
26008
26167
  /* eslint-disable-next-line */
@@ -26241,6 +26400,9 @@ __decorate([
26241
26400
  __decorate([
26242
26401
  Property(false)
26243
26402
  ], PivotView.prototype, "allowCalculatedField", void 0);
26403
+ __decorate([
26404
+ Property(false)
26405
+ ], PivotView.prototype, "enableFieldSearching", void 0);
26244
26406
  __decorate([
26245
26407
  Property(false)
26246
26408
  ], PivotView.prototype, "enableValueSorting", void 0);
@@ -27564,6 +27726,12 @@ class DialogRenderer {
27564
27726
  if (this.parent.cssClass) {
27565
27727
  addClass([fieldListWrappper], this.parent.cssClass);
27566
27728
  }
27729
+ if (this.parent.enableFieldSearching) {
27730
+ addClass([fieldListWrappper], FIELD_LIST_SEARCH_MODE_CLASS);
27731
+ }
27732
+ else {
27733
+ removeClass([fieldListWrappper], FIELD_LIST_SEARCH_MODE_CLASS);
27734
+ }
27567
27735
  this.parentElement = createElement('div', { className: CONTAINER_CLASS });
27568
27736
  this.parent.element.appendChild(fieldListWrappper);
27569
27737
  if (this.parent.isAdaptive) {
@@ -27608,13 +27776,14 @@ class DialogRenderer {
27608
27776
  checked: true,
27609
27777
  enableRtl: this.parent.enableRtl,
27610
27778
  locale: this.parent.locale,
27611
- change: this.onCheckChange.bind(this)
27779
+ change: this.onCheckChange.bind(this),
27780
+ cssClass: this.parent.cssClass
27612
27781
  });
27613
27782
  this.deferUpdateCheckBox.isStringTemplate = true;
27614
27783
  this.deferUpdateCheckBox.appendTo('#' + this.parent.element.id + 'DeferUpdateCheckBox');
27615
27784
  this.deferUpdateApplyButton = new Button({
27616
27785
  cssClass: DEFER_APPLY_BUTTON + ' ' + DEFER_UPDATE_BUTTON + (this.parent.renderMode === 'Popup' ?
27617
- (' ' + BUTTON_FLAT_CLASS) : ''),
27786
+ (' ' + BUTTON_FLAT_CLASS) : '') + (this.parent.cssClass ? (' ' + this.parent.cssClass) : ''),
27618
27787
  content: this.parent.localeObj.getConstant('apply'),
27619
27788
  enableRtl: this.parent.enableRtl,
27620
27789
  locale: this.parent.locale,
@@ -27627,7 +27796,7 @@ class DialogRenderer {
27627
27796
  }
27628
27797
  this.deferUpdateCancelButton = new Button({
27629
27798
  cssClass: DEFER_CANCEL_BUTTON + ' ' + CANCEL_BUTTON_CLASS + (this.parent.renderMode === 'Popup' ?
27630
- (' ' + BUTTON_FLAT_CLASS) : ''),
27799
+ (' ' + BUTTON_FLAT_CLASS) : '') + (this.parent.cssClass ? (' ' + this.parent.cssClass) : ''),
27631
27800
  content: this.parent.allowDeferLayoutUpdate ? this.parent.localeObj.getConstant('cancel') :
27632
27801
  this.parent.localeObj.getConstant('close'),
27633
27802
  enableRtl: this.parent.enableRtl, isPrimary: !this.parent.allowDeferLayoutUpdate, locale: this.parent.locale
@@ -27744,7 +27913,7 @@ class DialogRenderer {
27744
27913
  let buttons = [{
27745
27914
  click: this.showFieldListDialog.bind(this),
27746
27915
  buttonModel: {
27747
- cssClass: ADAPTIVE_FIELD_LIST_BUTTON_CLASS + ' ' + BUTTON_SMALL_CLASS + ' ' + BUTTON_ROUND_CLASS,
27916
+ cssClass: ADAPTIVE_FIELD_LIST_BUTTON_CLASS + ' ' + BUTTON_SMALL_CLASS + ' ' + BUTTON_ROUND_CLASS + (this.parent.cssClass ? (' ' + this.parent.cssClass) : ''),
27748
27917
  iconCss: ICON + ' ' + ADD_ICON_CLASS,
27749
27918
  isPrimary: true
27750
27919
  }
@@ -27752,7 +27921,7 @@ class DialogRenderer {
27752
27921
  click: this.showCalculatedField.bind(this),
27753
27922
  buttonModel: {
27754
27923
  cssClass: ADAPTIVE_CALCULATED_FIELD_BUTTON_CLASS +
27755
- ' ' + BUTTON_SMALL_CLASS + ' ' + BUTTON_ROUND_CLASS + ' ' + ICON_DISABLE,
27924
+ ' ' + BUTTON_SMALL_CLASS + ' ' + BUTTON_ROUND_CLASS + ' ' + ICON_DISABLE + (this.parent.cssClass ? (' ' + this.parent.cssClass) : ''),
27756
27925
  iconCss: ICON + ' ' + ADD_ICON_CLASS, enableRtl: this.parent.enableRtl,
27757
27926
  isPrimary: true
27758
27927
  }
@@ -27889,7 +28058,8 @@ class DialogRenderer {
27889
28058
  height: '100%',
27890
28059
  enableRtl: this.parent.enableRtl,
27891
28060
  locale: this.parent.locale,
27892
- selected: this.tabSelect.bind(this)
28061
+ selected: this.tabSelect.bind(this),
28062
+ cssClass: this.parent.cssClass
27893
28063
  });
27894
28064
  if (this.parent.renderMode === 'Fixed') {
27895
28065
  layoutFooter.appendChild(this.createAddButton());
@@ -27935,7 +28105,7 @@ class DialogRenderer {
27935
28105
  }
27936
28106
  });
27937
28107
  let calculateField = new Button({
27938
- cssClass: CALCULATED_FIELD_CLASS + ' ' + ICON_DISABLE,
28108
+ cssClass: CALCULATED_FIELD_CLASS + ' ' + ICON_DISABLE + (this.parent.cssClass ? (' ' + this.parent.cssClass) : ''),
27939
28109
  content: this.parent.localeObj.getConstant('CalculatedField'),
27940
28110
  enableRtl: this.parent.enableRtl, locale: this.parent.locale
27941
28111
  });
@@ -27955,12 +28125,12 @@ class DialogRenderer {
27955
28125
  let calculatedButton = createElement('div', {});
27956
28126
  let calculateField = new Button({
27957
28127
  cssClass: ADAPTIVE_CALCULATED_FIELD_BUTTON_CLASS +
27958
- ' ' + BUTTON_SMALL_CLASS + ' ' + BUTTON_ROUND_CLASS + ' ' + ICON_DISABLE,
28128
+ ' ' + BUTTON_SMALL_CLASS + ' ' + BUTTON_ROUND_CLASS + ' ' + ICON_DISABLE + (this.parent.cssClass ? (' ' + this.parent.cssClass) : ''),
27959
28129
  iconCss: ICON + ' ' + ADD_ICON_CLASS,
27960
28130
  enableRtl: this.parent.enableRtl, locale: this.parent.locale
27961
28131
  });
27962
28132
  let fieldList = new Button({
27963
- cssClass: ADAPTIVE_FIELD_LIST_BUTTON_CLASS + ' ' + BUTTON_SMALL_CLASS + ' ' + BUTTON_ROUND_CLASS,
28133
+ cssClass: ADAPTIVE_FIELD_LIST_BUTTON_CLASS + ' ' + BUTTON_SMALL_CLASS + ' ' + BUTTON_ROUND_CLASS + (this.parent.cssClass ? (' ' + this.parent.cssClass) : ''),
27964
28134
  iconCss: ICON + ' ' + ADD_ICON_CLASS,
27965
28135
  enableRtl: this.parent.enableRtl, locale: this.parent.locale
27966
28136
  });
@@ -28150,6 +28320,8 @@ class TreeViewRenderer {
28150
28320
  */
28151
28321
  constructor(parent) {
28152
28322
  this.selectedNodes = [];
28323
+ this.isSearching = false;
28324
+ this.parentIDs = [];
28153
28325
  this.parent = parent;
28154
28326
  this.addEventListener();
28155
28327
  }
@@ -28170,15 +28342,42 @@ class TreeViewRenderer {
28170
28342
  className: FIELD_HEADER_CLASS,
28171
28343
  innerHTML: this.parent.localeObj.getConstant('allFields')
28172
28344
  });
28173
- let treeOuterDiv = createElement('div', { className: FIELD_LIST_TREE_CLASS + '-outer-div' });
28345
+ let searchWrapper = createElement('div', {
28346
+ id: this.parent.element.id + '_SearchDiv', attrs: { 'tabindex': '-1' },
28347
+ className: FIELD_LIST_SEARCH_CLASS
28348
+ });
28349
+ let searchInput = createElement('input', { attrs: { 'type': 'text' } });
28350
+ searchWrapper.appendChild(searchInput);
28351
+ this.fieldSearch = new TextBox({
28352
+ placeholder: this.parent.localeObj.getConstant('search'),
28353
+ enableRtl: this.parent.enableRtl,
28354
+ locale: this.parent.locale,
28355
+ cssClass: FIELD_LIST_SEARCH_INPUT_CLASS + (this.parent.cssClass ? (' ' + this.parent.cssClass) : ''),
28356
+ input: this.textChange.bind(this),
28357
+ showClearButton: true
28358
+ });
28359
+ this.fieldSearch.isStringTemplate = true;
28360
+ this.fieldSearch.appendTo(searchInput);
28361
+ this.fieldSearch.addIcon('append', FIELD_LIST_SEARCH_ICON_CLASS + ' ' + ICON);
28362
+ let promptDiv = createElement('div', {
28363
+ className: EMPTY_MEMBER_CLASS + ' ' + ICON_DISABLE,
28364
+ innerHTML: this.parent.localeObj.getConstant('noMatches')
28365
+ });
28366
+ let treeOuterDiv = createElement('div', {
28367
+ className: FIELD_LIST_TREE_OUTER_DIV_CLASS + ' ' + TREE_CONTAINER
28368
+ });
28174
28369
  this.treeViewElement = createElement('div', {
28175
28370
  id: this.parent.element.id + '_TreeView',
28176
28371
  className: FIELD_LIST_CLASS + ' ' + (this.parent.dataType === 'olap' ? OLAP_FIELD_LIST_CLASS : '')
28177
28372
  });
28178
- let fieldHeaderWrappper = createElement('div', { className: 'e-field-header-container' });
28373
+ let fieldHeaderWrappper = createElement('div', { className: FIELD_HEADER_CONTAINER_CLASS });
28179
28374
  fieldHeaderWrappper.appendChild(treeHeader);
28180
28375
  fieldTable.appendChild(fieldHeaderWrappper);
28181
28376
  this.updateSortElements(fieldHeaderWrappper);
28377
+ if (this.parent.enableFieldSearching) {
28378
+ fieldTable.appendChild(searchWrapper);
28379
+ fieldTable.appendChild(promptDiv);
28380
+ }
28182
28381
  treeOuterDiv.appendChild(this.treeViewElement);
28183
28382
  fieldTable.appendChild(treeOuterDiv);
28184
28383
  this.parentElement.appendChild(fieldTable);
@@ -28301,6 +28500,39 @@ class TreeViewRenderer {
28301
28500
  if (args.node.querySelector('.' + NODE_CHECK_CLASS)) {
28302
28501
  addClass([args.node.querySelector('.' + LIST_TEXT_CLASS)], LIST_SELECT_CLASS);
28303
28502
  }
28503
+ if (this.parent.enableFieldSearching && this.isSearching) {
28504
+ let liElement = args.node;
28505
+ if (this.parent.dataType === 'olap') {
28506
+ let id = liElement.getAttribute('data-uid');
28507
+ let searchItem = this.parent.pivotCommon.eventBase.searchListItem;
28508
+ for (let i = 0; i < this.parentIDs.length; i++) {
28509
+ if (id === this.parentIDs[i]) {
28510
+ addClass([liElement], ICON_DISABLE);
28511
+ }
28512
+ for (let li2 of searchItem) {
28513
+ let parentID = this.parent.pivotCommon.eventBase.getParentIDs(this.fieldTable, li2.getAttribute('data-uid'), []);
28514
+ if (PivotUtil.inArray(id, parentID) > -1) {
28515
+ removeClass([liElement], ICON_DISABLE);
28516
+ break;
28517
+ }
28518
+ }
28519
+ }
28520
+ }
28521
+ else {
28522
+ for (let i = 0; i < this.nonSearchList.length; i++) {
28523
+ if (liElement.textContent === this.nonSearchList[i].textContent) {
28524
+ addClass([liElement], ICON_DISABLE);
28525
+ break;
28526
+ }
28527
+ else {
28528
+ if (liElement.innerText === this.nonSearchList[i].textContent) {
28529
+ addClass([liElement], ICON_DISABLE);
28530
+ break;
28531
+ }
28532
+ }
28533
+ }
28534
+ }
28535
+ }
28304
28536
  }
28305
28537
  updateOlapTreeNode(args) {
28306
28538
  let allowDrag = false;
@@ -28356,12 +28588,12 @@ class TreeViewRenderer {
28356
28588
  buttons: [{
28357
28589
  click: this.closeTreeDialog.bind(this),
28358
28590
  buttonModel: {
28359
- cssClass: CANCEL_BUTTON_CLASS, content: this.parent.localeObj.getConstant('cancel')
28591
+ cssClass: CANCEL_BUTTON_CLASS + (this.parent.cssClass ? (' ' + this.parent.cssClass) : ''), content: this.parent.localeObj.getConstant('cancel')
28360
28592
  }
28361
28593
  }, {
28362
28594
  click: this.onFieldAdd.bind(this),
28363
28595
  buttonModel: {
28364
- cssClass: OK_BUTTON_CLASS, content: this.parent.localeObj.getConstant('add'),
28596
+ cssClass: OK_BUTTON_CLASS + (this.parent.cssClass ? (' ' + this.parent.cssClass) : ''), content: this.parent.localeObj.getConstant('add'),
28365
28597
  isPrimary: true
28366
28598
  }
28367
28599
  }],
@@ -28390,7 +28622,7 @@ class TreeViewRenderer {
28390
28622
  });
28391
28623
  let editorSearch = createElement('input', { attrs: { 'type': 'text' } });
28392
28624
  searchWrapper.appendChild(editorSearch);
28393
- let treeOuterDiv = createElement('div', { className: EDITOR_TREE_CONTAINER_CLASS + '-outer-div' });
28625
+ let treeOuterDiv = createElement('div', { className: FIELD_LIST_TREE_OUTER_DIV_CLASS });
28394
28626
  let treeViewContainer = createElement('div', {
28395
28627
  className: EDITOR_TREE_CONTAINER_CLASS + ' ' + (this.parent.dataType === 'olap' ? 'e-olap-field-list-tree' : '')
28396
28628
  });
@@ -28400,7 +28632,7 @@ class TreeViewRenderer {
28400
28632
  placeholder: this.parent.localeObj.getConstant('search'),
28401
28633
  enableRtl: this.parent.enableRtl,
28402
28634
  locale: this.parent.locale,
28403
- cssClass: EDITOR_SEARCH_CLASS,
28635
+ cssClass: EDITOR_SEARCH_CLASS + (this.parent.cssClass ? (' ' + this.parent.cssClass) : ''),
28404
28636
  change: this.textChange.bind(this)
28405
28637
  });
28406
28638
  this.editorSearch.isStringTemplate = true;
@@ -28436,14 +28668,41 @@ class TreeViewRenderer {
28436
28668
  }
28437
28669
  textChange(e) {
28438
28670
  this.parent.pivotCommon.eventBase.searchTreeNodes(e, this.fieldTable, true);
28439
- let promptDiv = this.fieldDialog.element.querySelector('.' + EMPTY_MEMBER_CLASS);
28671
+ let promptDiv;
28672
+ let treeOuterDiv;
28673
+ if (this.parent.isAdaptive) {
28674
+ promptDiv = this.fieldDialog.element.querySelector('.' + EMPTY_MEMBER_CLASS);
28675
+ }
28676
+ else {
28677
+ promptDiv = this.parentElement.querySelector('.' + EMPTY_MEMBER_CLASS);
28678
+ treeOuterDiv = this.parentElement.querySelector('.' + TREE_CONTAINER);
28679
+ }
28440
28680
  let liList = [].slice.call(this.fieldTable.element.querySelectorAll('li'));
28441
28681
  let disabledList = [].slice.call(this.fieldTable.element.querySelectorAll('li.' + ICON_DISABLE));
28442
28682
  if (liList.length === disabledList.length) {
28443
28683
  removeClass([promptDiv], ICON_DISABLE);
28684
+ if (!this.parent.isAdaptive) {
28685
+ addClass([treeOuterDiv], ICON_DISABLE);
28686
+ removeClass([treeOuterDiv], FIELD_LIST_TREE_OUTER_DIV_SEARCH_CLASS);
28687
+ }
28444
28688
  }
28445
28689
  else {
28446
28690
  addClass([promptDiv], ICON_DISABLE);
28691
+ if (!this.parent.isAdaptive) {
28692
+ removeClass([treeOuterDiv], ICON_DISABLE);
28693
+ addClass([treeOuterDiv], FIELD_LIST_TREE_OUTER_DIV_SEARCH_CLASS);
28694
+ }
28695
+ }
28696
+ this.isSearching = disabledList.length > 0 ? true : false;
28697
+ this.nonSearchList = disabledList;
28698
+ if (this.parent.dataType === 'olap') {
28699
+ this.parentIDs = [];
28700
+ for (let i = 0; i < liList.length; i++) {
28701
+ if (liList[i].classList.contains("e-level-1")) {
28702
+ let id = liList[i].getAttribute('data-uid');
28703
+ this.parentIDs.push(id);
28704
+ }
28705
+ }
28447
28706
  }
28448
28707
  }
28449
28708
  dragStart(args) {
@@ -29086,6 +29345,10 @@ class TreeViewRenderer {
29086
29345
  this.editorSearch.destroy();
29087
29346
  this.editorSearch = null;
29088
29347
  }
29348
+ if (this.fieldSearch && !this.fieldSearch.isDestroyed) {
29349
+ this.fieldSearch.destroy();
29350
+ this.fieldSearch = null;
29351
+ }
29089
29352
  }
29090
29353
  }
29091
29354
 
@@ -29389,7 +29652,7 @@ class PivotButton {
29389
29652
  buttonWrapper.appendChild(buttonElement);
29390
29653
  }
29391
29654
  element.appendChild(buttonWrapper);
29392
- let pivotButton = new Button({ enableRtl: this.parent.enableRtl, locale: this.parent.locale });
29655
+ let pivotButton = new Button({ enableRtl: this.parent.enableRtl, locale: this.parent.locale, cssClass: this.parent.cssClass });
29393
29656
  pivotButton.isStringTemplate = true;
29394
29657
  pivotButton.appendTo(buttonElement);
29395
29658
  this.unWireEvent(buttonWrapper, i === valuePos && axis !== 'all-fields' ? 'values' : axis, isMeasureAvail);
@@ -30200,7 +30463,7 @@ class PivotButton {
30200
30463
  return [
30201
30464
  {
30202
30465
  buttonModel: {
30203
- cssClass: 'e-clear-filter-button' + (this.parent.pivotCommon.filterDialog.allowExcelLikeFilter ? '' : ' ' + ICON_DISABLE),
30466
+ cssClass: 'e-clear-filter-button' + (this.parent.pivotCommon.filterDialog.allowExcelLikeFilter ? '' : ' ' + ICON_DISABLE) + (this.parent.cssClass ? (' ' + this.parent.cssClass) : ''),
30204
30467
  iconCss: 'e-icons e-clear-filter-icon', enableRtl: this.parent.enableRtl,
30205
30468
  content: this.parent.localeObj.getConstant('clearFilter'), disabled: (this.parent.pivotCommon.filterDialog.filterObject ? false : true)
30206
30469
  },
@@ -30208,13 +30471,13 @@ class PivotButton {
30208
30471
  },
30209
30472
  {
30210
30473
  buttonModel: {
30211
- cssClass: OK_BUTTON_CLASS, content: this.parent.localeObj.getConstant('ok'), isPrimary: true
30474
+ cssClass: OK_BUTTON_CLASS + (this.parent.cssClass ? (' ' + this.parent.cssClass) : ''), content: this.parent.localeObj.getConstant('ok'), isPrimary: true
30212
30475
  },
30213
30476
  click: (this.index === 0 ? this.updateFilterState.bind(this, this.fieldName) : this.updateCustomFilter.bind(this))
30214
30477
  },
30215
30478
  {
30216
30479
  click: this.parent.pivotCommon.filterDialog.closeFilterDialog.bind(this.parent.pivotCommon.filterDialog),
30217
- buttonModel: { cssClass: CANCEL_BUTTON_CLASS, content: this.parent.localeObj.getConstant('cancel') }
30480
+ buttonModel: { cssClass: CANCEL_BUTTON_CLASS + (this.parent.cssClass ? (' ' + this.parent.cssClass) : ''), content: this.parent.localeObj.getConstant('cancel') }
30218
30481
  }
30219
30482
  ];
30220
30483
  }
@@ -31420,6 +31683,8 @@ let PivotFieldList = class PivotFieldList extends Component {
31420
31683
  }
31421
31684
  requireRefresh = true;
31422
31685
  break;
31686
+ case 'enableFieldSearching':
31687
+ this.refresh();
31423
31688
  }
31424
31689
  if (requireRefresh) {
31425
31690
  this.fieldListRender();
@@ -31462,7 +31727,7 @@ let PivotFieldList = class PivotFieldList extends Component {
31462
31727
  customProperties.enableValueSorting = this.staticPivotGridModule ?
31463
31728
  this.staticPivotGridModule.enableValueSorting : this.enableValueSorting;
31464
31729
  if (this.dataSourceSettings.mode !== 'Server') {
31465
- this.engineModule.renderEngine(this.dataSourceSettings, customProperties, this.getValueCellInfo.bind(this), this.getHeaderSortInfo.bind(this));
31730
+ this.engineModule.renderEngine(this.dataSourceSettings, customProperties, this.aggregateCellInfo ? this.getValueCellInfo.bind(this) : undefined, this.onHeadersSort ? this.getHeaderSortInfo.bind(this) : undefined);
31466
31731
  }
31467
31732
  this.pivotFieldList = this.engineModule.fieldList;
31468
31733
  let eventArgs = {
@@ -31478,7 +31743,7 @@ let PivotFieldList = class PivotFieldList extends Component {
31478
31743
  });
31479
31744
  }
31480
31745
  else if (this.dataType === 'olap') {
31481
- this.olapEngineModule.renderEngine(this.dataSourceSettings, this.frameCustomProperties(this.olapEngineModule.fieldListData, this.olapEngineModule.fieldList), this.getHeaderSortInfo.bind(this));
31746
+ this.olapEngineModule.renderEngine(this.dataSourceSettings, this.frameCustomProperties(this.olapEngineModule.fieldListData, this.olapEngineModule.fieldList), this.onHeadersSort ? this.getHeaderSortInfo.bind(this) : undefined);
31482
31747
  this.pivotFieldList = this.olapEngineModule.fieldList;
31483
31748
  let eventArgs = {
31484
31749
  pivotFieldList: this.pivotFieldList,
@@ -31556,10 +31821,10 @@ let PivotFieldList = class PivotFieldList extends Component {
31556
31821
  this.fieldListSpinnerElement = this.element.querySelector('.e-pivotfieldlist-container');
31557
31822
  }
31558
31823
  if (this.spinnerTemplate) {
31559
- createSpinner({ target: this.fieldListSpinnerElement, template: this.spinnerTemplate }, this.createElement);
31824
+ createSpinner({ target: this.fieldListSpinnerElement, template: this.spinnerTemplate, cssClass: this.cssClass ? this.cssClass : undefined }, this.createElement);
31560
31825
  }
31561
31826
  else {
31562
- createSpinner({ target: this.fieldListSpinnerElement }, this.createElement);
31827
+ createSpinner({ target: this.fieldListSpinnerElement, cssClass: this.cssClass ? this.cssClass : undefined }, this.createElement);
31563
31828
  }
31564
31829
  let args;
31565
31830
  args = {
@@ -31717,7 +31982,7 @@ let PivotFieldList = class PivotFieldList extends Component {
31717
31982
  pivot.lastFilterInfo = {};
31718
31983
  }
31719
31984
  else {
31720
- pivot.engineModule.renderEngine(pivot.dataSourceSettings, customProperties, pivot.getValueCellInfo.bind(pivot), pivot.getHeaderSortInfo.bind(pivot));
31985
+ pivot.engineModule.renderEngine(pivot.dataSourceSettings, customProperties, pivot.aggregateCellInfo ? pivot.getValueCellInfo.bind(pivot) : undefined, pivot.onHeadersSort ? pivot.getHeaderSortInfo.bind(pivot) : undefined);
31721
31986
  }
31722
31987
  }
31723
31988
  }
@@ -31814,7 +32079,7 @@ let PivotFieldList = class PivotFieldList extends Component {
31814
32079
  }
31815
32080
  }
31816
32081
  else {
31817
- pivot.olapEngineModule.renderEngine(pivot.dataSourceSettings, customProperties, pivot.getHeaderSortInfo.bind(pivot));
32082
+ pivot.olapEngineModule.renderEngine(pivot.dataSourceSettings, customProperties, pivot.onHeadersSort ? pivot.getHeaderSortInfo.bind(pivot) : undefined);
31818
32083
  }
31819
32084
  pivot.lastSortInfo = {};
31820
32085
  pivot.lastAggregationInfo = {};
@@ -32063,6 +32328,9 @@ __decorate$4([
32063
32328
  __decorate$4([
32064
32329
  Property(false)
32065
32330
  ], PivotFieldList.prototype, "allowCalculatedField", void 0);
32331
+ __decorate$4([
32332
+ Property(false)
32333
+ ], PivotFieldList.prototype, "enableFieldSearching", void 0);
32066
32334
  __decorate$4([
32067
32335
  Property(false)
32068
32336
  ], PivotFieldList.prototype, "showValuesButton", void 0);
@@ -33125,13 +33393,15 @@ class CalculatedField {
33125
33393
  click: this.applyFormula.bind(this),
33126
33394
  buttonModel: {
33127
33395
  content: this.parent.localeObj.getConstant('ok'),
33128
- isPrimary: true
33396
+ isPrimary: true,
33397
+ cssClass: this.parent.cssClass
33129
33398
  }
33130
33399
  },
33131
33400
  {
33132
33401
  click: this.cancelClick.bind(this),
33133
33402
  buttonModel: {
33134
- content: this.parent.localeObj.getConstant('cancel')
33403
+ content: this.parent.localeObj.getConstant('cancel'),
33404
+ cssClass: this.parent.cssClass
33135
33405
  }
33136
33406
  }
33137
33407
  ];
@@ -33139,7 +33409,7 @@ class CalculatedField {
33139
33409
  let clearButton = {
33140
33410
  click: this.clearFormula.bind(this),
33141
33411
  buttonModel: {
33142
- cssClass: 'e-calc-clear-btn',
33412
+ cssClass: 'e-calc-clear-btn' + (this.parent.cssClass ? (' ' + this.parent.cssClass) : ''),
33143
33413
  content: this.parent.localeObj.getConstant('clear'),
33144
33414
  }
33145
33415
  };
@@ -33568,7 +33838,8 @@ class CalculatedField {
33568
33838
  change: (args) => {
33569
33839
  this.formatText = args.value;
33570
33840
  this.formulaText = select('#' + this.parentID + 'droppable', document).value;
33571
- }
33841
+ },
33842
+ cssClass: this.parent.cssClass
33572
33843
  });
33573
33844
  customerFormatObj.isStringTemplate = true;
33574
33845
  customerFormatObj.appendTo('#' + this.parentID + 'Custom_Format_Element');
@@ -33871,7 +34142,7 @@ class CalculatedField {
33871
34142
  dialogRenderer.parentElement.querySelector('.' + FORMULA) !== null) {
33872
34143
  this.createOlapDropElements();
33873
34144
  }
33874
- let cancelBtn = new Button({ cssClass: FLAT, isPrimary: true, locale: this.parent.locale, enableRtl: this.parent.enableRtl });
34145
+ let cancelBtn = new Button({ cssClass: FLAT + (this.parent.cssClass ? (' ' + this.parent.cssClass) : ''), isPrimary: true, locale: this.parent.locale, enableRtl: this.parent.enableRtl });
33875
34146
  cancelBtn.isStringTemplate = true;
33876
34147
  cancelBtn.appendTo('#' + this.parentID + 'cancelBtn');
33877
34148
  if (cancelBtn.element) {
@@ -33879,7 +34150,7 @@ class CalculatedField {
33879
34150
  }
33880
34151
  if (this.parent.
33881
34152
  dialogRenderer.parentElement.querySelector('.' + FORMULA) !== null && this.parent.isAdaptive) {
33882
- let okBtn = new Button({ cssClass: FLAT + ' ' + OUTLINE_CLASS, isPrimary: true, locale: this.parent.locale, enableRtl: this.parent.enableRtl });
34153
+ let okBtn = new Button({ cssClass: FLAT + ' ' + OUTLINE_CLASS + (this.parent.cssClass ? (' ' + this.parent.cssClass) : ''), isPrimary: true, locale: this.parent.locale, enableRtl: this.parent.enableRtl });
33883
34154
  okBtn.isStringTemplate = true;
33884
34155
  okBtn.appendTo('#' + this.parentID + 'okBtn');
33885
34156
  this.inputObj = new MaskedTextBox({
@@ -33888,7 +34159,8 @@ class CalculatedField {
33888
34159
  change: (args) => {
33889
34160
  this.fieldText = args.value;
33890
34161
  this.formulaText = select('#' + this.parentID + 'droppable', document).value;
33891
- }
34162
+ },
34163
+ cssClass: this.parent.cssClass
33892
34164
  });
33893
34165
  this.inputObj.isStringTemplate = true;
33894
34166
  this.inputObj.appendTo('#' + this.parentID + 'ddlelement');
@@ -33899,7 +34171,8 @@ class CalculatedField {
33899
34171
  change: (args) => {
33900
34172
  this.formatText = args.value;
33901
34173
  this.formulaText = select('#' + this.parentID + 'droppable', document).value;
33902
- }
34174
+ },
34175
+ cssClass: this.parent.cssClass
33903
34176
  });
33904
34177
  formatInputObj.isStringTemplate = true;
33905
34178
  formatInputObj.appendTo('#' + this.parentID + 'Custom_Format_Element');
@@ -33925,7 +34198,7 @@ class CalculatedField {
33925
34198
  }
33926
34199
  }
33927
34200
  else if (this.parent.isAdaptive) {
33928
- let addBtn = new Button({ cssClass: FLAT, isPrimary: true, locale: this.parent.locale, enableRtl: this.parent.enableRtl });
34201
+ let addBtn = new Button({ cssClass: FLAT + (this.parent.cssClass ? (' ' + this.parent.cssClass) : ''), isPrimary: true, locale: this.parent.locale, enableRtl: this.parent.enableRtl });
33929
34202
  addBtn.isStringTemplate = true;
33930
34203
  addBtn.appendTo('#' + this.parentID + 'addBtn');
33931
34204
  if (this.parent.dataType === 'olap') {
@@ -33982,7 +34255,8 @@ class CalculatedField {
33982
34255
  name: AGRTYPE + key,
33983
34256
  checked: args.element.querySelector('[data-type').getAttribute('data-type') === type[i],
33984
34257
  change: this.onChange.bind(this),
33985
- locale: this.parent.locale, enableRtl: this.parent.enableRtl
34258
+ locale: this.parent.locale, enableRtl: this.parent.enableRtl,
34259
+ cssClass: this.parent.cssClass
33986
34260
  });
33987
34261
  radiobutton.isStringTemplate = true;
33988
34262
  radiobutton.appendTo('#' + this.parentID + 'radio' + key + type[i]);
@@ -34019,7 +34293,8 @@ class CalculatedField {
34019
34293
  }
34020
34294
  let checkbox = new CheckBox({
34021
34295
  label: this.parent.engineModule.fieldList[key].caption + ' (' + this.parent.localeObj.getConstant(type) + ')',
34022
- locale: this.parent.locale, enableRtl: this.parent.enableRtl
34296
+ locale: this.parent.locale, enableRtl: this.parent.enableRtl,
34297
+ cssClass: this.parent.cssClass
34023
34298
  });
34024
34299
  checkbox.isStringTemplate = true;
34025
34300
  checkbox.appendTo('#' + this.parentID + '_' + index);
@@ -34114,14 +34389,16 @@ class CalculatedField {
34114
34389
  this.dialog.refresh();
34115
34390
  this.inputObj = new MaskedTextBox({
34116
34391
  placeholder: this.parent.localeObj.getConstant('fieldName'),
34117
- locale: this.parent.locale, enableRtl: this.parent.enableRtl
34392
+ locale: this.parent.locale, enableRtl: this.parent.enableRtl,
34393
+ cssClass: this.parent.cssClass
34118
34394
  });
34119
34395
  this.inputObj.isStringTemplate = true;
34120
34396
  this.inputObj.appendTo('#' + this.parentID + 'ddlelement');
34121
34397
  if (this.parent.dataType === 'pivot') {
34122
34398
  let customerFormatObj = new MaskedTextBox({
34123
34399
  placeholder: this.parent.localeObj.getConstant('numberFormatString'),
34124
- locale: this.parent.locale, enableRtl: this.parent.enableRtl
34400
+ locale: this.parent.locale, enableRtl: this.parent.enableRtl,
34401
+ cssClass: this.parent.cssClass
34125
34402
  });
34126
34403
  customerFormatObj.isStringTemplate = true;
34127
34404
  customerFormatObj.appendTo('#' + this.parentID + 'Custom_Format_Element');
@@ -34162,14 +34439,14 @@ class CalculatedField {
34162
34439
  {
34163
34440
  click: isRemove ? this.removeCalcField.bind(this, node) : this.replaceFormula.bind(this, calcInfo),
34164
34441
  buttonModel: {
34165
- cssClass: OK_BUTTON_CLASS + ' ' + FLAT_CLASS,
34442
+ cssClass: OK_BUTTON_CLASS + ' ' + FLAT_CLASS + (this.parent.cssClass ? (' ' + this.parent.cssClass) : ''),
34166
34443
  content: isRemove ? this.parent.localeObj.getConstant('yes') : this.parent.localeObj.getConstant('ok'), isPrimary: true
34167
34444
  }
34168
34445
  },
34169
34446
  {
34170
34447
  click: this.removeErrorDialog.bind(this),
34171
34448
  buttonModel: {
34172
- cssClass: CANCEL_BUTTON_CLASS,
34449
+ cssClass: CANCEL_BUTTON_CLASS + (this.parent.cssClass ? (' ' + this.parent.cssClass) : ''),
34173
34450
  content: isRemove ? this.parent.localeObj.getConstant('no') : this.parent.localeObj.getConstant('cancel'), isPrimary: true
34174
34451
  }
34175
34452
  }
@@ -34313,7 +34590,8 @@ class FieldList {
34313
34590
  maxNodeLimitInMemberEditor: this.parent.maxNodeLimitInMemberEditor,
34314
34591
  aggregateCellInfo: this.parent.bindTriggerEvents.bind(this.parent),
34315
34592
  onHeadersSort: this.parent.bindTriggerEvents.bind(this.parent),
34316
- cssClass: this.parent.cssClass
34593
+ cssClass: this.parent.cssClass,
34594
+ enableFieldSearching: this.parent.enableFieldSearching
34317
34595
  });
34318
34596
  this.parent.pivotFieldListModule.isPopupView = true;
34319
34597
  this.parent.pivotFieldListModule.pivotGridModule = this.parent;
@@ -34979,7 +35257,7 @@ class GroupingBar {
34979
35257
  }
34980
35258
  element.prepend(createElement('div', { id: this.parent.element.id + '_AllFields' }));
34981
35259
  let toolbarObj = new Toolbar$1({
34982
- cssClass: ALL_FIELDS_PANEL_CLASS,
35260
+ cssClass: ALL_FIELDS_PANEL_CLASS + (this.parent.cssClass ? (' ' + this.parent.cssClass) : ''),
34983
35261
  enableRtl: this.parent.enableRtl,
34984
35262
  items: [{ template: '<div class=' + GROUP_ALL_FIELDS_CLASS + '></div>' }],
34985
35263
  allowKeyboard: false,
@@ -35078,8 +35356,8 @@ class ConditionalFormatting {
35078
35356
  {
35079
35357
  click: this.addButtonClick.bind(this),
35080
35358
  buttonModel: {
35081
- cssClass: this.parent.isAdaptive ? (FORMAT_ROUND_BUTTON + ' ' + FORMAT_CONDITION_BUTTON) :
35082
- FORMAT_CONDITION_BUTTON,
35359
+ cssClass: (this.parent.isAdaptive ? (FORMAT_ROUND_BUTTON + ' ' + FORMAT_CONDITION_BUTTON) :
35360
+ FORMAT_CONDITION_BUTTON) + (this.parent.cssClass ? (' ' + this.parent.cssClass) : ''),
35083
35361
  iconCss: ICON + ' ' + ADD_ICON_CLASS,
35084
35362
  content: this.parent.isAdaptive ? '' : this.parent.localeObj.getConstant('condition')
35085
35363
  }
@@ -35088,7 +35366,7 @@ class ConditionalFormatting {
35088
35366
  click: this.applyButtonClick.bind(this),
35089
35367
  isFlat: true,
35090
35368
  buttonModel: {
35091
- isPrimary: true, cssClass: FORMAT_APPLY_BUTTON,
35369
+ isPrimary: true, cssClass: FORMAT_APPLY_BUTTON + (this.parent.cssClass ? (' ' + this.parent.cssClass) : ''),
35092
35370
  content: this.parent.localeObj.getConstant('apply')
35093
35371
  }
35094
35372
  },
@@ -35096,7 +35374,7 @@ class ConditionalFormatting {
35096
35374
  click: this.cancelButtonClick.bind(this),
35097
35375
  isFlat: true,
35098
35376
  buttonModel: {
35099
- cssClass: FORMAT_CANCEL_BUTTON,
35377
+ cssClass: FORMAT_CANCEL_BUTTON + (this.parent.cssClass ? (' ' + this.parent.cssClass) : ''),
35100
35378
  content: this.parent.localeObj.getConstant('cancel')
35101
35379
  }
35102
35380
  }
@@ -35463,7 +35741,7 @@ class ConditionalFormatting {
35463
35741
  addClass([this.backgroundColor[i].element.nextElementSibling.querySelector('.e-selected-color')], ICON);
35464
35742
  let toggleBtn = new Button({
35465
35743
  iconCss: ICON + ' ' + FORMAT_DELETE_ICON,
35466
- cssClass: FLAT, locale: this.parent.locale, enableRtl: this.parent.enableRtl
35744
+ cssClass: FLAT + (this.parent.cssClass ? (' ' + this.parent.cssClass) : ''), locale: this.parent.locale, enableRtl: this.parent.enableRtl
35467
35745
  });
35468
35746
  toggleBtn.isStringTemplate = true;
35469
35747
  toggleBtn.appendTo('#' + this.parentID + 'removeButton' + i);
@@ -35684,6 +35962,7 @@ class Toolbar$2 {
35684
35962
  locale: this.parent.locale,
35685
35963
  items: this.getItems(),
35686
35964
  allowKeyboard: false,
35965
+ cssClass: this.parent.cssClass,
35687
35966
  width: !this.parent.gridSettings.allowAutoResizing ? (this.parent.grid ? (this.parent.getGridWidthAsNumber() - 2) : (this.parent.getWidthAsNumber() - 2)) : 'auto'
35688
35967
  });
35689
35968
  this.toolbar.isStringTemplate = true;
@@ -35773,7 +36052,7 @@ class Toolbar$2 {
35773
36052
  let toDisable = this.parent.displayOption.view === 'Chart';
35774
36053
  items.push({
35775
36054
  prefixIcon: TOOLBAR_GRID + ' ' + ICON, tooltipText: this.parent.localeObj.getConstant('grid'),
35776
- id: this.parent.element.id + 'grid', cssClass: toDisable ? MENU_DISABLE : '',
36055
+ id: this.parent.element.id + 'grid', cssClass: (toDisable ? MENU_DISABLE : '') + (this.parent.cssClass ? (' ' + this.parent.cssClass) : ''),
35777
36056
  click: this.menuItemClick.bind(this)
35778
36057
  });
35779
36058
  break;
@@ -35781,7 +36060,7 @@ class Toolbar$2 {
35781
36060
  let validTypes = (this.parent.displayOption.view === 'Table');
35782
36061
  items.push({
35783
36062
  template: '<ul id="' + this.parent.element.id + 'chart_menu"></ul>',
35784
- id: this.parent.element.id + 'chartmenu', cssClass: validTypes ? MENU_DISABLE : ''
36063
+ id: this.parent.element.id + 'chartmenu', cssClass: (validTypes ? MENU_DISABLE : '') + (this.parent.cssClass ? (' ' + this.parent.cssClass) : '')
35785
36064
  });
35786
36065
  break;
35787
36066
  case 'MDX':
@@ -35889,7 +36168,7 @@ class Toolbar$2 {
35889
36168
  saveReport(args) {
35890
36169
  if (this.currentReport && this.currentReport !== '' && args.item.id === (this.parent.element.id + 'save')) {
35891
36170
  let saveArgs = {
35892
- report: this.parent.getPersistData(),
36171
+ report: this.getCurrentReport(),
35893
36172
  reportName: this.currentReport
35894
36173
  };
35895
36174
  this.parent.actionObj.actionName = this.parent.getActionCompleteName();
@@ -36146,7 +36425,7 @@ class Toolbar$2 {
36146
36425
  return;
36147
36426
  }
36148
36427
  let saveArgs = {
36149
- report: _this.parent.getPersistData(),
36428
+ report: _this.getCurrentReport(),
36150
36429
  reportName: reportInput.value
36151
36430
  };
36152
36431
  let actionInfo = {
@@ -36182,7 +36461,7 @@ class Toolbar$2 {
36182
36461
  }
36183
36462
  _this.parent.trigger(newReport);
36184
36463
  let saveArgs = {
36185
- report: _this.parent.getPersistData(),
36464
+ report: _this.getCurrentReport(),
36186
36465
  reportName: reportInput.value
36187
36466
  };
36188
36467
  let actionInfo = {
@@ -36273,14 +36552,14 @@ class Toolbar$2 {
36273
36552
  {
36274
36553
  buttonModel: {
36275
36554
  content: this.parent.localeObj.getConstant('yes'), isPrimary: true,
36276
- cssClass: OK_BUTTON_CLASS
36555
+ cssClass: OK_BUTTON_CLASS + (this.parent.cssClass ? (' ' + this.parent.cssClass) : '')
36277
36556
  },
36278
36557
  click: this.okButtonClick.bind(this)
36279
36558
  },
36280
36559
  {
36281
36560
  buttonModel: {
36282
36561
  content: this.parent.localeObj.getConstant('no'),
36283
- cssClass: CANCEL_BUTTON_CLASS
36562
+ cssClass: CANCEL_BUTTON_CLASS + (this.parent.cssClass ? (' ' + this.parent.cssClass) : '')
36284
36563
  },
36285
36564
  click: this.cancelButtonClick.bind(this)
36286
36565
  }
@@ -36325,7 +36604,7 @@ class Toolbar$2 {
36325
36604
  else if (this.action === 'New' || (this.action !== 'Save' && this.action !== 'Rename' && this.action !== 'New')) {
36326
36605
  if (this.currentReport && this.currentReport !== '' && this.parent.isModified) {
36327
36606
  let saveArgs = {
36328
- report: this.parent.getPersistData(),
36607
+ report: this.getCurrentReport(),
36329
36608
  reportName: this.currentReport
36330
36609
  };
36331
36610
  let actionInfo = {
@@ -36350,7 +36629,7 @@ class Toolbar$2 {
36350
36629
  else if (this.action === 'New') {
36351
36630
  this.parent.trigger(newReport);
36352
36631
  let saveArgs = {
36353
- report: this.parent.getPersistData(),
36632
+ report: this.getCurrentReport(),
36354
36633
  reportName: this.currentReport
36355
36634
  };
36356
36635
  this.parent.trigger(saveReport, saveArgs);
@@ -36361,7 +36640,7 @@ class Toolbar$2 {
36361
36640
  }
36362
36641
  else if (this.action === 'Save') {
36363
36642
  let saveArgs = {
36364
- report: this.parent.getPersistData(),
36643
+ report: this.getCurrentReport(),
36365
36644
  reportName: this.currentReport
36366
36645
  };
36367
36646
  this.parent.trigger(saveReport, saveArgs);
@@ -36658,6 +36937,15 @@ class Toolbar$2 {
36658
36937
  }
36659
36938
  this.updateItemElements();
36660
36939
  }
36940
+ getCurrentReport() {
36941
+ let reportStr = this.parent.getPersistData();
36942
+ if (this.parent.dataSourceSettings.type === 'CSV') {
36943
+ let reportSettings = JSON.parse(reportStr);
36944
+ reportSettings.dataSourceSettings.dataSource.splice(0, 0, this.parent.engineModule.fields);
36945
+ reportStr = JSON.stringify(reportSettings);
36946
+ }
36947
+ return reportStr;
36948
+ }
36661
36949
  updateItemElements() {
36662
36950
  let itemElements = [].slice.call(this.toolbar.element.querySelectorAll('.e-toolbar-item'));
36663
36951
  for (let element of itemElements) {
@@ -36688,7 +36976,7 @@ class Toolbar$2 {
36688
36976
  this.parent.element.appendChild(inputCheckbox);
36689
36977
  let checkbox = new CheckBox({
36690
36978
  label: this.parent.localeObj.getConstant('multipleAxes'),
36691
- cssClass: 'e-multipleAxes',
36979
+ cssClass: 'e-multipleAxes' + (this.parent.cssClass ? (' ' + this.parent.cssClass) : ''),
36692
36980
  checked: this.parent.chartSettings.enableMultipleAxis,
36693
36981
  change: (args) => {
36694
36982
  document.getElementById(this.parent.element.id + '_' + 'multipleAxes').click();
@@ -36720,7 +37008,7 @@ class Toolbar$2 {
36720
37008
  let checkbox = new CheckBox({
36721
37009
  label: this.parent.localeObj.getConstant('showLegend'),
36722
37010
  checked: this.getLableState(this.parent.chartSettings.chartSeries.type),
36723
- cssClass: 'e-showLegend',
37011
+ cssClass: 'e-showLegend' + (this.parent.cssClass ? (' ' + this.parent.cssClass) : ''),
36724
37012
  change: (args) => {
36725
37013
  document.getElementById(this.parent.element.id + '_' + 'showLegend').click();
36726
37014
  },
@@ -37092,11 +37380,11 @@ class Toolbar$2 {
37092
37380
  buttons: [
37093
37381
  {
37094
37382
  click: () => { this.chartTypeDialogUpdate(); },
37095
- buttonModel: { cssClass: OK_BUTTON_CLASS, content: this.parent.localeObj.getConstant('ok'), isPrimary: true },
37383
+ buttonModel: { cssClass: OK_BUTTON_CLASS + (this.parent.cssClass ? (' ' + this.parent.cssClass) : ''), content: this.parent.localeObj.getConstant('ok'), isPrimary: true },
37096
37384
  },
37097
37385
  {
37098
37386
  click: () => { this.removeDialog(); },
37099
- buttonModel: { cssClass: CANCEL_BUTTON_CLASS, content: this.parent.localeObj.getConstant('cancel') }
37387
+ buttonModel: { cssClass: CANCEL_BUTTON_CLASS + (this.parent.cssClass ? (' ' + this.parent.cssClass) : ''), content: this.parent.localeObj.getConstant('cancel') }
37100
37388
  }
37101
37389
  ],
37102
37390
  closeOnEscape: true,
@@ -37237,7 +37525,7 @@ class Toolbar$2 {
37237
37525
  beforeOpen() {
37238
37526
  let checkbox = new CheckBox({
37239
37527
  label: this.parent.localeObj.getConstant('multipleAxes'),
37240
- cssClass: 'e-dialog-multiple-axis',
37528
+ cssClass: 'e-dialog-multiple-axis' + (this.parent.cssClass ? (' ' + this.parent.cssClass) : ''),
37241
37529
  checked: this.parent.chartSettings.enableMultipleAxis ? this.parent.chartSettings.enableMultipleAxis : false,
37242
37530
  change: (args) => {
37243
37531
  getInstance(select('#' + this.parent.element.id + '_AxisModeOption'), DropDownList).enabled = args.checked;
@@ -37249,7 +37537,7 @@ class Toolbar$2 {
37249
37537
  label: this.parent.localeObj.getConstant('showLegend'),
37250
37538
  checked: this.getLableState(this.parent.chartSettings.chartSeries.type),
37251
37539
  change: () => { this.chartLableState = true; },
37252
- cssClass: 'e-dialog-show-legend',
37540
+ cssClass: 'e-dialog-show-legend' + (this.parent.cssClass ? (' ' + this.parent.cssClass) : ''),
37253
37541
  enableRtl: this.parent.enableRtl,
37254
37542
  locale: this.parent.locale
37255
37543
  });
@@ -37382,13 +37670,13 @@ class NumberFormatting {
37382
37670
  buttons: [
37383
37671
  {
37384
37672
  click: this.updateFormatting.bind(this),
37385
- buttonModel: { cssClass: OK_BUTTON_CLASS, content: this.parent.localeObj.getConstant('apply'), isPrimary: true }
37673
+ buttonModel: { cssClass: OK_BUTTON_CLASS + (this.parent.cssClass ? (' ' + this.parent.cssClass) : ''), content: this.parent.localeObj.getConstant('apply'), isPrimary: true }
37386
37674
  },
37387
37675
  {
37388
37676
  click: () => {
37389
37677
  this.dialog.hide();
37390
37678
  },
37391
- buttonModel: { cssClass: CANCEL_BUTTON_CLASS, content: this.parent.localeObj.getConstant('cancel') }
37679
+ buttonModel: { cssClass: CANCEL_BUTTON_CLASS + (this.parent.cssClass ? (' ' + this.parent.cssClass) : ''), content: this.parent.localeObj.getConstant('cancel') }
37392
37680
  }
37393
37681
  ],
37394
37682
  closeOnEscape: true,
@@ -38051,13 +38339,13 @@ class Grouping {
38051
38339
  buttons: [
38052
38340
  {
38053
38341
  click: this.updateGroupSettings.bind(this),
38054
- buttonModel: { cssClass: OK_BUTTON_CLASS, content: this.parent.localeObj.getConstant('ok'), isPrimary: true }
38342
+ buttonModel: { cssClass: OK_BUTTON_CLASS + (this.parent.cssClass ? (' ' + this.parent.cssClass) : ''), content: this.parent.localeObj.getConstant('ok'), isPrimary: true }
38055
38343
  },
38056
38344
  {
38057
38345
  click: () => {
38058
38346
  this.groupDialog.hide();
38059
38347
  },
38060
- buttonModel: { cssClass: CANCEL_BUTTON_CLASS, content: this.parent.localeObj.getConstant('cancel') }
38348
+ buttonModel: { cssClass: CANCEL_BUTTON_CLASS + (this.parent.cssClass ? (' ' + this.parent.cssClass) : ''), content: this.parent.localeObj.getConstant('cancel') }
38061
38349
  }
38062
38350
  ],
38063
38351
  overlayClick: () => {
@@ -38125,7 +38413,8 @@ class Grouping {
38125
38413
  placeholder: this.parent.localeObj.getConstant('captionName'),
38126
38414
  enableRtl: this.parent.enableRtl,
38127
38415
  locale: this.parent.locale,
38128
- value: caption, width: '100%'
38416
+ value: caption, width: '100%',
38417
+ cssClass: this.parent.cssClass
38129
38418
  });
38130
38419
  captionInputObj1.isStringTemplate = true;
38131
38420
  captionInputObj1.appendTo(captionInputField1);
@@ -38133,7 +38422,8 @@ class Grouping {
38133
38422
  placeholder: this.parent.localeObj.getConstant('groupName'),
38134
38423
  enableRtl: this.parent.enableRtl,
38135
38424
  locale: this.parent.locale,
38136
- width: '100%'
38425
+ width: '100%',
38426
+ cssClass: this.parent.cssClass
38137
38427
  });
38138
38428
  inputObj1.isStringTemplate = true;
38139
38429
  inputObj1.appendTo(inputField1);
@@ -38281,7 +38571,8 @@ class Grouping {
38281
38571
  format: '###',
38282
38572
  value: startAt === undefined ? undefined : parseInt(startAt, 10),
38283
38573
  enabled: !(startAt === undefined),
38284
- width: '100%'
38574
+ width: '100%',
38575
+ cssClass: this.parent.cssClass
38285
38576
  });
38286
38577
  startAtInputObj.isStringTemplate = true;
38287
38578
  startAtInputObj.appendTo(startAtInputField1);
@@ -38293,7 +38584,8 @@ class Grouping {
38293
38584
  format: '###',
38294
38585
  value: endAt === undefined ? undefined : parseInt(endAt, 10),
38295
38586
  enabled: !(endAt === undefined),
38296
- width: '100%'
38587
+ width: '100%',
38588
+ cssClass: this.parent.cssClass
38297
38589
  });
38298
38590
  endAtInputObj.isStringTemplate = true;
38299
38591
  endAtInputObj.appendTo(endAtInputField1);
@@ -38305,7 +38597,8 @@ class Grouping {
38305
38597
  format: '###',
38306
38598
  min: 1,
38307
38599
  value: selectedInterval,
38308
- width: '100%'
38600
+ width: '100%',
38601
+ cssClass: this.parent.cssClass
38309
38602
  });
38310
38603
  intervalObj.isStringTemplate = true;
38311
38604
  intervalObj.appendTo(intervalInputField1);
@@ -38315,6 +38608,7 @@ class Grouping {
38315
38608
  checked: !(startAt === undefined),
38316
38609
  enableRtl: this.parent.enableRtl,
38317
38610
  locale: this.parent.locale,
38611
+ cssClass: this.parent.cssClass,
38318
38612
  change: (args) => {
38319
38613
  let startAtObj = (type === 'date' ?
38320
38614
  getInstance(select('#' + this.parentElement.id + 'group_start_input'), DateTimePicker) :
@@ -38330,6 +38624,7 @@ class Grouping {
38330
38624
  checked: !(endAt === undefined),
38331
38625
  enableRtl: this.parent.enableRtl,
38332
38626
  locale: this.parent.locale,
38627
+ cssClass: this.parent.cssClass,
38333
38628
  change: (args) => {
38334
38629
  let endAtObj = (type === 'date' ?
38335
38630
  getInstance(select('#' + this.parentElement.id + 'group_end_input'), DateTimePicker) :
@@ -38630,5 +38925,5 @@ class Grouping {
38630
38925
  * Export PivotGrid components
38631
38926
  */
38632
38927
 
38633
- 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 };
38928
+ 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 };
38634
38929
  //# sourceMappingURL=ej2-pivotview.es2015.js.map