From 3b98fc4de3026bcbd2e2fb919672276b43dfe33e Mon Sep 17 00:00:00 2001 From: CrescentLeaf Date: Sat, 20 Sep 2025 18:14:52 +0800 Subject: [PATCH] =?UTF-8?q?feat(wip):=20=E5=A4=9A=E9=81=B8=E8=81=AF?= =?UTF-8?q?=E7=B5=A1=E4=BA=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- client/ui/main/ContactsList.tsx | 19 ++++++++++++++++--- client/ui/main/ContactsListItem.tsx | 7 ++++--- 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/client/ui/main/ContactsList.tsx b/client/ui/main/ContactsList.tsx index e29a7f3..6364550 100644 --- a/client/ui/main/ContactsList.tsx +++ b/client/ui/main/ContactsList.tsx @@ -2,7 +2,7 @@ import React from "react" import User from "../../api/client_data/User.ts" import ContactsListItem from "./ContactsListItem.tsx" import useEventListener from "../useEventListener.ts" -import { TextField } from "mdui"; +import { ListItem, TextField } from "mdui" interface Args extends React.HTMLAttributes { contactsList: User[] @@ -19,6 +19,7 @@ export default function ContactsList({ ...props }: Args) { const searchRef = React.useRef(null) + const [isMultiSelecting, setIsMultiSelecting] = React.useState(false) const [searchText, setSearchText] = React.useState('') useEventListener(searchRef, 'input', (e) => { @@ -32,7 +33,7 @@ export default function ContactsList({ display: display ? undefined : 'none', height: '100%', }} {...props}> - @@ -41,6 +42,11 @@ export default function ContactsList({ marginTop: '13px', marginBottom: '15px', }} icon="person_add">添加聯絡人 + {/* setIsMultiSelecting(!isMultiSelecting)}>{ isMultiSelecting ? "關閉多選" : "多選模式" } */} + { contactsList.filter((user) => searchText == '' || @@ -49,7 +55,14 @@ export default function ContactsList({ user.username?.includes(searchText) ).map((v) => { + const self = (e.target as ListItem) + if (isMultiSelecting) + self.active = !self.active + else + void(0) + }} */ key={v.id} contact={v} /> ) diff --git a/client/ui/main/ContactsListItem.tsx b/client/ui/main/ContactsListItem.tsx index 353ebee..5568351 100644 --- a/client/ui/main/ContactsListItem.tsx +++ b/client/ui/main/ContactsListItem.tsx @@ -1,13 +1,14 @@ +import { ListItem } from "mdui"; import User from "../../api/client_data/User.ts" import Avatar from "../Avatar.tsx" import React from 'react' interface Args extends React.HTMLAttributes { contact: User - openChatFragment: (id: string) => void + active?: boolean } -export default function ContactsListItem({ contact, openChatFragment }: Args) { +export default function ContactsListItem({ contact, ...prop }: Args) { const { id, nickname, avatar } = contact const ref = React.useRef(null) @@ -16,7 +17,7 @@ export default function ContactsListItem({ contact, openChatFragment }: Args) { marginTop: '3px', marginBottom: '3px', width: '100%', - }} onClick={() => openChatFragment(id)}> + }} {...prop as any}> {nickname}