igniteui-angular 19.2.4 → 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 (36) hide show
  1. package/fesm2022/igniteui-angular.mjs +57 -40
  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/grids/toolbar/grid-toolbar-advanced-filtering.component.d.ts +1 -1
  6. package/lib/grids/toolbar/grid-toolbar-exporter.component.d.ts +1 -1
  7. package/lib/grids/toolbar/grid-toolbar-hiding.component.d.ts +1 -1
  8. package/lib/grids/toolbar/grid-toolbar-pinning.component.d.ts +1 -1
  9. package/lib/services/exporter-common/base-export-service.d.ts +3 -0
  10. package/package.json +2 -2
  11. package/styles/igniteui-angular-dark.css +1 -1
  12. package/styles/igniteui-angular.css +1 -1
  13. package/styles/igniteui-bootstrap-dark.css +1 -1
  14. package/styles/igniteui-bootstrap-light.css +1 -1
  15. package/styles/igniteui-dark-green.css +1 -1
  16. package/styles/igniteui-fluent-dark-excel.css +1 -1
  17. package/styles/igniteui-fluent-dark-word.css +1 -1
  18. package/styles/igniteui-fluent-dark.css +1 -1
  19. package/styles/igniteui-fluent-light-excel.css +1 -1
  20. package/styles/igniteui-fluent-light-word.css +1 -1
  21. package/styles/igniteui-fluent-light.css +1 -1
  22. package/styles/igniteui-indigo-dark.css +1 -1
  23. package/styles/igniteui-indigo-light.css +1 -1
  24. package/styles/maps/igniteui-angular-dark.css.map +1 -1
  25. package/styles/maps/igniteui-angular.css.map +1 -1
  26. package/styles/maps/igniteui-bootstrap-dark.css.map +1 -1
  27. package/styles/maps/igniteui-bootstrap-light.css.map +1 -1
  28. package/styles/maps/igniteui-dark-green.css.map +1 -1
  29. package/styles/maps/igniteui-fluent-dark-excel.css.map +1 -1
  30. package/styles/maps/igniteui-fluent-dark-word.css.map +1 -1
  31. package/styles/maps/igniteui-fluent-dark.css.map +1 -1
  32. package/styles/maps/igniteui-fluent-light-excel.css.map +1 -1
  33. package/styles/maps/igniteui-fluent-light-word.css.map +1 -1
  34. package/styles/maps/igniteui-fluent-light.css.map +1 -1
  35. package/styles/maps/igniteui-indigo-dark.css.map +1 -1
  36. 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
  }
@@ -80614,7 +80631,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImpor
80614
80631
  *
80615
80632
  *
80616
80633
  * @igxModule IgxGridToolbarModule
80617
- * @igxParent IgxGridToolbarComponent
80634
+ * @igxParent IgxGridToolbarComponent, IgxGridToolbarActionsComponent
80618
80635
  *
80619
80636
  * @example
80620
80637
  * ```html
@@ -80949,7 +80966,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImpor
80949
80966
  * in order to export something.
80950
80967
  *
80951
80968
  * @igxModule IgxGridToolbarModule
80952
- * @igxParent IgxGridToolbarComponent
80969
+ * @igxParent IgxGridToolbarComponent, IgxGridToolbarActionsComponent
80953
80970
  *
80954
80971
  */
80955
80972
  class IgxGridToolbarExporterComponent extends BaseToolbarDirective {
@@ -81052,7 +81069,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImpor
81052
81069
  *
81053
81070
  *
81054
81071
  * @igxModule IgxGridToolbarModule
81055
- * @igxParent IgxGridToolbarComponent
81072
+ * @igxParent IgxGridToolbarComponent, IgxGridToolbarActionsComponent
81056
81073
  *
81057
81074
  * @example
81058
81075
  * ```html
@@ -81084,7 +81101,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImpor
81084
81101
  *
81085
81102
  *
81086
81103
  * @igxModule IgxGridToolbarModule
81087
- * @igxParent IgxGridToolbarComponent
81104
+ * @igxParent IgxGridToolbarComponent, IgxGridToolbarActionsComponent
81088
81105
  *
81089
81106
  * @example
81090
81107
  * ```html