@mskcc/carbon-react
Version:
Carbon react components for the MSKCC DSM
70 lines (62 loc) • 2.43 kB
JavaScript
/**
* MSKCC 2021, 2024
*/
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var React = require('react');
var SidebarContext = require('./SidebarContext.js');
var Button = require('../Button/Button.js');
require('../Button/Button.Skeleton.js');
var cx = require('classnames');
var PropTypes = require('prop-types');
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
var cx__default = /*#__PURE__*/_interopDefaultLegacy(cx);
var PropTypes__default = /*#__PURE__*/_interopDefaultLegacy(PropTypes);
const Sidebar = _ref => {
let {
children,
sidebarWidth = '250px',
sidebarCollapsedWidth = '42px'
} = _ref;
const {
collapsed,
toggleSidebar
} = SidebarContext.useSidebar();
const sidebarStyle = {
width: collapsed ? sidebarCollapsedWidth : sidebarWidth
};
return /*#__PURE__*/React__default["default"].createElement("aside", {
className: "msk-dashboard-layout--sidebar-container"
}, /*#__PURE__*/React__default["default"].createElement("div", {
className: "msk-dashboard-layout--sidebar-hidden",
style: sidebarStyle
}), /*#__PURE__*/React__default["default"].createElement("div", {
className: cx__default["default"]('msk-dashboard-layout--sidebar', {
'msk-dashboard-sidebar--collapsed': collapsed,
'msk-dashboard-sidebar--expanded': !collapsed
}),
style: {
width: sidebarWidth,
transform: collapsed ? `translateX(calc(-100% + ${sidebarCollapsedWidth}))` : 'translateX(0)'
}
}, /*#__PURE__*/React__default["default"].createElement("span", {
className: "msk-dashboard-sidebar--toggle-button"
}, /*#__PURE__*/React__default["default"].createElement(Button["default"], {
kind: "ghost",
hasIconOnly: true,
icon: collapsed ? 'arrow_right' : 'arrow_left',
onClick: toggleSidebar,
iconDescription: collapsed ? 'Expand' : 'Collapse',
tooltipPosition: "top"
})), /*#__PURE__*/React__default["default"].createElement("div", {
className: "msk-dashboard-sidebar--content"
}, children)));
};
Sidebar.displayName = 'Sidebar';
Sidebar.propTypes = {
children: PropTypes__default["default"].node.isRequired,
sidebarWidth: PropTypes__default["default"].string,
sidebarCollapsedWidth: PropTypes__default["default"].string
};
exports.Sidebar = Sidebar;