mirador
Version:
An open-source, web-based 'multi-up' viewer that supports zoom-pan-rotate functionality, ability to display/compare simple images, and images with annotations.
49 lines (41 loc) • 1.47 kB
JSX
import { useId } from 'react';
import PropTypes from 'prop-types';
import Button from '@mui/material/Button';
import Typography from '@mui/material/Typography';
import ViewListIcon from '@mui/icons-material/ViewListSharp';
import { useTranslation } from 'react-i18next';
import CollapsibleSection from '../containers/CollapsibleSection';
/**
* CollectionInfo
*/
export function CollectionInfo({ collectionLabel = null, collectionPath = [], showCollectionDialog, windowId = null }) {
const { t } = useTranslation();
const id = useId();
const titleId = useId();
/**
* Show the containing collection.
*/
const openCollectionDialog = () => {
const manifestId = collectionPath[collectionPath.length - 1];
showCollectionDialog(manifestId, collectionPath.slice(0, -1), windowId);
};
if (collectionPath.length === 0) return null;
return (
<CollapsibleSection id={id} label={t('collection')}>
{collectionLabel && (
<Typography aria-labelledby={`${id} ${titleId}`} id={titleId} variant="h4">
{collectionLabel}
</Typography>
)}
<Button color="primary" onClick={openCollectionDialog} startIcon={<ViewListIcon />}>
{t('showCollection')}
</Button>
</CollapsibleSection>
);
}
CollectionInfo.propTypes = {
collectionLabel: PropTypes.string,
collectionPath: PropTypes.arrayOf(PropTypes.string),
showCollectionDialog: PropTypes.func.isRequired,
windowId: PropTypes.string,
};