@mskcc/carbon-react
Version:
Carbon react components for the MSKCC DSM
60 lines (56 loc) • 1.85 kB
JavaScript
/**
* MSKCC 2021, 2024
*/
import React__default from 'react';
import { useSidebar } from './SidebarContext.js';
import Button from '../Button/Button.js';
import '../Button/Button.Skeleton.js';
import cx from 'classnames';
import PropTypes from 'prop-types';
const Sidebar = _ref => {
let {
children,
sidebarWidth = '250px',
sidebarCollapsedWidth = '42px'
} = _ref;
const {
collapsed,
toggleSidebar
} = useSidebar();
const sidebarStyle = {
width: collapsed ? sidebarCollapsedWidth : sidebarWidth
};
return /*#__PURE__*/React__default.createElement("aside", {
className: "msk-dashboard-layout--sidebar-container"
}, /*#__PURE__*/React__default.createElement("div", {
className: "msk-dashboard-layout--sidebar-hidden",
style: sidebarStyle
}), /*#__PURE__*/React__default.createElement("div", {
className: cx('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.createElement("span", {
className: "msk-dashboard-sidebar--toggle-button"
}, /*#__PURE__*/React__default.createElement(Button, {
kind: "ghost",
hasIconOnly: true,
icon: collapsed ? 'arrow_right' : 'arrow_left',
onClick: toggleSidebar,
iconDescription: collapsed ? 'Expand' : 'Collapse',
tooltipPosition: "top"
})), /*#__PURE__*/React__default.createElement("div", {
className: "msk-dashboard-sidebar--content"
}, children)));
};
Sidebar.displayName = 'Sidebar';
Sidebar.propTypes = {
children: PropTypes.node.isRequired,
sidebarWidth: PropTypes.string,
sidebarCollapsedWidth: PropTypes.string
};
export { Sidebar };