@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
JavaScript
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,
}));
};