@mrii/react-table-builder
Version:
library to easily build tables using MUI grid
38 lines (34 loc) • 1.57 kB
JavaScript
;
var jsxRuntime = require('react/jsx-runtime');
var react = require('react');
var index = require('../../utils/create-zustand-context/index.js');
var index$1 = require('../../utils/state-setter-handler/index.js');
const [Provider, useTableBuilderFilters] = index.createZustandContext();
const TableBuilderFiltersProvider = ({ name , children })=>/*#__PURE__*/ jsxRuntime.jsx(Provider, {
name: `table-builder-filter - ${name}`,
initialState: react.useMemo(()=>({
filters: [],
panel: false
}), []),
actions: react.useCallback((set, get)=>({
setFilters: index$1.stateSetterHandler(set, 'filters'),
setPanel: index$1.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
});
exports.TableBuilderFiltersProvider = TableBuilderFiltersProvider;
exports.useTableBuilderFilters = useTableBuilderFilters;
//# sourceMappingURL=provider.js.map