Proyectos de Subversion LeadersLinked - SPA

Rev

Rev 3617 | Ir a la última revisión | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
3610 stevensc 1
import React, { useMemo, useState } from 'react';
3580 stevensc 2
 
3618 stevensc 3
import { Card, CardContent, CardHeader, List, Menu, SearchBar } from '@shared/components';
3580 stevensc 4
import { ConversationItem } from './ConversationItem';
5
 
3610 stevensc 6
export const ConversationsList = ({
7
  conversations = [],
8
  onSelectConversation,
9
  onStartConversation
10
}) => {
11
  const [search, setSearch] = useState('');
12
 
13
  const filteredConversations = useMemo(() => {
14
    return conversations.filter((conversation) =>
15
      conversation.name.toLowerCase().includes(search.toLowerCase())
16
    );
17
  }, [conversations, search]);
18
 
3580 stevensc 19
  return (
20
    <Card>
3616 stevensc 21
      <CardHeader
22
        title='Conversaciones'
23
        renderAction={() => (
24
          <Menu>
3618 stevensc 25
            <Menu.Item onClick={onStartConversation}>Iniciar conversación</Menu.Item>
3616 stevensc 26
          </Menu>
27
        )}
28
      />
29
      <CardContent styles={{ display: 'flex', flexDirection: 'column', gap: 1 }}>
3610 stevensc 30
        <SearchBar placeholder='Buscar conversación' onChange={setSearch} />
3580 stevensc 31
        <List
3616 stevensc 32
          styles={{ maxHeight: '400px', overflow: 'auto' }}
3610 stevensc 33
          items={filteredConversations}
3580 stevensc 34
          keyExtractor={(item) => item.uuid}
35
          emptyMessage='No hay conversaciones'
36
          renderItem={(conversation) => (
37
            <ConversationItem
38
              conversation={conversation}
39
              onSelectConversation={onSelectConversation}
40
            />
41
          )}
42
        />
43
      </CardContent>
44
    </Card>
45
  );
46
};