WatchList.tsx 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. import { Button, List } from "antd";
  2. import { DeleteOutlined } from "@ant-design/icons";
  3. import User, { type IUser } from "../auth/User";
  4. import { useState } from "react";
  5. interface IWidget {
  6. data?: IUser[];
  7. onDelete?: ((user: IUser) => Promise<boolean | void>) | undefined;
  8. }
  9. const WatchList = ({ data, onDelete }: IWidget) => {
  10. const [del, setDel] = useState<string>();
  11. return (
  12. <List
  13. dataSource={data}
  14. renderItem={(item) => (
  15. <List.Item
  16. extra={[
  17. <Button
  18. type="text"
  19. danger
  20. loading={item.id === del}
  21. icon={<DeleteOutlined />}
  22. onClick={() => {
  23. console.debug("delete", item);
  24. if (typeof onDelete !== "undefined") {
  25. console.debug("delete", item);
  26. setDel(item.id);
  27. onDelete(item).finally(() => {
  28. setDel(undefined);
  29. });
  30. }
  31. }}
  32. />,
  33. ]}
  34. >
  35. <User {...item} />
  36. </List.Item>
  37. )}
  38. />
  39. );
  40. };
  41. export default WatchList;