igniteui-angular 22.0.0-beta.2 → 22.0.0-beta.3

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 (39) hide show
  1. package/fesm2022/igniteui-angular-grids-core.mjs +60 -5
  2. package/fesm2022/igniteui-angular-grids-core.mjs.map +1 -1
  3. package/fesm2022/igniteui-angular-grids-grid.mjs +2 -0
  4. package/fesm2022/igniteui-angular-grids-grid.mjs.map +1 -1
  5. package/lib/core/styles/components/column-actions/_column-actions-derived-themes.scss +3 -3
  6. package/lib/core/styles/components/grid/_excel-filtering-derived-themes.scss +4 -4
  7. package/lib/core/styles/components/grid/_grid-derived-themes.scss +8 -8
  8. package/lib/core/styles/components/grid/_grid-theme.scss +3 -3
  9. package/lib/core/styles/components/grid-toolbar/_grid-toolbar-derived-themes.scss +3 -3
  10. package/lib/core/styles/components/paginator/_paginator-derived-themes.scss +3 -3
  11. package/lib/core/styles/components/query-builder/_query-builder-derived-themes.scss +3 -3
  12. package/package.json +2 -2
  13. package/styles/igniteui-angular-dark.css +1 -1
  14. package/styles/igniteui-angular.css +1 -1
  15. package/styles/igniteui-bootstrap-dark.css +1 -1
  16. package/styles/igniteui-bootstrap-light.css +1 -1
  17. package/styles/igniteui-dark-green.css +1 -1
  18. package/styles/igniteui-fluent-dark-excel.css +1 -1
  19. package/styles/igniteui-fluent-dark-word.css +1 -1
  20. package/styles/igniteui-fluent-dark.css +1 -1
  21. package/styles/igniteui-fluent-light-excel.css +1 -1
  22. package/styles/igniteui-fluent-light-word.css +1 -1
  23. package/styles/igniteui-fluent-light.css +1 -1
  24. package/styles/igniteui-indigo-dark.css +1 -1
  25. package/styles/igniteui-indigo-light.css +1 -1
  26. package/styles/maps/igniteui-angular-dark.css.map +1 -1
  27. package/styles/maps/igniteui-angular.css.map +1 -1
  28. package/styles/maps/igniteui-bootstrap-dark.css.map +1 -1
  29. package/styles/maps/igniteui-bootstrap-light.css.map +1 -1
  30. package/styles/maps/igniteui-dark-green.css.map +1 -1
  31. package/styles/maps/igniteui-fluent-dark-excel.css.map +1 -1
  32. package/styles/maps/igniteui-fluent-dark-word.css.map +1 -1
  33. package/styles/maps/igniteui-fluent-dark.css.map +1 -1
  34. package/styles/maps/igniteui-fluent-light-excel.css.map +1 -1
  35. package/styles/maps/igniteui-fluent-light-word.css.map +1 -1
  36. package/styles/maps/igniteui-fluent-light.css.map +1 -1
  37. package/styles/maps/igniteui-indigo-dark.css.map +1 -1
  38. package/styles/maps/igniteui-indigo-light.css.map +1 -1
  39. package/types/igniteui-angular-grids-core.d.ts +3 -0
@@ -14637,7 +14637,10 @@ class IgxGridTransactionPipe {
14637
14637
  const result = DataUtil.mergeTransactions(cloneArray(collection), this.grid.transactions.getAggregatedChanges(true), this.grid.primaryKey, this.grid.dataCloneStrategy);
14638
14638
  return result;
14639
14639
  }
14640
- return collection;
14640
+ // Return a shallow copy so downstream pipes and igxGridForOf always
14641
+ // receive a new array reference when pipeTrigger changes, regardless
14642
+ // of whether the source array was mutated in place.
14643
+ return cloneArray(collection);
14641
14644
  }
14642
14645
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.0", ngImport: i0, type: IgxGridTransactionPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
14643
14646
  static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "22.0.0", ngImport: i0, type: IgxGridTransactionPipe, isStandalone: true, name: "gridTransaction" }); }
