Files
CHOMPStation2/tgui/packages/tgui-panel/chat/ChatPageSettings.tsx
CHOMPStation2StaffMirrorBot 3aa9314ff4 [MIRROR] Moves UIs to TGUI core (#9967)
Co-authored-by: Kashargul <144968721+Kashargul@users.noreply.github.com>
2025-01-29 01:34:31 +01:00

163 lines
3.9 KiB
TypeScript

/**
* @file
* @copyright 2020 Aleksej Komarov
* @license MIT
*/
import { useDispatch, useSelector } from 'tgui/backend';
import {
Button,
Collapsible,
Divider,
Input,
Section,
Stack,
} from 'tgui-core/components';
import {
moveChatPageLeft,
moveChatPageRight,
removeChatPage,
toggleAcceptedType,
updateChatPage,
} from './actions';
import { MESSAGE_TYPES } from './constants';
import { selectCurrentChatPage } from './selectors';
export const ChatPageSettings = (props) => {
const page = useSelector(selectCurrentChatPage);
const dispatch = useDispatch();
return (
<Section>
<Stack align="center">
<Stack.Item grow>
<Input
fluid
updateOnPropsChange
value={page.name}
onChange={(e, value) =>
dispatch(
updateChatPage({
pageId: page.id,
name: value,
}),
)
}
/>
</Stack.Item>
<Stack.Item>
<Button.Checkbox
checked={page.hideUnreadCount}
icon={page.hideUnreadCount ? 'bell-slash' : 'bell'}
tooltip="Disables unread counter"
onClick={() =>
dispatch(
updateChatPage({
pageId: page.id,
hideUnreadCount: !page.hideUnreadCount,
}),
)
}
>
Mute
</Button.Checkbox>
</Stack.Item>
{!page.isMain ? (
<Stack.Item>
<Button
icon="times"
color="red"
onClick={() =>
dispatch(
removeChatPage({
pageId: page.id,
}),
)
}
>
Remove
</Button>
</Stack.Item>
) : (
''
)}
</Stack>
<Divider />
<Stack align="center">
{!page.isMain ? (
<Stack.Item>
Reorder Chat:&emsp;
<Button
color="blue"
onClick={() =>
dispatch(
moveChatPageLeft({
pageId: page.id,
}),
)
}
>
&laquo;
</Button>
<Button
color="blue"
onClick={() =>
dispatch(
moveChatPageRight({
pageId: page.id,
}),
)
}
>
&raquo;
</Button>
</Stack.Item>
) : (
''
)}
</Stack>
<Divider />
<Section title="Messages to display">
{MESSAGE_TYPES.filter(
(typeDef) => !typeDef.important && !typeDef.admin,
).map((typeDef) => (
<Button.Checkbox
key={typeDef.type}
checked={page.acceptedTypes[typeDef.type]}
onClick={() =>
dispatch(
toggleAcceptedType({
pageId: page.id,
type: typeDef.type,
}),
)
}
>
{typeDef.name}
</Button.Checkbox>
))}
<Collapsible mt={1} color="transparent" title="Admin stuff">
{MESSAGE_TYPES.filter(
(typeDef) => !typeDef.important && typeDef.admin,
).map((typeDef) => (
<Button.Checkbox
key={typeDef.type}
checked={page.acceptedTypes[typeDef.type]}
onClick={() =>
dispatch(
toggleAcceptedType({
pageId: page.id,
type: typeDef.type,
}),
)
}
>
{typeDef.name}
</Button.Checkbox>
))}
</Collapsible>
</Section>
</Section>
);
};