@talend/react-components
Version:
Set of react components.
95 lines (92 loc) • 3.19 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _react = require("react");
var _propTypes = _interopRequireDefault(require("prop-types"));
var _reactI18next = require("react-i18next");
var _ListDisplayMode = require("../DisplayMode/ListDisplayMode.component");
var _context = require("../context");
var _translate = _interopRequireDefault(require("../../../translate"));
var _constants = _interopRequireDefault(require("../../../constants"));
var _useCollectionSort = require("./hooks/useCollectionSort.hook");
var _useCollectionFilter = require("./hooks/useCollectionFilter.hook");
var _ListModule = _interopRequireDefault(require("../List.module.scss"));
var _useColumnsVisibility = require("./hooks/useColumnsVisibility.hook");
var _jsxRuntime = require("react/jsx-runtime");
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
function Manager({
initialDisplayMode,
initialSortParams,
initialVisibleColumns,
columnsVisibilityStorageKey,
children,
t,
...rest
}) {
let collection = rest.collection;
const [displayMode, setDisplayMode] = (0, _react.useState)(initialDisplayMode || _ListDisplayMode.displayModesOptions[0]);
const [columns, setColumns] = (0, _react.useState)([]);
const {
visibleColumns,
setVisibleColumns
} = (0, _useColumnsVisibility.useColumnsVisibility)(columns, initialVisibleColumns, columnsVisibilityStorageKey);
// Sort items
const {
sortedCollection,
sortParams,
setSortParams
} = (0, _useCollectionSort.useCollectionSort)(collection, initialSortParams);
collection = sortedCollection;
// Filter by text
const {
filteredCollection,
textFilter,
setTextFilter,
filteredColumns,
setFilteredColumns
} = (0, _useCollectionFilter.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__*/(0, _jsxRuntime.jsx)(_context.ListContext.Provider, {
value: contextValues,
children: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
className: _ListModule.default.list,
children: children
})
});
}
Manager.defaultProps = {
t: (0, _translate.default)()
};
Manager.propTypes = {
children: _propTypes.default.node,
collection: _propTypes.default.array,
id: _propTypes.default.string.isRequired,
initialDisplayMode: _propTypes.default.oneOf(_ListDisplayMode.displayModesOptions),
initialVisibleColumns: _propTypes.default.arrayOf(_propTypes.default.string),
initialSortParams: _propTypes.default.shape({
sortBy: _propTypes.default.string,
isDescending: _propTypes.default.bool
}),
columnsVisibilityStorageKey: _propTypes.default.string,
t: _propTypes.default.func
};
var _default = exports.default = (0, _reactI18next.withTranslation)(_constants.default)(Manager);
//# sourceMappingURL=ListManager.component.js.map