2024-09-16 16:40:52 +00:00
|
|
|
import React, { createContext, useReducer, useMemo, ReactNode } from "react";
|
2021-08-18 23:58:56 +00:00
|
|
|
|
|
|
|
|
type Props = {
|
|
|
|
|
children: ReactNode;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
type InitialStateType = {
|
|
|
|
|
resetSelectedRows: boolean;
|
|
|
|
|
setResetSelectedRows: (update: boolean) => void;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
const initialState = {
|
|
|
|
|
resetSelectedRows: false,
|
|
|
|
|
setResetSelectedRows: () => null,
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
const actions = {
|
|
|
|
|
RESET_SELECTED_ROWS: "RESET_SELECTED_ROWS",
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
const reducer = (state: any, action: any) => {
|
|
|
|
|
switch (action.type) {
|
|
|
|
|
case actions.RESET_SELECTED_ROWS:
|
|
|
|
|
return { ...state, resetSelectedRows: action.resetSelectedRows };
|
|
|
|
|
default:
|
|
|
|
|
return state;
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
export const TableContext = createContext<InitialStateType>(initialState);
|
|
|
|
|
|
|
|
|
|
const TableProvider = ({ children }: Props) => {
|
|
|
|
|
const [state, dispatch] = useReducer(reducer, initialState);
|
|
|
|
|
|
2024-09-16 16:40:52 +00:00
|
|
|
const value = useMemo(
|
|
|
|
|
() => ({
|
|
|
|
|
resetSelectedRows: state.resetSelectedRows,
|
|
|
|
|
setResetSelectedRows: (resetSelectedRows: boolean) => {
|
|
|
|
|
dispatch({ type: actions.RESET_SELECTED_ROWS, resetSelectedRows });
|
|
|
|
|
},
|
|
|
|
|
}),
|
|
|
|
|
[state.resetSelectedRows]
|
|
|
|
|
);
|
2021-08-18 23:58:56 +00:00
|
|
|
|
|
|
|
|
return (
|
|
|
|
|
<TableContext.Provider value={value}>{children}</TableContext.Provider>
|
|
|
|
|
);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
export default TableProvider;
|