@mskcc/carbon-react
Version:
Carbon react components for the MSKCC DSM
132 lines (123 loc) • 4.57 kB
JavaScript
/**
* 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"].string,
linkProps: PropTypes__default["default"].object,
// For link attributes
buttonProps: PropTypes__default["default"].object // For button attributes
}))
};
exports.Footer = Footer;
exports["default"] = Footer;