wix-style-react
Version:
70 lines (64 loc) • 2.52 kB
JavaScript
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;