-
Notifications
You must be signed in to change notification settings - Fork 6
Updated Excel edit style sample to functional component (React v19) #777
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: v19-updates
Are you sure you want to change the base?
Conversation
…o navigate correct
import ReactDOM from 'react-dom/client'; | ||
import './index.css'; | ||
|
||
import { IgrGridModule } from 'igniteui-react-grids'; | ||
import { IgrActiveNodeChangeEventArgs, IgrGridModule } from 'igniteui-react-grids'; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
IgrActiveNodeChangeEventArgs isn't used - either remove the import or better yet - use the type for the event handler
@@ -1,146 +1,138 @@ | |||
import React from 'react'; | |||
import React, { useRef, useEffect } from 'react'; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The React
import is unused and should be removed
// Register modules once | ||
IgrGridModule.register(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
gridRef.current.markForCheck(); | ||
} else | ||
|
||
if (activeElem && activeElem.editMode && shouldAppendValue.current) { | ||
event.preventDefault(); | ||
activeElem.editValue = activeElem.editValue + event.key; | ||
shouldAppendValue.current = false; | ||
} | ||
} | ||
|
||
if ((key >= 48 && key <= 57) || (key >= 65 && key <= 90) || (key >= 97 && key <= 122)) { | ||
var columnName = grid.getColumnByVisibleIndex(activeElem.column).field; | ||
var cell = grid.getCellByColumn(activeElem.row, columnName); | ||
if (code === 'Backspace') { | ||
if(activeElem == null) { | ||
return; | ||
} | ||
const rowIndex = activeElem.row.index; | ||
const columnKey = activeElem.column.field; | ||
|
||
gridRef.current.data[rowIndex][columnKey] = ''; | ||
gridRef.current.markForCheck(); | ||
|
||
if (cell && !grid.crudService.cellInEditMode) { | ||
grid.crudService.enterEditMode(cell); | ||
cell.editValue = key; | ||
} | ||
} | ||
|
||
if (key == 13) { | ||
var thisRow = activeElem.row; | ||
var column = activeElem.column; | ||
var rowInfo = grid.dataView; | ||
if (code === 'Enter' || code === 'NumpadEnter') { | ||
|
||
if(activeElem == null) { | ||
return; | ||
} | ||
|
||
const thisRow = activeElem.row.index; | ||
const dataView = gridRef.current.dataView; | ||
const nextRowIndex = getNextEditableRowIndex(thisRow, dataView, event.shiftKey); | ||
|
||
gridRef.current.navigateTo(nextRowIndex, activeElem.column.visibleIndex, (obj: any) => { | ||
|
||
requestAnimationFrame(() => { | ||
gridRef.current.endEdit(true, obj); | ||
gridRef.current.clearCellSelection(); | ||
obj.target.activate(); | ||
|
||
}); | ||
}); | ||
|
||
var nextRow = this.getNextEditableRowIndex(thisRow, rowInfo, (args.detail.event as any).shiftKey); | ||
} | ||
}; | ||
|
||
grid.navigateTo(nextRow, column, (obj: any) => { | ||
obj.target.activate(); | ||
grid.clearCellSelection(); | ||
}); | ||
} | ||
} | ||
gridElement.addEventListener("keydown", handleKeyDown); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Multiple points:
- Why is this stuck in
useEffect
? The old sample usedgridKeydown
which should now beonGridKeydown
and should be used instead - What's with the
gridRef.current.markForCheck();
,requestAnimationFrame
andendEdit
calls? Those aren't needed in the original source (ng) and shouldn't be here as well. If they are, we might want to investigate why. Especially the rAF since it's in the already delayednavigateTo
callback
…o navigate correct