@@ -49,6 +49,8 @@ export abstract class ResizeOverlayHandle implements AfterViewInit, OnDestroy {
49
49
protected abstract readonly resizeRef : ResizeRef ;
50
50
protected abstract readonly styleScheduler : _CoalescedStyleScheduler ;
51
51
52
+ private _cumulativeDeltaX = 0 ;
53
+
52
54
ngAfterViewInit ( ) {
53
55
this . _listenForMouseEvents ( ) ;
54
56
}
@@ -101,6 +103,7 @@ export abstract class ResizeOverlayHandle implements AfterViewInit, OnDestroy {
101
103
let originOffset = this . _getOriginOffset ( ) ;
102
104
let size = initialSize ;
103
105
let overshot = 0 ;
106
+ this . _cumulativeDeltaX = 0 ;
104
107
105
108
this . updateResizeActive ( true ) ;
106
109
@@ -125,6 +128,14 @@ export abstract class ResizeOverlayHandle implements AfterViewInit, OnDestroy {
125
128
. subscribe ( ( [ prevX , currX ] ) => {
126
129
let deltaX = currX - prevX ;
127
130
131
+ if ( ! this . resizeRef . liveUpdates ) {
132
+ this . _cumulativeDeltaX += deltaX ;
133
+ const sizeDelta = this . _computeNewSize ( size , this . _cumulativeDeltaX ) - size ;
134
+ this . _updateOverlayOffset ( sizeDelta ) ;
135
+
136
+ return ;
137
+ }
138
+
128
139
// If the mouse moved further than the resize was able to match, limit the
129
140
// movement of the overlay to match the actual size and position of the origin.
130
141
if ( overshot !== 0 ) {
@@ -143,18 +154,7 @@ export abstract class ResizeOverlayHandle implements AfterViewInit, OnDestroy {
143
154
}
144
155
}
145
156
146
- let computedNewSize : number = size + ( this . _isLtr ( ) ? deltaX : - deltaX ) ;
147
- computedNewSize = Math . min (
148
- Math . max ( computedNewSize , this . resizeRef . minWidthPx , 0 ) ,
149
- this . resizeRef . maxWidthPx ,
150
- ) ;
151
-
152
- this . resizeNotifier . triggerResize . next ( {
153
- columnId : this . columnDef . name ,
154
- size : computedNewSize ,
155
- previousSize : size ,
156
- isStickyColumn : this . columnDef . sticky || this . columnDef . stickyEnd ,
157
- } ) ;
157
+ this . _triggerResize ( size , deltaX ) ;
158
158
159
159
this . styleScheduler . scheduleEnd ( ( ) => {
160
160
const originNewSize = this . _getOriginWidth ( ) ;
@@ -178,6 +178,24 @@ export abstract class ResizeOverlayHandle implements AfterViewInit, OnDestroy {
178
178
) ;
179
179
}
180
180
181
+ private _triggerResize ( startSize : number , deltaX : number ) : void {
182
+ this . resizeNotifier . triggerResize . next ( {
183
+ columnId : this . columnDef . name ,
184
+ size : this . _computeNewSize ( startSize , deltaX ) ,
185
+ previousSize : startSize ,
186
+ isStickyColumn : this . columnDef . sticky || this . columnDef . stickyEnd ,
187
+ } ) ;
188
+ }
189
+
190
+ private _computeNewSize ( startSize : number , deltaX : number ) : number {
191
+ let computedNewSize : number = startSize + ( this . _isLtr ( ) ? deltaX : - deltaX ) ;
192
+ computedNewSize = Math . min (
193
+ Math . max ( computedNewSize , this . resizeRef . minWidthPx , 0 ) ,
194
+ this . resizeRef . maxWidthPx ,
195
+ ) ;
196
+ return computedNewSize ;
197
+ }
198
+
181
199
private _getOriginWidth ( ) : number {
182
200
return this . resizeRef . origin . nativeElement ! . offsetWidth ;
183
201
}
@@ -202,6 +220,10 @@ export abstract class ResizeOverlayHandle implements AfterViewInit, OnDestroy {
202
220
this . ngZone . run ( ( ) => {
203
221
const sizeMessage = { columnId : this . columnDef . name , size} ;
204
222
if ( completedSuccessfully ) {
223
+ if ( ! this . resizeRef . liveUpdates ) {
224
+ this . _triggerResize ( size , this . _cumulativeDeltaX ) ;
225
+ }
226
+
205
227
this . resizeNotifier . resizeCompleted . next ( sizeMessage ) ;
206
228
} else {
207
229
this . resizeNotifier . resizeCanceled . next ( sizeMessage ) ;
0 commit comments