@mrii/react-table-builder
Version:
library to easily build tables using MUI grid
35 lines (32 loc) • 1.49 kB
JavaScript
import { jsx } from 'react/jsx-runtime';
import { useMemo, useCallback } from 'react';
import { createZustandContext } from '../../utils/create-zustand-context/index.mjs';
import { stateSetterHandler } from '../../utils/state-setter-handler/index.mjs';
const [Provider, useTableBuilderFilters] = createZustandContext();
const TableBuilderFiltersProvider = ({ name , children })=>/*#__PURE__*/ jsx(Provider, {
name: `table-builder-filter - ${name}`,
initialState: useMemo(()=>({
filters: [],
panel: false
}), []),
actions: useCallback((set, get)=>({
setFilters: stateSetterHandler(set, 'filters'),
setPanel: stateSetterHandler(set, 'panel'),
addFilter: (filter)=>{
if (get().filters.findIndex((f)=>f.field === filter.field) !== -1) return;
get().setFilters((v)=>[
...v,
filter
]);
},
deleteFilter: (field)=>{
get().setFilters((v)=>v.filter((el)=>el.field !== field));
},
editFilter: (filter)=>{
get().setFilters((e)=>e.map((el)=>el.field === filter.field ? filter : el));
}
}), []),
children: children
});
export { TableBuilderFiltersProvider, useTableBuilderFilters };
//# sourceMappingURL=provider.mjs.map