igniteui-angular 22.0.0-beta.1 → 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.
- package/fesm2022/igniteui-angular-grids-core.mjs +60 -5
- package/fesm2022/igniteui-angular-grids-core.mjs.map +1 -1
- package/fesm2022/igniteui-angular-grids-grid.mjs +2 -0
- package/fesm2022/igniteui-angular-grids-grid.mjs.map +1 -1
- package/lib/core/styles/components/column-actions/_column-actions-derived-themes.scss +3 -3
- package/lib/core/styles/components/grid/_excel-filtering-derived-themes.scss +4 -4
- package/lib/core/styles/components/grid/_grid-derived-themes.scss +8 -8
- package/lib/core/styles/components/grid/_grid-theme.scss +3 -3
- package/lib/core/styles/components/grid-toolbar/_grid-toolbar-derived-themes.scss +3 -3
- package/lib/core/styles/components/paginator/_paginator-derived-themes.scss +3 -3
- package/lib/core/styles/components/query-builder/_query-builder-derived-themes.scss +3 -3
- package/package.json +6 -6
- package/styles/igniteui-angular-dark.css +1 -1
- package/styles/igniteui-angular.css +1 -1
- package/styles/igniteui-bootstrap-dark.css +1 -1
- package/styles/igniteui-bootstrap-light.css +1 -1
- package/styles/igniteui-dark-green.css +1 -1
- package/styles/igniteui-fluent-dark-excel.css +1 -1
- package/styles/igniteui-fluent-dark-word.css +1 -1
- package/styles/igniteui-fluent-dark.css +1 -1
- package/styles/igniteui-fluent-light-excel.css +1 -1
- package/styles/igniteui-fluent-light-word.css +1 -1
- package/styles/igniteui-fluent-light.css +1 -1
- package/styles/igniteui-indigo-dark.css +1 -1
- package/styles/igniteui-indigo-light.css +1 -1
- package/styles/maps/igniteui-angular-dark.css.map +1 -1
- package/styles/maps/igniteui-angular.css.map +1 -1
- package/styles/maps/igniteui-bootstrap-dark.css.map +1 -1
- package/styles/maps/igniteui-bootstrap-light.css.map +1 -1
- package/styles/maps/igniteui-dark-green.css.map +1 -1
- package/styles/maps/igniteui-fluent-dark-excel.css.map +1 -1
- package/styles/maps/igniteui-fluent-dark-word.css.map +1 -1
- package/styles/maps/igniteui-fluent-dark.css.map +1 -1
- package/styles/maps/igniteui-fluent-light-excel.css.map +1 -1
- package/styles/maps/igniteui-fluent-light-word.css.map +1 -1
- package/styles/maps/igniteui-fluent-light.css.map +1 -1
- package/styles/maps/igniteui-indigo-dark.css.map +1 -1
- package/styles/maps/igniteui-indigo-light.css.map +1 -1
- 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
|
-
|
|
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.
|
|
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.
|
|
24811
|
+
(grid.data ?? (grid.data = [])).splice(index, 1);
|
|
24812
|
+
grid.summaryService.clearSummaryCache();
|
|
24758
24813
|
}
|
|
24759
24814
|
}
|
|
24760
24815
|
else {
|