UNPKG

@mskcc/carbon-react

Version:

Carbon react components for the MSKCC DSM

132 lines (123 loc) 4.57 kB
/** * MSKCC 2021, 2024 */ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var _rollupPluginBabelHelpers = require('../../_virtual/_rollupPluginBabelHelpers.js'); var React = require('react'); var PropTypes = require('prop-types'); function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } function _interopNamespace(e) { if (e && e.__esModule) return e; var n = Object.create(null); if (e) { Object.keys(e).forEach(function (k) { if (k !== 'default') { var d = Object.getOwnPropertyDescriptor(e, k); Object.defineProperty(n, k, d.get ? d : { enumerable: true, get: function () { return e[k]; } }); } }); } n["default"] = e; return Object.freeze(n); } var React__namespace = /*#__PURE__*/_interopNamespace(React); var PropTypes__default = /*#__PURE__*/_interopDefaultLegacy(PropTypes); var _span; const Footer = _ref => { let { className, children, logo, logoSrc, maxWidth, navItems, bottomSection, ...other } = _ref; const widthClass = () => { const classPrefix = ' msk-footer-container-'; switch (maxWidth) { case 'fluid': return classPrefix + 'fluid'; case 'max': return classPrefix + '2400'; default: return ''; } }; const YEAR = new Date(); const footerClasses = `msk-footer ${className}`.trim(); const footerWidthClasses = `msk-footer-container ${widthClass()}`.trim(); return /*#__PURE__*/React__namespace.createElement("footer", _rollupPluginBabelHelpers["extends"]({ role: "contentinfo", className: footerClasses }, other), /*#__PURE__*/React__namespace.createElement("div", { className: footerWidthClasses }, /*#__PURE__*/React__namespace.createElement("div", { className: "msk-footer-section msk-footer-base" }, children ?? /*#__PURE__*/React__namespace.createElement(React__namespace.Fragment, null, /*#__PURE__*/React__namespace.createElement("div", { className: "msk-footer-base-group" }, /*#__PURE__*/React__namespace.createElement("div", { className: "msk-footer-logo-container" }, logo ? logo : _span || (_span = /*#__PURE__*/React__namespace.createElement("span", { className: "msk-footer--logo" }))), !!navItems && navItems.length > 0 && /*#__PURE__*/React__namespace.createElement("ul", { className: "msk-footer-base-link-group" }, navItems.map((item, index) => /*#__PURE__*/React__namespace.createElement("li", { key: index, className: "msk-footer-base-link" }, item.type === 'button' || item.buttonProps ? /*#__PURE__*/React__namespace.createElement("button", _rollupPluginBabelHelpers["extends"]({ type: "button", className: "msk-link msk-link-button" }, item.buttonProps), item.label) : /*#__PURE__*/React__namespace.createElement("a", _rollupPluginBabelHelpers["extends"]({ href: item.href, className: "msk-link" }, item.linkProps), item.label))))), /*#__PURE__*/React__namespace.createElement("div", { className: "msk-footer-copyright" }, "\xA9", YEAR.getFullYear(), " Memorial Sloan Kettering Cancer Center"), bottomSection && /*#__PURE__*/React__namespace.createElement("div", { className: "msk-footer-copyright msk-footer-bottom-section" }, bottomSection))))); }; Footer.displayName = 'Footer'; Footer.propTypes = { /** * Render an bottom section at the bottom of the footer */ bottomSection: PropTypes__default["default"].node, /** * Specify the contents of the footer */ children: PropTypes__default["default"].node, /** * Add custom class */ className: PropTypes__default["default"].string, /** * Render a custom logo */ logo: PropTypes__default["default"].node, /** * Specify the location of the logo file */ logoSrc: PropTypes__default["default"].string, /** * Specify the max width of the contents inside the footer */ maxWidth: PropTypes__default["default"].oneOf(['default', 'fluid', 'max']), /** * Pass an array of right side navigation items with a pre-defined data structure. */ navItems: PropTypes__default["default"].arrayOf(PropTypes__default["default"].shape({ type: PropTypes__default["default"].oneOf(['link', 'button']), label: PropTypes__default["default"].node, linkProps: PropTypes__default["default"].object, // For link attributes buttonProps: PropTypes__default["default"].object // For button attributes })) }; exports.Footer = Footer; exports["default"] = Footer;