UNPKG

wix-style-react

Version:
70 lines (64 loc) 2.52 kB
import React from 'react'; import PropTypes from 'prop-types'; import Start from './Start'; import Center from './Center'; import End from './End'; import { st, classes } from './PageFooter.st.css'; import Divider from '../Divider'; import { buildChildrenObject } from "wix-ui-core/dist/es/src/utils"; /** Layout footer component of 3 columns */ var PageFooter = function PageFooter(_ref) { var divider = _ref.divider, className = _ref.className, children = _ref.children, dataHook = _ref.dataHook; var childrenObj = buildChildrenObject(children, { Start: /*#__PURE__*/React.createElement(Start, { key: "start" }), Center: /*#__PURE__*/React.createElement(Center, { key: "center" }), End: /*#__PURE__*/React.createElement(End, { key: "end" }) }); return /*#__PURE__*/React.createElement("div", { className: classes.root }, divider && /*#__PURE__*/React.createElement("div", { className: classes.divider }, /*#__PURE__*/React.createElement(Divider, null)), /*#__PURE__*/React.createElement("div", { className: st(classes.container, className), children: Object.values(childrenObj), "data-hook": dataHook }, Object.values(childrenObj))); }; PageFooter.displayName = 'PageFooter'; PageFooter.propTypes = { /** Either `<PageFooter.Start />`, `<PageFooter.Center />` or `<PageFooter.End />` components. */ children: function children(props, propName) { var childrenArr = React.Children.toArray(props[propName]); return childrenArr.reduce(function (err, child) { if (!err && child.type.displayName !== 'PageFooter.Start' && child.type.displayName !== 'PageFooter.Center' && child.type.displayName !== 'PageFooter.End') { return new Error("Invalid children provided, unknown child <".concat(child.type.displayName || child.type, " /> supplied")); } return err; }, false); }, /** Applied as data-hook HTML attribute that can be used in the tests */ dataHook: PropTypes.string, /** A css class to be applied to the component's root element */ className: PropTypes.string, /** A boolean to to determine whether to render a divider element */ divider: PropTypes.bool }; PageFooter.defaultProps = { divider: false }; PageFooter.Start = Start; PageFooter.Center = Center; PageFooter.End = End; PageFooter.Start.displayName = 'PageFooter.Start'; PageFooter.Center.displayName = 'PageFooter.Center'; PageFooter.End.displayName = 'PageFooter.End'; export default PageFooter;