UNPKG

@1771technologies/lytenyte-pro

Version:

Blazingly fast headless React data grid with 100s of features.

44 lines (43 loc) 1.5 kB
export const makeEditEnd = (grid) => { return (cancel) => { const active = grid.internal.editActivePos.get(); if (!active) return; const data = grid.internal.editData.get(); if (cancel) { grid.internal.editActivePos.set(null); grid.internal.editData.set(null); grid.api.eventFire("editCancel", { column: active.column, rowIndex: active.rowIndex, data }); return; } const validation = grid.internal.editValidation.get(); if (!validation || Object.keys(validation).length >= 1) { grid.api.eventFire("editError", { column: active.column, rowIndex: active.rowIndex, data, validation, }); return; } try { const ds = grid.state.rowDataSource.get(); ds.rowUpdate(new Map([[active.rowIndex, data]])); grid.api.eventFire("editEnd", { column: active.column, rowIndex: active.rowIndex, data }); } catch (e) { grid.api.eventFire("editError", { column: active.column, rowIndex: active.rowIndex, data, validation, error: e, }); } finally { grid.internal.editActivePos.set(null); grid.internal.editData.set(null); grid.internal.editValidation.set(true); } }; };