styling detail modals

This commit is contained in:
Roland Osborne 2024-03-03 22:34:44 -08:00
parent 721b4d35b2
commit e83bd155c4
7 changed files with 69 additions and 34 deletions

View File

@ -162,7 +162,12 @@ export const en = {
fontSize: 'Change Font Size', fontSize: 'Change Font Size',
postMessage: 'Post Message', postMessage: 'Post Message',
close: 'Close',
leave: 'Leave', leave: 'Leave',
confirmTopic: 'Deleting Topic',
sureTopic: 'Are you sure you want to delete this topic?',
confirmLeave: 'Leaving Topic',
sureLeave: 'Are you sure you want to leave this topic?',
}; };
export const fr = { export const fr = {
@ -329,6 +334,11 @@ export const fr = {
fontSize: 'Changer la Taille du Text', fontSize: 'Changer la Taille du Text',
postMessage: 'Publier le Message', postMessage: 'Publier le Message',
leave: 'Partir', close: 'Fermer',
leave: 'Quitter',
confirmTopic: 'Suppression du Sujet',
sureTopic: 'Êtes-Vous Sûr de Vouloir Supprimer ce Sujet?',
confirmLeave: 'Quitter le Suject',
sureLeave: 'Êtes-Vous Sûr de Vouloir Quitter ce Sujet?',
}; };

View File

@ -16,7 +16,7 @@ export function AccountItem({ item, remove }) {
content: <span style={state.menuStyle}>{state.strings.areSure}</span>, content: <span style={state.menuStyle}>{state.strings.areSure}</span>,
icon: <ExclamationCircleOutlined />, icon: <ExclamationCircleOutlined />,
bodyStyle: { borderRadius: 8, padding: 16, ...state.menuStyle }, bodyStyle: { borderRadius: 8, padding: 16, ...state.menuStyle },
okText: state.strings.ok, okText: state.strings.remove,
cancelText: state.strings.cancel, cancelText: state.strings.cancel,
onOk() { onOk() {
applyRemoveAccount(); applyRemoveAccount();

View File

@ -30,14 +30,15 @@ export function SelectItem({ item, select, selected, markup, setItem, clearItem
return ( return (
<SelectItemWrapper onClick={onSelect}> <SelectItemWrapper onClick={onSelect}>
<div class={ state.className }> { state.logoSet && (
<div className={ state.className }>
<Logo url={state.logo} width={32} height={32} radius={8} /> <Logo url={state.logo} width={32} height={32} radius={8} />
<div class="details"> <div className="details">
<div class="name">{ profile?.name }</div> <div className="name">{ profile?.name }</div>
<div class="handle">{ handle() }</div> <div className="handle">{ handle() }</div>
</div> </div>
{ (select || setItem || clearItem) && ( { (select || setItem || clearItem) && (
<div class="switch"> <div className="switch">
<Switch checked={state.selected} onChange={(flag, ev) => onSelect(ev)} size="small" /> <Switch checked={state.selected} onChange={(flag, ev) => onSelect(ev)} size="small" />
</div> </div>
)} )}
@ -47,6 +48,7 @@ export function SelectItem({ item, select, selected, markup, setItem, clearItem
</Tooltip> </Tooltip>
)} )}
</div> </div>
)}
</SelectItemWrapper> </SelectItemWrapper>
); );
} }

View File

@ -5,6 +5,7 @@ export function useSelectItem(item, selected, markup) {
const [state, setState] = useState({ const [state, setState] = useState({
logo: null, logo: null,
logoSet: false,
selected: false, selected: false,
busy: false, busy: false,
className: 'passive', className: 'passive',
@ -30,10 +31,10 @@ export function useSelectItem(item, selected, markup) {
useEffect(() => { useEffect(() => {
const contact = card.state.cards.get(item.id); const contact = card.state.cards.get(item.id);
if (contact?.data?.cardProfile?.imageSet) { if (contact?.data?.cardProfile?.imageSet) {
updateState({ logo: card.actions.getCardImageUrl(item.id) }); updateState({ logoSet: true, logo: card.actions.getCardImageUrl(item.id) });
} }
else { else {
updateState({ logo: null }); updateState({ logoSet: true, logo: null });
} }
}, [card, item]); }, [card, item]);

View File

@ -44,11 +44,12 @@ export function Details({ closeDetails, closeConversation, openContact }) {
const deleteChannel = async () => { const deleteChannel = async () => {
modal.confirm({ modal.confirm({
title: 'Are you sure you want to delete the topic?', title: <span style={state.menuStyle}>{state.strings.confirmTopic}</span>,
content: <span style={state.menuStyle}>{state.strings.sureTopic}</span>,
icon: <ExclamationCircleOutlined />, icon: <ExclamationCircleOutlined />,
bodyStyle: { padding: 16 }, bodyStyle: { borderRadius: 8, padding: 16, ...state.menuStyle },
okText: "Yes, Delete", okText: state.strings.remove,
cancelText: "No, Cancel", cancelText: state.strings.cancel,
onOk() { onOk() {
applyDeleteChannel(); applyDeleteChannel();
}, },
@ -72,11 +73,12 @@ export function Details({ closeDetails, closeConversation, openContact }) {
const leaveChannel = async () => { const leaveChannel = async () => {
modal.confirm({ modal.confirm({
title: 'Are you sure you want to leave the topic?', title: <span style={state.menuStyle}>{state.strings.confirmLeave}</span>,
content: <span style={state.menuStyle}>{state.strings.sureLeave}</span>,
icon: <ExclamationCircleOutlined />, icon: <ExclamationCircleOutlined />,
bodyStyle: { padding: 16 }, bodyStyle: { borderRadius: 8, padding: 16, ...state.menuStyle },
okText: "Yes, Leave", okText: state.strings.leave,
cancelText: "No, Cancel", cancelText: state.strings.cancel,
onOk() { onOk() {
applyLeaveChannel(); applyLeaveChannel();
}, },
@ -228,9 +230,8 @@ export function Details({ closeDetails, closeConversation, openContact }) {
<EditSubject subject={state.editSubject} cancelSubject={actions.clearEditSubject} saveSubject={saveSubject} setSubject={actions.setSubjectUpdate} <EditSubject subject={state.editSubject} cancelSubject={actions.clearEditSubject} saveSubject={saveSubject} setSubject={actions.setSubjectUpdate}
strings={state.strings} /> strings={state.strings} />
</Modal> </Modal>
<Modal title="Edit Members" centered visible={state.showEditMembers} footer={editMembersFooter} <Modal centered visible={state.showEditMembers} closable={false} footer={null} bodyStyle={{borderRadius: 8, padding: 16, ...state.menuStyle}}>
bodyStyle={{ padding: 16 }} onCancel={actions.clearEditMembers}> <EditMembers members={state.editMembers} setMember={setMember} clearMember={clearMember} onClose={actions.clearEditMembers} strings={state.strings} />
<EditMembers members={state.editMembers} setMember={setMember} clearMember={clearMember} />
</Modal> </Modal>
</DetailsWrapper> </DetailsWrapper>
); );

View File

@ -1,11 +1,14 @@
import { EditMembersWrapper } from './EditMembers.styled'; import { EditMembersWrapper } from './EditMembers.styled';
import { CardSelect } from '../../cardSelect/CardSelect'; import { CardSelect } from '../../cardSelect/CardSelect';
import { Button } from 'antd';
export function EditMembers({ members, setMember, clearMember }) { export function EditMembers({ members, setMember, clearMember, onClose, strings }) {
return ( return (
<EditMembersWrapper> <EditMembersWrapper>
<div class="list"> <div className="title">Edit Membership</div>
<div className="list">
<CardSelect <CardSelect
setItem={setMember} setItem={setMember}
clearItem={clearMember} clearItem={clearMember}
@ -13,6 +16,9 @@ export function EditMembers({ members, setMember, clearMember }) {
filter={(card) => card?.data?.cardDetail?.status === 'connected'} filter={(card) => card?.data?.cardDetail?.status === 'connected'}
/> />
</div> </div>
<div className="controls">
<Button key="back" onClick={onClose}>{strings.close}</Button>
</div>
</EditMembersWrapper> </EditMembersWrapper>
); );
} }

View File

@ -12,7 +12,22 @@ export const EditMembersWrapper = styled.div`
min-height: 100px; min-height: 100px;
max-height: 200px; max-height: 200px;
overflow: auto; overflow: auto;
border: 1px solid ${Colors.divider}; border: 1px solid ${props => props.theme.sectionBorder};
background-color: ${props => props.theme.itemArea};
} }
.title {
font-size: 1.2rem;
display: flex;
justify-content: center;
padding-bottom: 16px;
}
.controls {
display: flex;
justify-content: flex-end;
gap: 16px;
padding-top: 16px;
width: 100%;
}
` `