@talend/react-components
Version:
Set of react components.
88 lines (86 loc) • 2.58 kB
JavaScript
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