Using v7?
Hi @tannerlinsley, wanted to check is there any plan to implement a react table hook for pinning(freezing) of columns to left/right of table.
I have a following rough structure of usePinColumns hook, any advise on architecture or implementation(which you have thought of) for the implementation of this functionality will be helpful to complete this.
usePinColumns.js
import PropTypes from 'prop-types';
import { mergeProps, applyPropHooks, ensurePluginOrder } from '../utils';
import { addActions, actions } from '../actions';
import { defaultState } from '../hooks/useTableState';
defaultState.pinnedColumns = {
left: [],
center: [],
right: []
};
addActions('setColumnPin');
const propTypes = {};
export const usePinColumns = (hooks) => {
hooks.useMain.push(useMain);
};
usePinColumns.pluginName = 'usePinColumns';
function useMain(instance) {
PropTypes.checkPropTypes(propTypes, instance, 'property', 'usePinColumns');
const {
hooks,
plugins,
flatColumns,
state: [{ pinnedColumns }, setState]
} = instance;
ensurePluginOrder(plugins, [], 'usePinColumns', []);
const setColumnPin = (columnID, pinType) => {
// debugger;
const column = flatColumns.find((d) => d.id === columnID);
console.log(column.pinned);
column.pinned = pinType;
console.log(column.pinned);
// -1 = LEFT
// 0 = CENTER
// 1 = RIGHT
let newPinnedColumns = {};
newPinnedColumns.left = [];
newPinnedColumns.right = [];
newPinnedColumns.center = [];
flatColumns.forEach((column) => {
if (column.pinned === -1) {
newPinnedColumns.left.push(column);
} else if (column.pinned === 1) {
newPinnedColumns.right.push(column);
} else {
newPinnedColumns.center.push(column);
}
});
return setState((old) => {
return {
...old,
flatColumns: flatColumns,
pinnedColumns: newPinnedColumns
};
}, actions.setColumnPin);
};
flatColumns.forEach((column) => {
column.canPin = true;
// column.pinned = 0;
column.setColumnPin = (pinType) => setColumnPin(column.id, pinType);
});
return {
...instance,
setColumnPin
};
}
Using v7?
Hi @tannerlinsley, wanted to check is there any plan to implement a react table hook for pinning(freezing) of columns to left/right of table.
I have a following rough structure of
usePinColumnshook, any advise on architecture or implementation(which you have thought of) for the implementation of this functionality will be helpful to complete this.usePinColumns.js