UNPKG

@mskcc/carbon-react

Version:

Carbon react components for the MSKCC DSM

60 lines (56 loc) 1.85 kB
/** * 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 };