import React, { useState, useEffect, useReducer } from 'react'; import { BrowserRouter as Router, Switch, Route, Link, useParams } from 'react-router-dom'; import './light.css'; import { Button, Container, Divider, Dropdown, Form, Grid, Header, Icon, Image, Input, Item, Menu, Message, Segment, Table } from 'semantic-ui-react'; import { statusColor, isAdmin, BasicTable, staticUrl, requester } from './utils.js'; import { NotFound, PleaseLogin } from './Misc.js'; import { AdminMemberInfo, AdminMemberPause, AdminMemberForm, AdminMemberCards } from './AdminMembers.js'; import { AdminMemberTransactions } from './AdminTransactions.js'; export function MembersDropdown(props) { const { token, name, onChange, value, initial } = props; const [response, setResponse] = useState({ results: [] }); const searchDefault = {seq: 0, q: initial || ''}; const [search, setSearch] = useState(searchDefault); useEffect(() => { requester('/search/', 'POST', token, search) .then(res => { if (!search.seq || res.seq > response.seq) { setResponse(res); } }) .catch(err => { console.log(err); }); }, [search]); const options = response.results.map((x, i) => ({ key: x.member.id, value: x.member.id, text: x.member.preferred_name + ' ' + x.member.last_name, image: { avatar: true, src: x.member.photo_small ? staticUrl + '/' + x.member.photo_small : '/nophoto.png' }, })); return ( setSearch({seq: parseInt(e.timeStamp), q: v.searchQuery})} /> ); }; let searchCache = ''; export function Members(props) { const [response, setResponse] = useState(false); const searchDefault = {seq: 0, q: searchCache}; const [search, setSearch] = useState(searchDefault); const { token } = props; useEffect(() => { searchCache = search.q; requester('/search/', 'POST', token, search) .then(res => { if (!search.seq || res.seq > response.seq) { setResponse(res); } }) .catch(err => { console.log(err); }); }, [search]); return (
Member List

Search by name or email:

setSearch({seq: parseInt(e.timeStamp), q: v.value})} aria-label='search products' style={{ marginRight: '0.5rem' }} /> {search.q.length ?