refactor(web): common title and create group panel

pull/13/head
moonrailgun 4 years ago
parent b96aa27152
commit 9a3a0868ac

@ -0,0 +1,15 @@
import React from 'react';
interface FullModalCommonTitleProps {
extra?: React.ReactNode;
}
export const FullModalCommonTitle: React.FC<FullModalCommonTitleProps> =
React.memo((props) => {
return (
<div className="text-xl font-bold mb-4 flex justify-between">
<div>{props.children}</div>
<div>{props.extra}</div>
</div>
);
});
FullModalCommonTitle.displayName = 'FullModalCommonTitle';

@ -0,0 +1,14 @@
import React from 'react';
import { t } from 'tailchat-shared';
import { ModalWrapper } from '../Modal';
export const ModalCreateGroupPanel: React.FC<{
groupId: string;
}> = React.memo((props) => {
return (
<ModalWrapper title={t('创建群组面板')}>
: {props.groupId}
</ModalWrapper>
);
});
ModalCreateGroupPanel.displayName = 'ModalCreateGroupPanel';

@ -10,6 +10,9 @@ import {
import { Button } from 'antd'; import { Button } from 'antd';
import _isEqual from 'lodash/isEqual'; import _isEqual from 'lodash/isEqual';
import { GroupPanelTree } from './GroupPanelTree'; import { GroupPanelTree } from './GroupPanelTree';
import { FullModalCommonTitle } from '@/components/FullModal/CommonTitle';
import { openModal } from '@/components/Modal';
import { ModalCreateGroupPanel } from '../../CreateGroupPanel';
export const GroupPanel: React.FC<{ export const GroupPanel: React.FC<{
groupId: string; groupId: string;
@ -28,9 +31,30 @@ export const GroupPanel: React.FC<{
showToasts(t('保存成功'), 'success'); showToasts(t('保存成功'), 'success');
}, [editingGroupPanels]); }, [editingGroupPanels]);
const [{ loading: createLoading }, handleCreatePanel] =
useAsyncRequest(async () => {
// TODO
}, []);
const handleOpenCreatePanelModal = useCallback(() => {
openModal(<ModalCreateGroupPanel groupId={groupId} />);
}, [handleCreatePanel]);
return ( return (
<div> <div>
<div className="text-xl font-bold mb-4">{t('面板管理')}</div> <FullModalCommonTitle
extra={
<Button
type="primary"
loading={createLoading}
onClick={handleOpenCreatePanelModal}
>
{t('创建面板')}
</Button>
}
>
{t('面板管理')}
</FullModalCommonTitle>
<GroupPanelTree <GroupPanelTree
groupPanels={editingGroupPanels} groupPanels={editingGroupPanels}

@ -1,5 +1,6 @@
import { Avatar } from '@/components/Avatar'; import { Avatar } from '@/components/Avatar';
import { AvatarUploader } from '@/components/AvatarUploader'; import { AvatarUploader } from '@/components/AvatarUploader';
import { FullModalCommonTitle } from '@/components/FullModal/CommonTitle';
import { import {
DefaultFullModalInputEditorRender, DefaultFullModalInputEditorRender,
FullModalField, FullModalField,
@ -41,21 +42,25 @@ export const GroupSummary: React.FC<{
} }
return ( return (
<div className="flex"> <div>
<div className="w-1/3"> <FullModalCommonTitle>{t('群组概述')}</FullModalCommonTitle>
<AvatarUploader onUploadSuccess={handleGroupAvatarChange}>
<Avatar size={128} name={groupInfo.name} src={groupInfo.avatar} /> <div className="flex">
</AvatarUploader> <div className="w-1/3">
</div> <AvatarUploader onUploadSuccess={handleGroupAvatarChange}>
<Avatar size={128} name={groupInfo.name} src={groupInfo.avatar} />
</AvatarUploader>
</div>
<div className="w-2/3"> <div className="w-2/3">
<FullModalField <FullModalField
title={t('群组名')} title={t('群组名')}
value={groupInfo.name} value={groupInfo.name}
editable={true} editable={true}
renderEditor={DefaultFullModalInputEditorRender} renderEditor={DefaultFullModalInputEditorRender}
onSave={handleUpdateGroupName} onSave={handleUpdateGroupName}
/> />
</div>
</div> </div>
</div> </div>
); );

Loading…
Cancel
Save