Files
cinny/src/app/organisms/navigation/DrawerBreadcrumb.jsx
T

75 lines
2.3 KiB
React
Raw Normal View History

2021-09-05 18:56:34 +05:30
import React, { useEffect, useRef } from 'react';
import PropTypes from 'prop-types';
2021-09-03 17:58:01 +05:30
import './DrawerBreadcrumb.scss';
import initMatrix from '../../../client/initMatrix';
import cons from '../../../client/state/cons';
import { selectSpace } from '../../../client/action/navigation';
import navigation from '../../../client/state/navigation';
import Text from '../../atoms/text/Text';
import RawIcon from '../../atoms/system-icons/RawIcon';
import Button from '../../atoms/button/Button';
import ScrollView from '../../atoms/scroll/ScrollView';
import ChevronRightIC from '../../../../public/res/ic/outlined/chevron-right.svg';
2021-09-05 18:56:34 +05:30
function DrawerBreadcrumb({ spaceId }) {
2021-09-03 17:58:01 +05:30
const scrollRef = useRef(null);
const mx = initMatrix.matrixClient;
const spacePath = navigation.selectedSpacePath;
2021-09-05 18:56:34 +05:30
useEffect(() => {
2021-09-03 17:58:01 +05:30
requestAnimationFrame(() => {
if (scrollRef?.current === null) return;
scrollRef.current.scrollLeft = scrollRef.current.scrollWidth;
});
2021-09-05 18:56:34 +05:30
}, [spaceId]);
2021-09-03 17:58:01 +05:30
2021-09-05 18:56:34 +05:30
if (spacePath.length === 1) return null;
2021-09-03 17:58:01 +05:30
return (
<div className="breadcrumb__wrapper">
<ScrollView ref={scrollRef} horizontal vertical={false} invisible>
<div className="breadcrumb">
{
2021-09-05 18:56:34 +05:30
spacePath.map((id, index) => {
if (index === 0) {
return (
<Button key={id} onClick={() => selectSpace(id)}>
<Text variant="b2">{id === cons.tabs.HOME ? 'Home' : mx.getRoom(id).name}</Text>
</Button>
);
}
return (
<React.Fragment
key={id}
2021-09-03 17:58:01 +05:30
>
2021-09-05 18:56:34 +05:30
<RawIcon size="extra-small" src={ChevronRightIC} />
<Button
className={index === spacePath.length - 1 ? 'breadcrumb__btn--selected' : ''}
onClick={() => selectSpace(id)}
>
<Text variant="b2">{ mx.getRoom(id).name }</Text>
</Button>
</React.Fragment>
);
})
2021-09-03 17:58:01 +05:30
}
<div style={{ width: 'var(--sp-extra-tight)', height: '100%' }} />
</div>
</ScrollView>
</div>
);
}
2021-09-05 18:56:34 +05:30
DrawerBreadcrumb.defaultProps = {
spaceId: null,
};
DrawerBreadcrumb.propTypes = {
spaceId: PropTypes.string,
};
2021-09-03 17:58:01 +05:30
export default DrawerBreadcrumb;