UNPKG

@talend/react-components

Version:
88 lines (86 loc) 2.58 kB
import { useState } from 'react'; import PropTypes from 'prop-types'; import { withTranslation } from 'react-i18next'; import { displayModesOptions } from '../DisplayMode/ListDisplayMode.component'; import { ListContext } from '../context'; import getDefaultT from '../../../translate'; import I18N_DOMAIN_COMPONENTS from '../../../constants'; import { useCollectionSort } from './hooks/useCollectionSort.hook'; import { useCollectionFilter } from './hooks/useCollectionFilter.hook'; import theme from '../List.module.scss'; import { useColumnsVisibility } from './hooks/useColumnsVisibility.hook'; import { jsx as _jsx } from "react/jsx-runtime"; function Manager({ initialDisplayMode, initialSortParams, initialVisibleColumns, columnsVisibilityStorageKey, children, t, ...rest }) { let collection = rest.collection; const [displayMode, setDisplayMode] = useState(initialDisplayMode || displayModesOptions[0]); const [columns, setColumns] = useState([]); const { visibleColumns, setVisibleColumns } = useColumnsVisibility(columns, initialVisibleColumns, columnsVisibilityStorageKey); // Sort items const { sortedCollection, sortParams, setSortParams } = useCollectionSort(collection, initialSortParams); collection = sortedCollection; // Filter by text const { filteredCollection, textFilter, setTextFilter, filteredColumns, setFilteredColumns } = useCollectionFilter(collection, undefined, undefined, visibleColumns); collection = filteredCollection; const contextValues = { collection, displayMode, columns, visibleColumns, filteredColumns, setDisplayMode, setSortParams, setTextFilter, setColumns, setVisibleColumns, setFilteredColumns, sortParams, t, textFilter }; return /*#__PURE__*/_jsx(ListContext.Provider, { value: contextValues, children: /*#__PURE__*/_jsx("div", { className: theme.list, children: children }) }); } Manager.defaultProps = { t: getDefaultT() }; Manager.propTypes = { children: PropTypes.node, collection: PropTypes.array, id: PropTypes.string.isRequired, initialDisplayMode: PropTypes.oneOf(displayModesOptions), initialVisibleColumns: PropTypes.arrayOf(PropTypes.string), initialSortParams: PropTypes.shape({ sortBy: PropTypes.string, isDescending: PropTypes.bool }), columnsVisibilityStorageKey: PropTypes.string, t: PropTypes.func }; export default withTranslation(I18N_DOMAIN_COMPONENTS)(Manager); //# sourceMappingURL=ListManager.component.js.map