UNPKG

@vlsergey/react-bootstrap-pagetable

Version:

Complex solution to work with pageable data, including sorting, filtering, actions, changing displayed columns, etc.

21 lines (15 loc) 654 B
import {useMemo} from 'react'; import {notEmpty} from '../../arrayUtils'; import FieldModel from '../../FieldModel'; import {useControlledContext} from '../ControlledContext'; export default function useVisibleFields<T> (): FieldModel<T, unknown, unknown>[] { const {visibleFields, itemModel} = useControlledContext<T>(); const allFields = itemModel.fields; const fieldsMap = useMemo(() => new Map(allFields.map(field => [field.key, field])) , [allFields]); const result = useMemo(() => visibleFields.map(fieldKey => fieldsMap.get(fieldKey)).filter(notEmpty) , [fieldsMap, visibleFields]); return result; }