igniteui-angular 19.2.5 → 19.2.6

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 (32) hide show
  1. package/fesm2022/igniteui-angular.mjs +53 -36
  2. package/fesm2022/igniteui-angular.mjs.map +1 -1
  3. package/lib/core/styles/components/stepper/_stepper-theme.scss +8 -1
  4. package/lib/core/styles/components/tabs/_tabs-theme.scss +18 -15
  5. package/lib/services/exporter-common/base-export-service.d.ts +3 -0
  6. package/package.json +2 -2
  7. package/styles/igniteui-angular-dark.css +1 -1
  8. package/styles/igniteui-angular.css +1 -1
  9. package/styles/igniteui-bootstrap-dark.css +1 -1
  10. package/styles/igniteui-bootstrap-light.css +1 -1
  11. package/styles/igniteui-dark-green.css +1 -1
  12. package/styles/igniteui-fluent-dark-excel.css +1 -1
  13. package/styles/igniteui-fluent-dark-word.css +1 -1
  14. package/styles/igniteui-fluent-dark.css +1 -1
  15. package/styles/igniteui-fluent-light-excel.css +1 -1
  16. package/styles/igniteui-fluent-light-word.css +1 -1
  17. package/styles/igniteui-fluent-light.css +1 -1
  18. package/styles/igniteui-indigo-dark.css +1 -1
  19. package/styles/igniteui-indigo-light.css +1 -1
  20. package/styles/maps/igniteui-angular-dark.css.map +1 -1
  21. package/styles/maps/igniteui-angular.css.map +1 -1
  22. package/styles/maps/igniteui-bootstrap-dark.css.map +1 -1
  23. package/styles/maps/igniteui-bootstrap-light.css.map +1 -1
  24. package/styles/maps/igniteui-dark-green.css.map +1 -1
  25. package/styles/maps/igniteui-fluent-dark-excel.css.map +1 -1
  26. package/styles/maps/igniteui-fluent-dark-word.css.map +1 -1
  27. package/styles/maps/igniteui-fluent-dark.css.map +1 -1
  28. package/styles/maps/igniteui-fluent-light-excel.css.map +1 -1
  29. package/styles/maps/igniteui-fluent-light-word.css.map +1 -1
  30. package/styles/maps/igniteui-fluent-light.css.map +1 -1
  31. package/styles/maps/igniteui-indigo-dark.css.map +1 -1
  32. package/styles/maps/igniteui-indigo-light.css.map +1 -1
