UNPKG

@talend/react-containers

Version:

Provide connected components aka containers for @talend/react-cmf based on @talend/react-components.

71 lines 2.02 kB
import PropTypes from 'prop-types'; import { isValidElement } from 'react'; import List from '../List'; import SidePanel from '../SidePanel'; import { Inject, Layout, HeaderBar } from "@talend/react-components"; import { jsx as _jsx } from "react/jsx-runtime"; function getContent(Component, props) { if (/*#__PURE__*/isValidElement(props)) { return props; } return /*#__PURE__*/_jsx(Component, { ...props }); } function wrapChildren(children) { if (children && children.props && children.props.children) { return [children, ...wrapChildren(children.props.children)]; } else if (children && !children.props) { // this happens ony in tests with enzyme's mount return []; } return [children]; } function HomeListView({ getComponent, components, id, hasTheme, sidepanel, list, header, children }) { if (!sidepanel || !list) { return null; } let drawers = children || []; if (!Array.isArray(drawers)) { drawers = wrapChildren(drawers); } if (components && components.drawers) { drawers = drawers.concat(Inject.map(getComponent, components.drawers)); } const Renderers = Inject.getAll(getComponent, { HeaderBar, SidePanel, List }); return /*#__PURE__*/_jsx(Layout, { id: id, hasTheme: hasTheme, mode: "TwoColumns", header: getContent(Renderers.HeaderBar, header), one: getContent(Renderers.SidePanel, sidepanel), drawers: drawers, children: getContent(Renderers.List, list) }); } HomeListView.displayName = 'HomeListView'; HomeListView.propTypes = { getComponent: PropTypes.func, id: PropTypes.string, hasTheme: PropTypes.bool, components: PropTypes.object, header: PropTypes.oneOfType([PropTypes.node, PropTypes.object]), sidepanel: PropTypes.oneOfType([PropTypes.node, PropTypes.object]).isRequired, list: PropTypes.oneOfType([PropTypes.node, PropTypes.object]).isRequired, children: PropTypes.node }; export default HomeListView; //# sourceMappingURL=HomeListView.component.js.map