@@ -133,7 +133,11 @@ export function init(gridElement, autoFocus) {
133133 document . body . removeEventListener ( 'click' , bodyClickHandler ) ;
134134 document . body . removeEventListener ( 'mousedown' , bodyClickHandler ) ;
135135 gridElement . removeEventListener ( 'keydown' , keyDownHandler ) ;
136- delete grids [ gridElement ] ;
136+
137+ const index = grids . findIndex ( grid => grid . id === gridElement . id ) ;
138+ if ( index > - 1 ) {
139+ grids . splice ( index , 1 ) ;
140+ }
137141 }
138142 } ;
139143}
@@ -168,7 +172,6 @@ export function enableColumnResizing(gridElement, resizeColumnOnAllRows = true)
168172 return ;
169173 }
170174
171- const isRTL = getComputedStyle ( gridElement ) . direction === 'rtl' ;
172175 const isGrid = gridElement . classList . contains ( 'grid' )
173176
174177 let tableHeight = gridElement . offsetHeight ;
@@ -205,9 +208,9 @@ export function enableColumnResizing(gridElement, resizeColumnOnAllRows = true)
205208 const resizeTop = header . querySelector ( '.resize-handle' ) . offsetTop ;
206209
207210 // add a new resize div
208- const div = createDiv ( resizeHandleHeight , resizeTop , isRTL ) ;
211+ const div = createDiv ( resizeHandleHeight , resizeTop ) ;
209212 header . appendChild ( div ) ;
210- setListeners ( div , isRTL ) ;
213+ setListeners ( div ) ;
211214 } ) ;
212215
213216 let initialWidths ;
@@ -230,32 +233,15 @@ export function enableColumnResizing(gridElement, resizeColumnOnAllRows = true)
230233 } ) ;
231234 }
232235
233- function setListeners ( div , isRTL ) {
236+ function setListeners ( div ) {
234237 let pageX , curCol , curColWidth ;
235238
236- div . addEventListener ( 'pointerdown' , function ( e ) {
237- curCol = e . target . parentElement ;
238- pageX = e . pageX ;
239-
240- const padding = paddingDiff ( curCol ) ;
241-
242- curColWidth = curCol . offsetWidth - padding ;
243- } ) ;
244-
245- div . addEventListener ( 'pointerover' , function ( e ) {
246- e . target . style . borderInlineEnd = 'var(--fluent-data-grid-resize-handle-width) solid var(--fluent-data-grid-resize-handle-color)' ;
247- e . target . previousElementSibling . style . visibility = 'hidden' ;
248- } ) ;
249-
250- div . addEventListener ( 'pointerup' , removeBorder ) ;
251- div . addEventListener ( 'pointercancel' , removeBorder ) ;
252- div . addEventListener ( 'pointerleave' , removeBorder ) ;
253-
254- document . addEventListener ( 'pointermove' , ( e ) =>
239+ const moveHandler = ( e ) =>
255240 requestAnimationFrame ( ( ) => {
256241 gridElement . style . tableLayout = 'fixed' ;
257242
258243 if ( curCol ) {
244+ const isRTL = getComputedStyle ( gridElement ) . direction === 'rtl' ;
259245 const diffX = isRTL ? pageX - e . pageX : e . pageX - pageX ;
260246 const column = columns . find ( ( { header } ) => header === curCol ) ;
261247
@@ -276,17 +262,40 @@ export function enableColumnResizing(gridElement, resizeColumnOnAllRows = true)
276262 curCol . style . width = column . size ;
277263 }
278264 }
279- } )
280- ) ;
265+ } ) ;
266+
267+ const upHandler = function ( ) {
268+ document . removeEventListener ( 'pointermove' , moveHandler ) ;
269+ document . removeEventListener ( 'pointerup' , upHandler ) ;
281270
282- document . addEventListener ( 'pointerup' , function ( ) {
283271 curCol = undefined ;
284272 curColWidth = undefined ;
285273 pageX = undefined ;
274+ } ;
275+
276+ div . addEventListener ( 'pointerdown' , function ( e ) {
277+ curCol = e . target . parentElement ;
278+ pageX = e . pageX ;
279+
280+ const padding = paddingDiff ( curCol ) ;
281+
282+ curColWidth = curCol . offsetWidth - padding ;
283+
284+ document . addEventListener ( 'pointermove' , moveHandler ) ;
285+ document . addEventListener ( 'pointerup' , upHandler ) ;
286286 } ) ;
287+
288+ div . addEventListener ( 'pointerover' , function ( e ) {
289+ e . target . style . borderInlineEnd = 'var(--fluent-data-grid-resize-handle-width) solid var(--fluent-data-grid-resize-handle-color)' ;
290+ e . target . previousElementSibling . style . visibility = 'hidden' ;
291+ } ) ;
292+
293+ div . addEventListener ( 'pointerup' , removeBorder ) ;
294+ div . addEventListener ( 'pointercancel' , removeBorder ) ;
295+ div . addEventListener ( 'pointerleave' , removeBorder ) ;
287296 }
288297
289- function createDiv ( height , top , isRTL ) {
298+ function createDiv ( height , top ) {
290299 const div = document . createElement ( 'div' ) ;
291300 div . className = "actual-resize-handle" ;
292301 div . style . top = top + 'px' ;
@@ -296,14 +305,8 @@ export function enableColumnResizing(gridElement, resizeColumnOnAllRows = true)
296305 div . style . height = ( height - 4 ) + 'px' ;
297306 div . style . width = '6px' ;
298307 div . style . opacity = 'var(--fluent-data-grid-header-opacity)'
308+ div . style . insetInlineEnd = '0' ;
299309
300- if ( isRTL ) {
301- div . style . left = '0' ;
302- div . style . right = 'unset' ;
303- } else {
304- div . style . left = 'unset' ;
305- div . style . right = '0' ;
306- }
307310 return div ;
308311 }
309312
@@ -446,7 +449,10 @@ export function autoFitGridColumns(gridElement, columnCount) {
446449 gridElement . style . gridTemplateColumns = gridTemplateColumns ;
447450 gridElement . classList . remove ( "auto-fit" ) ;
448451
449- grids [ gridElement . id ] = gridTemplateColumns ;
452+ const grid = grids . find ( grid => grid . id === gridElement . id ) ;
453+ if ( grid ) {
454+ grid . initialWidths = gridTemplateColumns ;
455+ }
450456}
451457
452458function calculateVisibleRows ( gridElement , rowHeight ) {
0 commit comments