UNPKG

@adaptabletools/adaptable

Version:

Powerful AG Grid extension which provides advanced, cutting-edge functionality to meet all DataGrid requirements

75 lines (74 loc) 2.9 kB
const STUB_ACTION_COLUMN = { columnId: 'undoActionColumn', actionColumnButton: [], }; export const buildDataChangeHistoryContext = (rowData, parentAdapTableApi, onUndoChange, onClearRow) => { const undoDataChange = () => onUndoChange(rowData.changeKey); const clearRow = () => onClearRow(rowData.changeKey); return { actionColumn: STUB_ACTION_COLUMN, primaryKeyValue: rowData.changeInfo.primaryKeyValue, rowNode: undefined, data: rowData, ...parentAdapTableApi.internalApi.buildBaseContext(), isGroupNode: false, undoDataChange, clearRow, dataChangedInfo: rowData.changeInfo, parentAdapTableApi, }; }; export const buildChangeHistoryButtons = (options, parentAdapTableApi, onUndoChange, onClearRow) => { let changeHistoryButtons = options?.changeHistoryButton; if (!changeHistoryButtons || (Array.isArray(changeHistoryButtons) && changeHistoryButtons.length === 0)) { return null; } if (!Array.isArray(changeHistoryButtons)) { changeHistoryButtons = [changeHistoryButtons]; } return changeHistoryButtons.map((actionColumnOption) => ({ label: (button, context) => { if (typeof actionColumnOption.label !== 'function') { return actionColumnOption.label; } return actionColumnOption.label(button, context); }, buttonStyle: (button, context) => { if (typeof actionColumnOption.buttonStyle !== 'function') { return actionColumnOption.buttonStyle; } return actionColumnOption.buttonStyle(button, context); }, tooltip: (button, context) => { if (typeof actionColumnOption.tooltip !== 'function') { return actionColumnOption.tooltip; } return actionColumnOption.tooltip(button, context); }, disabled: (button, context) => { if (typeof actionColumnOption.disabled !== 'function') { return actionColumnOption.disabled; } return actionColumnOption.disabled(button, context); }, onClick: (button, context) => { if (actionColumnOption.action === 'undo') { context.undoDataChange(); } if (actionColumnOption.action === 'clear') { context.clearRow(); } if (typeof actionColumnOption.onClick === 'function') { actionColumnOption.onClick(button, context); } }, hidden: (button, context) => { if (typeof actionColumnOption.hidden !== 'function') { return actionColumnOption.hidden; } return actionColumnOption.hidden(button, context); }, icon: actionColumnOption.icon, })); };