@@ -23036,6 +23039,58 @@ class RowEditPositionStrategy extends ConnectedPositioningStrategy {
23036
23039
  this.settings.verticalStartPoint = this.settings.verticalDirection = this.isTop ? VerticalAlignment.Top : VerticalAlignment.Bottom;
23037
23040
  this.settings.openAnimation = this.isTop ? scaleInVerBottom : scaleInVerTop;
23038
23041
  super.position(contentElement, { width: targetElement.clientWidth, height: targetElement.clientHeight }, document, initialCall, targetElement);
23042
+ if (this.settings.clipToVisibleArea) {
23043
+ // After positioning in the top layer, keep the overlay clipped to the visible grid body.
23044
+ this.updateContentClip(contentElement);
23045
+ }
23046
+ }
23047
+ updateContentClip(contentElement) {
23048
+ const container = this.settings.container;
23049
+ if (!container) {
23050
+ return;
23051
+ }
23052
+ const clippingRect = this.getClippingRect(container);
23053
+ const contentRect = contentElement.getBoundingClientRect();
23054
+ // Convert the clipped overflow on each side to CSS inset values.
23055
+ const top = Math.round(Math.max(clippingRect.top - contentRect.top, 0));
23056
+ const right = Math.round(Math.max(contentRect.right - clippingRect.right, 0));
23057
+ const bottom = Math.round(Math.max(contentRect.bottom - clippingRect.bottom, 0));
23058
+ const left = Math.round(Math.max(clippingRect.left - contentRect.left, 0));
23059
+ // When the overlay is fully outside the clipping rect, hide it and block its action buttons.
23060
+ const fullyClipped = top >= contentRect.height || bottom >= contentRect.height ||
23061
+ left >= contentRect.width || right >= contentRect.width;
23062
+ // Row-edit overlays are rendered in the top layer, so clip the content explicitly to the grid's visible area.
23063
+ contentElement.style.clipPath = fullyClipped ? 'inset(100%)' :
23064
+ (top || right || bottom || left ? `inset(${top}px ${right}px ${bottom}px ${left}px)` : '');
23065
+ contentElement.style.pointerEvents = fullyClipped ? 'none' : '';
23066
+ contentElement.style.visibility = fullyClipped ? 'hidden' : '';
23067
+ }
23068
+ getClippingRect(element) {
23069
+ const document = element.ownerDocument;
23070
+ const gridBody = element.closest('[igxgridbody]') || element;
23071
+ const rect = gridBody.getBoundingClientRect();
23072
+ // Start with the current grid body, then narrow it by parent grid bodies.
23073
+ const clippingRect = { top: rect.top, right: rect.right, bottom: rect.bottom, left: rect.left };
23074
+ let parent = gridBody.parentElement?.closest('[igxgridbody]');
23075
+ // Intersect with parent grid bodies so nested grids respect their parent scroll bounds.
23076
+ while (parent) {
23077
+ const parentRect = parent.getBoundingClientRect();
23078
+ clippingRect.top = Math.max(clippingRect.top, parentRect.top);
23079
+ clippingRect.right = Math.min(clippingRect.right, parentRect.right);
23080
+ clippingRect.bottom = Math.min(clippingRect.bottom, parentRect.bottom);
23081
+ clippingRect.left = Math.max(clippingRect.left, parentRect.left);
23082
+ if (clippingRect.top >= clippingRect.bottom || clippingRect.left >= clippingRect.right) {
23083
+ break;
23084
+ }
23085
+ parent = parent.parentElement?.closest('[igxgridbody]');
23086
+ }
23087
+ // Keep the clipping area inside the viewport because popover content is viewport-positioned.
23088
+ return {
23089
+ top: Math.max(clippingRect.top, 0),
23090
+ right: Math.min(clippingRect.right, document.documentElement.clientWidth),
23091
+ bottom: Math.min(clippingRect.bottom, document.documentElement.clientHeight),
23092
+ left: Math.max(clippingRect.left, 0)
23093
+ };
23039
23094
  }
23040
23095
  /**
23041
23096
  * Cleans up the IntersectionObserver and stored references
@@ -24737,8 +24792,8 @@ class GridBaseAPIService {
24737
24792
  grid.transactions.add(transaction);
24738
24793
  }
24739
24794
  else {
24740
- grid.data.push(rowData);
24741
- grid.data = cloneArray(grid.data);
24795
+ (grid.data ?? (grid.data = [])).push(rowData);
24796
+ grid.summaryService.clearSummaryCache();
24742
24797
  }
24743
24798
  grid.validation.markAsTouched(rowId);
24744
24799
  grid.validation.update(rowId, rowData);
@@ -24753,8 +24808,8 @@ class GridBaseAPIService {
24753
24808
  grid.transactions.add(transaction, grid.data[index]);
24754
24809
  }
24755
24810
  else {
24756
- grid.data.splice(index, 1);
24757
- grid.data = cloneArray(grid.data);
24811
+ (grid.data ?? (grid.data = [])).splice(index, 1);
24812
+ grid.summaryService.clearSummaryCache();
24758
24813
  }
24759
24814
  }
24760
24815
  else {