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.
59 lines (53 loc) • 1.54 kB
JSX
import { useId, useState } from 'react';
import PropTypes from 'prop-types';
import BookmarksIcon from '@mui/icons-material/BookmarksSharp';
import { useTranslation } from 'react-i18next';
import WindowList from '../containers/WindowList';
import MiradorMenuButton from '../containers/MiradorMenuButton';
/**
* WindowListButton ~
*/
export function WindowListButton({ disabled = false, windowCount }) {
const { t } = useTranslation();
const [windowListAnchor, setWindowListAnchor] = useState(null);
const id = useId();
/** */
const handleClose = () => { setWindowListAnchor(null); };
/** */
const handleOpen = (event) => { setWindowListAnchor(event.currentTarget); };
return (
<>
<MiradorMenuButton
aria-haspopup="true"
aria-label={t('listAllOpenWindows')}
aria-owns={windowListAnchor ? id : null}
selected={Boolean(windowListAnchor)}
disabled={disabled}
badge
BadgeProps={{
badgeContent: windowCount,
sx: {
'.MuiBadge-badge': {
paddingLeft: 1.5,
},
},
}}
onClick={(e) => handleOpen(e)}
>
<BookmarksIcon />
</MiradorMenuButton>
{Boolean(windowListAnchor) && (
<WindowList
anchorEl={windowListAnchor}
id={id}
open={Boolean(windowListAnchor)}
handleClose={handleClose}
/>
)}
</>
);
}
WindowListButton.propTypes = {
disabled: PropTypes.bool,
windowCount: PropTypes.number.isRequired,
};