@mrii/react-table-builder
Version:
library to easily build tables using MUI grid
1 lines • 4.51 kB
Source Map (JSON)
{"version":3,"file":"index.mjs","sources":["../../../src/components/core-component/index.tsx"],"sourcesContent":["import type { DataGridProps, GridColDef, GridSlotsComponent } from '@mui/x-data-grid';\nimport { DataGrid } from '@mui/x-data-grid';\nimport { forwardRef, memo, useCallback, useEffect, useMemo } from 'react';\nimport get from 'lodash.get';\nimport type { FilterItem } from '$context';\nimport { useTableBuilderColumns, useTableBuilderFilters, useTranslation } from '$context';\nimport { stringToLabel } from '$utils/string-to-label';\nimport type { ColumnMetaData } from '$types/column-metadata';\nimport { CustomGridFilterPanel, CustomGridToolbar } from '../custom';\n\nexport type CoreTableBuilderProps = React.PropsWithChildren<\n Omit<DataGridProps, 'columns'>\n> & {\n onFilterChange?: (filters: FilterItem[]) => void;\n};\n\nexport const CoreTableBuilder = memo(\n forwardRef<HTMLDivElement, CoreTableBuilderProps>(\n ({ onFilterChange, children, ...props }, ref) => {\n const columns = useTableBuilderColumns(s => s.columns);\n const filters = useTableBuilderFilters(s => s.filters);\n const getLabel = useTranslation(s => s.getFieldLabel);\n\n const resolveColumnProps = useCallback(\n (col: ColumnMetaData): GridColDef => ({\n ...col,\n valueGetter: params => {\n const value = get(params.row, col.field, '-');\n return (\n col.valueGetter?.({\n ...params,\n value,\n }) ?? value\n );\n },\n headerName: col.headerName ?? getLabel(col.field) ?? stringToLabel(col.field),\n }),\n [getLabel]\n );\n\n const resultColumns = useMemo<GridColDef[]>(\n () => columns.map(resolveColumnProps),\n [columns, resolveColumnProps]\n );\n\n const components = useMemo<Partial<GridSlotsComponent>>(\n () => ({\n Toolbar: CustomGridToolbar,\n FilterPanel: CustomGridFilterPanel,\n ...props.components,\n }),\n [props.components]\n );\n\n useEffect(() => {\n onFilterChange?.(filters);\n }, [filters, onFilterChange]);\n\n return (\n <>\n <DataGrid\n ref={ref}\n {...props}\n columns={resultColumns}\n components={components}\n />\n {children}\n </>\n );\n }\n )\n);\n"],"names":["CoreTableBuilder","memo","forwardRef","onFilterChange","children","props","ref","columns","useTableBuilderColumns","s","filters","useTableBuilderFilters","getLabel","useTranslation","getFieldLabel","resolveColumnProps","useCallback","col","valueGetter","params","value","get","row","field","headerName","stringToLabel","resultColumns","useMemo","map","components","Toolbar","CustomGridToolbar","FilterPanel","CustomGridFilterPanel","useEffect","_jsxs","_Fragment","_jsx","DataGrid"],"mappings":";;;;;;;;;;;AAgBaA,MAAAA,gBAAAA,iBAAmBC,IAC9BC,eAAAA,UAAAA,CACE,CAAC,EAAEC,cAAc,GAAEC,QAAQ,GAAE,GAAGC,KAAAA,EAAO,EAAEC,GAAQ,GAAA;AAC/C,IAAA,MAAMC,OAAUC,GAAAA,sBAAAA,CAAuBC,CAAAA,CAAAA,GAAKA,EAAEF,OAAO,CAAA,CAAA;AACrD,IAAA,MAAMG,OAAUC,GAAAA,sBAAAA,CAAuBF,CAAAA,CAAAA,GAAKA,EAAEC,OAAO,CAAA,CAAA;AACrD,IAAA,MAAME,QAAWC,GAAAA,cAAAA,CAAeJ,CAAAA,CAAAA,GAAKA,EAAEK,aAAa,CAAA,CAAA;AAEpD,IAAA,MAAMC,kBAAqBC,GAAAA,WAAAA,CACzB,CAACC,GAAAA,IAAqC;AACpC,YAAA,GAAGA,GAAG;AACNC,YAAAA,WAAAA,EAAaC,CAAAA,MAAU,GAAA;AACrB,gBAAA,MAAMC,QAAQC,GAAIF,CAAAA,MAAAA,CAAOG,GAAG,EAAEL,GAAAA,CAAIM,KAAK,EAAE,GAAA,CAAA,CAAA;gBACzC,OACEN,GAAAA,CAAIC,WAAW,GAAG;AAChB,oBAAA,GAAGC,MAAM;AACTC,oBAAAA,KAAAA;iBACIA,CAAAA,IAAAA,KAAAA,CAAAA;AAEV,aAAA;YACAI,UAAYP,EAAAA,GAAAA,CAAIO,UAAU,IAAIZ,QAAAA,CAASK,IAAIM,KAAK,CAAA,IAAKE,aAAcR,CAAAA,GAAAA,CAAIM,KAAK,CAAA;AAC9E,SAAA,CACA,EAAA;AAACX,QAAAA,QAAAA;AAAS,KAAA,CAAA,CAAA;AAGZ,IAAA,MAAMc,gBAAgBC,OACpB,CAAA,IAAMpB,OAAQqB,CAAAA,GAAG,CAACb,kBAClB,CAAA,EAAA;AAACR,QAAAA,OAAAA;AAASQ,QAAAA,kBAAAA;AAAmB,KAAA,CAAA,CAAA;IAG/B,MAAMc,UAAAA,GAAaF,OACjB,CAAA,KAAO;YACLG,OAASC,EAAAA,iBAAAA;YACTC,WAAaC,EAAAA,qBAAAA;AACb,YAAA,GAAG5B,MAAMwB,UAAU;AACrB,SAAA,CACA,EAAA;AAACxB,QAAAA,KAAAA,CAAMwB,UAAU;AAAC,KAAA,CAAA,CAAA;AAGpBK,IAAAA,SAAAA,CAAU,IAAM;QACd/B,cAAiBO,GAAAA,OAAAA,CAAAA,CAAAA;KAChB,EAAA;AAACA,QAAAA,OAAAA;AAASP,QAAAA,cAAAA;AAAe,KAAA,CAAA,CAAA;IAE5B,qBACEgC,IAAA,CAAAC,QAAA,EAAA;;0BACEC,GAACC,CAAAA,QAAAA,EAAAA;gBACChC,GAAKA,EAAAA,GAAAA;AACJ,gBAAA,GAAGD,KAAK;gBACTE,OAASmB,EAAAA,aAAAA;gBACTG,UAAYA,EAAAA,UAAAA;;AAEbzB,YAAAA,QAAAA;;;AAGP,CAEF,CAAA;;;;"}