forked from ProjectMirador/mirador
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathWindowThumbnailSettings.js
More file actions
113 lines (108 loc) · 4.06 KB
/
WindowThumbnailSettings.js
File metadata and controls
113 lines (108 loc) · 4.06 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
import { styled } from '@mui/material/styles';
import FormControlLabel from '@mui/material/FormControlLabel';
import ListSubheader from '@mui/material/ListSubheader';
import MenuItem from '@mui/material/MenuItem';
import MenuList from '@mui/material/MenuList';
import ThumbnailsOffIcon from '@mui/icons-material/CropDinSharp';
import PropTypes from 'prop-types';
import { useTranslation } from 'react-i18next';
import ThumbnailNavigationBottomIcon from './icons/ThumbnailNavigationBottomIcon';
import ThumbnailNavigationRightIcon from './icons/ThumbnailNavigationRightIcon';
const ThumbnailOption = styled(MenuItem, { name: 'WindowThumbnailSettings', slot: 'option' })(({ selected, theme }) => ({
'& .MuiFormControlLabel-label': {
borderBottom: '2px solid transparent',
...(selected && {
borderBottomColor: theme.palette.secondary.main,
}),
'&.Mui-selected': {
backgroundColor: 'transparent !important',
},
'&.Mui-selected.Mui-focusVisible': {
backgroundColor: `${(theme.vars || theme).palette.action.focus} !important`,
},
'&:focused': {
backgroundColor: `${(theme.vars || theme).palette.action.focus} !important`,
},
color: selected ? theme.palette.secondary.main : undefined,
display: 'inline-flex',
},
}));
const StyledMenuList = styled(MenuList, { name: 'WindowViewSettings', slot: 'option' })(() => ({
display: 'inline-flex',
}));
/**
*
*/
export function WindowThumbnailSettings({
handleClose = () => {}, thumbnailNavigationPosition, direction, windowId, setWindowThumbnailPosition,
}) {
const { t } = useTranslation();
/** */
const handleChange = (value) => { setWindowThumbnailPosition(windowId, value); handleClose(); };
return (
<>
<ListSubheader role="presentation" disableSticky>{t('thumbnails')}</ListSubheader>
<StyledMenuList role="menubar">
<ThumbnailOption
aria-checked={thumbnailNavigationPosition === 'off'}
key="off"
onClick={() => { handleChange('off'); }}
role="menuitemradio"
selected={thumbnailNavigationPosition === 'off'}
>
<FormControlLabel
control={
<ThumbnailsOffIcon color={thumbnailNavigationPosition === 'off' ? 'secondary' : undefined} fill="currentcolor" />
}
label={t('off')}
labelPlacement="bottom"
value="off"
/>
</ThumbnailOption>
<ThumbnailOption
aria-checked={thumbnailNavigationPosition === 'far-bottom'}
key="far-bottom"
onClick={() => { handleChange('far-bottom'); }}
role="menuitemradio"
selected={thumbnailNavigationPosition === 'far-bottom'}
>
<FormControlLabel
control={
<ThumbnailNavigationBottomIcon color={thumbnailNavigationPosition === 'far-bottom' ? 'secondary' : undefined} fill="currentcolor" />
}
label={t('bottom')}
labelPlacement="bottom"
value="far-bottom"
/>
</ThumbnailOption>
<ThumbnailOption
aria-checked={thumbnailNavigationPosition === 'far-right'}
key="far-right"
onClick={() => { handleChange('far-right'); }}
role="menuitemradio"
selected={thumbnailNavigationPosition === 'far-right'}
>
<FormControlLabel
control={(
<ThumbnailNavigationRightIcon
color={thumbnailNavigationPosition === 'far-right' ? 'secondary' : undefined}
fill="currentcolor"
style={direction === 'rtl' ? { transform: 'rotate(180deg)' } : {}}
/>
)}
label={t('right')}
labelPlacement="bottom"
value="far-right"
/>
</ThumbnailOption>
</StyledMenuList>
</>
);
}
WindowThumbnailSettings.propTypes = {
direction: PropTypes.string.isRequired,
handleClose: PropTypes.func,
setWindowThumbnailPosition: PropTypes.func.isRequired,
thumbnailNavigationPosition: PropTypes.string.isRequired,
windowId: PropTypes.string.isRequired,
};