mirror of https://github.com/glitch-soc/mastodon
46 lines
1.1 KiB
JavaScript
46 lines
1.1 KiB
JavaScript
import PropTypes from 'prop-types';
|
|
import { useCallback } from 'react';
|
|
|
|
import { defineMessages, useIntl } from 'react-intl';
|
|
|
|
import ExpandLessIcon from '@/material-icons/400-24px/expand_less.svg?react';
|
|
|
|
import { IconButton } from './icon_button';
|
|
|
|
const messages = defineMessages({
|
|
collapse: { id: 'status.collapse', defaultMessage: 'Collapse' },
|
|
uncollapse: { id: 'status.uncollapse', defaultMessage: 'Uncollapse' },
|
|
});
|
|
|
|
export const CollapseButton = ({ collapsed, setCollapsed }) => {
|
|
const intl = useIntl();
|
|
|
|
const handleCollapsedClick = useCallback((e) => {
|
|
if (e.button === 0) {
|
|
setCollapsed(!collapsed);
|
|
e.preventDefault();
|
|
}
|
|
}, [collapsed, setCollapsed]);
|
|
|
|
return (
|
|
<IconButton
|
|
className='status__collapse-button'
|
|
animate
|
|
active={collapsed}
|
|
title={
|
|
collapsed ?
|
|
intl.formatMessage(messages.uncollapse) :
|
|
intl.formatMessage(messages.collapse)
|
|
}
|
|
icon='angle-double-up'
|
|
iconComponent={ExpandLessIcon}
|
|
onClick={handleCollapsedClick}
|
|
/>
|
|
);
|
|
};
|
|
|
|
CollapseButton.propTypes = {
|
|
collapsed: PropTypes.bool,
|
|
setCollapsed: PropTypes.func.isRequired,
|
|
};
|