@airplane/views
Version:
A React library for building Airplane views. Views components are optimized in style and functionality to produce internal apps that are easy to build and maintain.
38 lines (37 loc) • 1.2 kB
JavaScript
import { useReducer, useCallback, useMemo } from "react";
import { ComponentType, useSyncComponentState } from "../../context/context.js";
import { reducer } from "./reducer.js";
const useTableState = (id, options) => {
const [internalState, dispatch] = useReducer(reducer, {
selectedRows: [],
rowActionResult: null
});
const changeRowSelection = useCallback((rows) => {
dispatch({
type: "changeRowSelection",
rows
});
}, []);
const setRowActionResult = useCallback((result) => {
dispatch({
type: "setRowActionResult",
result
});
}, []);
const state = useMemo(() => ({
id,
selectedRows: internalState.selectedRows,
selectedRow: internalState.selectedRow,
rowActionResult: internalState.rowActionResult,
setRowActionResult,
changeRowSelection,
clearSelection: options.clearSelection,
componentType: ComponentType.Table
}), [id, internalState.selectedRows, internalState.selectedRow, internalState.rowActionResult, changeRowSelection, setRowActionResult, options.clearSelection]);
useSyncComponentState(id, state);
return state;
};
export {
useTableState
};
//# sourceMappingURL=useTableState.js.map