Update icons and small refacto for performance
This commit is contained in:
parent
1cf286962c
commit
c8eda21da4
@ -1,4 +1,4 @@
|
|||||||
import React, { useState } from 'react';
|
import React, { useState, useCallback } from 'react';
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import classnames from 'classnames';
|
import classnames from 'classnames';
|
||||||
|
|
||||||
@ -38,6 +38,11 @@ const classesMap = {
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const openIconName = {
|
||||||
|
left: 'panel-left',
|
||||||
|
right: 'panel-right',
|
||||||
|
};
|
||||||
|
|
||||||
const SidePanel = ({
|
const SidePanel = ({
|
||||||
side,
|
side,
|
||||||
className,
|
className,
|
||||||
@ -50,12 +55,8 @@ const SidePanel = ({
|
|||||||
const [isOpen, setIsOpen] = useState(defaultIsOpen);
|
const [isOpen, setIsOpen] = useState(defaultIsOpen);
|
||||||
const openStatus = isOpen ? 'open' : 'closed';
|
const openStatus = isOpen ? 'open' : 'closed';
|
||||||
const style = Object.assign({}, styleMap[openStatus][side], baseStyle);
|
const style = Object.assign({}, styleMap[openStatus][side], baseStyle);
|
||||||
const openIconName = {
|
|
||||||
left: 'chevron-right',
|
|
||||||
right: 'chevron-right',
|
|
||||||
};
|
|
||||||
|
|
||||||
const sidePanelHeader = () => {
|
const getSidePanelHeader = useCallback(() => {
|
||||||
return (
|
return (
|
||||||
<React.Fragment>
|
<React.Fragment>
|
||||||
{isOpen ? (
|
{isOpen ? (
|
||||||
@ -63,7 +64,9 @@ const SidePanel = ({
|
|||||||
variant="text"
|
variant="text"
|
||||||
color="inherit"
|
color="inherit"
|
||||||
rounded="none"
|
rounded="none"
|
||||||
onClick={() => setIsOpen(false)}
|
onClick={() => {
|
||||||
|
setIsOpen(false);
|
||||||
|
}}
|
||||||
className="flex flex-row items-center border-b w-100 border-secondary-main h-12"
|
className="flex flex-row items-center border-b w-100 border-secondary-main h-12"
|
||||||
>
|
>
|
||||||
<Icon
|
<Icon
|
||||||
@ -79,7 +82,9 @@ const SidePanel = ({
|
|||||||
<Button
|
<Button
|
||||||
variant="text"
|
variant="text"
|
||||||
color="inherit"
|
color="inherit"
|
||||||
onClick={() => setIsOpen(true)}
|
onClick={() => {
|
||||||
|
setIsOpen(true);
|
||||||
|
}}
|
||||||
style={{
|
style={{
|
||||||
minWidth: `${collapsedWidth}px`,
|
minWidth: `${collapsedWidth}px`,
|
||||||
width: `${collapsedWidth}px`,
|
width: `${collapsedWidth}px`,
|
||||||
@ -92,7 +97,7 @@ const SidePanel = ({
|
|||||||
)}
|
)}
|
||||||
</React.Fragment>
|
</React.Fragment>
|
||||||
);
|
);
|
||||||
};
|
}, [componentLabel, iconLabel, iconName, isOpen, side]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div
|
<div
|
||||||
@ -103,7 +108,7 @@ const SidePanel = ({
|
|||||||
)}
|
)}
|
||||||
style={style}
|
style={style}
|
||||||
>
|
>
|
||||||
{sidePanelHeader(isOpen, side, iconLabel, iconName)}
|
{getSidePanelHeader()}
|
||||||
{isOpen && children}
|
{isOpen && children}
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|||||||
@ -15,7 +15,7 @@ const Viewer = () => {
|
|||||||
>
|
>
|
||||||
<SidePanel
|
<SidePanel
|
||||||
side="left"
|
side="left"
|
||||||
iconName="info-link"
|
iconName="icon-nav-studies"
|
||||||
iconLabel="Studies"
|
iconLabel="Studies"
|
||||||
componentLabel="Studies"
|
componentLabel="Studies"
|
||||||
defaultIsOpen={false}
|
defaultIsOpen={false}
|
||||||
@ -27,7 +27,7 @@ const Viewer = () => {
|
|||||||
</div>
|
</div>
|
||||||
<SidePanel
|
<SidePanel
|
||||||
side="right"
|
side="right"
|
||||||
iconName="info-link"
|
iconName="list-bullets"
|
||||||
iconLabel="Measure"
|
iconLabel="Measure"
|
||||||
componentLabel="Measurements"
|
componentLabel="Measurements"
|
||||||
defaultIsOpen={true}
|
defaultIsOpen={true}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user