UNPKG

@mrii/react-table-builder

Version:
63 lines (59 loc) 2.26 kB
'use strict'; var jsxRuntime = require('react/jsx-runtime'); var xDataGrid = require('@mui/x-data-grid'); var react = require('react'); var get = require('lodash.get'); var index = require('../../utils/string-to-label/index.js'); var index$1 = require('../custom/custom-grid-toolbar/index.js'); var index$2 = require('../custom/custom-grid-filter-panel/index.js'); var provider = require('../../context/table-builder/provider.js'); var provider$1 = require('../../context/filter/provider.js'); var provider$2 = require('../../context/translation/provider.js'); const CoreTableBuilder = /*#__PURE__*/ react.memo(/*#__PURE__*/ react.forwardRef(({ onFilterChange , children , ...props }, ref)=>{ const columns = provider.useTableBuilderColumns((s)=>s.columns); const filters = provider$1.useTableBuilderFilters((s)=>s.filters); const getLabel = provider$2.useTranslation((s)=>s.getFieldLabel); const resolveColumnProps = react.useCallback((col)=>({ ...col, valueGetter: (params)=>{ const value = get(params.row, col.field, '-'); return col.valueGetter?.({ ...params, value }) ?? value; }, headerName: col.headerName ?? getLabel(col.field) ?? index.stringToLabel(col.field) }), [ getLabel ]); const resultColumns = react.useMemo(()=>columns.map(resolveColumnProps), [ columns, resolveColumnProps ]); const components = react.useMemo(()=>({ Toolbar: index$1.CustomGridToolbar, FilterPanel: index$2.CustomGridFilterPanel, ...props.components }), [ props.components ]); react.useEffect(()=>{ onFilterChange?.(filters); }, [ filters, onFilterChange ]); return /*#__PURE__*/ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [ /*#__PURE__*/ jsxRuntime.jsx(xDataGrid.DataGrid, { ref: ref, ...props, columns: resultColumns, components: components }), children ] }); })); exports.CoreTableBuilder = CoreTableBuilder; //# sourceMappingURL=index.js.map