@@ -4783,31 +4783,49 @@ class IgxBaseExporter {
4783
4783
  if (keys.length === 0) {
4784
4784
  return;
4785
4785
  }
4786
- let startIndex = 0;
4787
- const key = keys[0];
4788
4786
  const records = this.flatRecords.map(r => r.data);
4789
- const groupedRecords = {};
4790
- records.forEach(obj => {
4791
- const keyValue = obj[key.name];
4792
- if (!groupedRecords[keyValue]) {
4793
- groupedRecords[keyValue] = [];
4794
- }
4795
- groupedRecords[keyValue].push(obj);
4796
- });
4797
- if (columnGroupParent) {
4798
- const mapKeys = [...this.pivotGridKeyValueMap.keys()];
4799
- const mapValues = [...this.pivotGridKeyValueMap.values()];
4800
- for (const k of Object.keys(groupedRecords)) {
4801
- groupedRecords[k] = groupedRecords[k].filter(row => mapKeys.every(mk => Object.keys(row).includes(mk))
4802
- && mapValues.every(mv => Object.values(row).includes(mv)));
4803
- if (groupedRecords[k].length === 0) {
4804
- delete groupedRecords[k];
4805
- }
4806
- }
4787
+ const groupedRecords = this.groupByKeys(records, keys);
4788
+ this.createRowDimension(groupedRecords, keys, columnGroupParent);
4789
+ }
4790
+ groupByKeys(items, keys) {
4791
+ const group = (data, groupKeys) => {
4792
+ if (groupKeys.length === 0)
4793
+ return data;
4794
+ const newKeys = [...groupKeys];
4795
+ const key = newKeys.shift().name;
4796
+ const map = new Map();
4797
+ for (const item of data) {
4798
+ const keyValue = item[key];
4799
+ if (!map.has(keyValue)) {
4800
+ map.set(keyValue, []);
4801
+ }
4802
+ map.get(keyValue).push(item);
4803
+ }
4804
+ for (const [keyValue, value] of map) {
4805
+ map.set(keyValue, group(value, newKeys));
4806
+ }
4807
+ return map;
4808
+ };
4809
+ return group(items, keys);
4810
+ }
4811
+ calculateRowSpan(value) {
4812
+ if (value instanceof Map) {
4813
+ return Array.from(value.values()).reduce((total, current) => total + this.calculateRowSpan(current), 0);
4814
+ }
4815
+ else if (Array.isArray(value)) {
4816
+ return value.length;
4807
4817
  }
4808
- for (const k of Object.keys(groupedRecords)) {
4818
+ return 0;
4819
+ }
4820
+ createRowDimension(node, keys, columnGroupParent) {
4821
+ if (!(node instanceof Map))
4822
+ return;
4823
+ const key = keys[0];
4824
+ const newKeys = keys.filter(k => k.level > key.level);
4825
+ let startIndex = 0;
4826
+ for (const k of node.keys()) {
4809
4827
  let groupKey = k;
4810
- const rowSpan = groupedRecords[k].length;
4828
+ const rowSpan = this.calculateRowSpan(node.get(k));
4811
4829
  const rowDimensionColumn = {
4812
4830
  columnSpan: 1,
4813
4831
  rowSpan,
@@ -4818,30 +4836,26 @@ class IgxBaseExporter {
4818
4836
  pinnedIndex: 0,
4819
4837
  level: key.level,
4820
4838
  dataType: 'string',
4821
- headerType: groupedRecords[groupKey].length > 1 ? ExportHeaderType.MultiRowHeader : ExportHeaderType.RowHeader,
4839
+ headerType: rowSpan > 1 ? ExportHeaderType.MultiRowHeader : ExportHeaderType.RowHeader,
4822
4840
  };
4823
- if (groupKey === 'undefined') {
4824
- this.pivotGridColumns[this.pivotGridColumns.length - 1].columnSpan += 1;
4841
+ if (!groupKey) {
4842
+ // if (this.pivotGridColumns?.length)
4843
+ // this.pivotGridColumns[this.pivotGridColumns.length - 1].columnSpan += 1;
4825
4844
  rowDimensionColumn.headerType = ExportHeaderType.PivotMergedHeader;
4826
4845
  groupKey = columnGroupParent;
4827
4846
  }
4828
- if (columnGroupParent) {
4847
+ if (key.level > 0) {
4829
4848
  rowDimensionColumn.columnGroupParent = columnGroupParent;
4830
4849
  }
4831
4850
  else {
4832
4851
  rowDimensionColumn.columnGroup = groupKey;
4833
4852
  }
4834
4853
  this.pivotGridColumns.push(rowDimensionColumn);
4835
- if (keys.length > 1) {
4836
- if (groupKey !== columnGroupParent) {
4837
- this.pivotGridKeyValueMap.set(key.name, groupKey);
4838
- }
4839
- const newKeys = keys.filter(kdd => kdd !== key);
4840
- this.preparePivotGridColumns(newKeys, groupKey);
4841
- this.pivotGridKeyValueMap.delete(key.name);
4842
- }
4843
4854
  startIndex += rowSpan;
4844
4855
  }
4856
+ for (const k of node.keys()) {
4857
+ this.createRowDimension(node.get(k), newKeys, columnGroupParent);
4858
+ }
4845
4859
  }
4846
4860
  addLevelColumns() {
4847
4861
  if (this.options.exportSummaries && this.summaries.size > 0) {
@@ -5947,7 +5961,7 @@ class WorksheetFile {
5947
5961
  : owner.maxLevel;
5948
5962
  for (const currentCol of headersForLevel) {
5949
5963
  const spanLength = isVertical ? currentCol.rowSpan : currentCol.columnSpan;
5950
- if (currentCol.level === i && currentCol.headerType !== ExportHeaderType.PivotMergedHeader) {
5964
+ if (currentCol.level === i) {
5951
5965
  let columnCoordinate;
5952
5966
  const column = isVertical
5953
5967
  ? this.rowIndex
@@ -5958,7 +5972,9 @@ class WorksheetFile {
5958
5972
  if (currentCol.headerType === ExportHeaderType.PivotRowHeader) {
5959
5973
  rowCoordinate = startValue + 1;
5960
5974
  }
5961
- const columnValue = dictionary.saveValue(currentCol.header, true, false);
5975
+ const columnValue = currentCol.headerType === ExportHeaderType.PivotMergedHeader ?
5976
+ dictionary.saveValue(currentCol.field, true, true) :
5977
+ dictionary.saveValue(currentCol.header, true, false);
5962
5978
  columnCoordinate = (currentCol.field === GRID_LEVEL_COL
5963
5979
  ? ExcelStrings.getExcelColumn(worksheetData.columnCount + 1)
5964
5980
  : ExcelStrings.getExcelColumn(column)) + rowCoordinate;
@@ -21224,6 +21240,7 @@ class IgxTooltipTargetDirective extends IgxToggleActionDirective {
21224
21240
  * @hidden
21225
21241
  */
21226
21242
  ngOnDestroy() {
21243
+ this.hideTooltip();
21227
21244
  this.destroy$.next();
21228
21245
  this.destroy$.complete();
21229
21246
  }