| 86 | } |
| 87 | |
| 88 | function TableMembers({ |
| 89 | users, |
| 90 | onChangeMember, |
| 91 | onDeleteMember, |
| 92 | }: { |
| 93 | users: MembersType[]; |
| 94 | onChangeMember: (id: string, role: string, status: string) => Promise<void>; |
| 95 | onDeleteMember: (user: MembersType) => Promise<void>; |
| 96 | }) { |
| 97 | function filterByEmail(e: any) { |
| 98 | const filter = e.target.value.toLowerCase(); |
| 99 | const ul = document.getElementById('memberList'); |
| 100 | if (!ul) return; |
| 101 | const li = ul.getElementsByTagName('li'); |
| 102 | if (!li) return; |
| 103 | for (let i = 0; i < li.length; i++) { |
| 104 | let p = li[i].getElementsByTagName('p')[0]; |
| 105 | if (p) { |
| 106 | let txtValue = p.textContent || p.innerText; |
| 107 | if (txtValue.toLowerCase().indexOf(filter) > -1) { |
| 108 | li[i].style.display = ''; |
| 109 | } else { |
| 110 | li[i].style.display = 'none'; |
| 111 | } |
| 112 | } |
| 113 | } |
| 114 | } |
| 115 | |
| 116 | return ( |
| 117 | <> |
| 118 | <div className={styles.flexPt4}> |
| 119 | <div className={styles.growMb2}> |
| 120 | <TextInput |
| 121 | id="filterByEmail" |
| 122 | label="Search" |
| 123 | onKeyUp={filterByEmail} |
| 124 | /> |
| 125 | </div> |
| 126 | </div> |
| 127 | <ul role="list" id="memberList" className={styles.flexColGap0}> |
| 128 | {users?.map((user) => ( |
| 129 | <RowMember |
| 130 | user={user} |
| 131 | onChangeMember={onChangeMember} |
| 132 | onDeleteMember={onDeleteMember} |
| 133 | key={user.id} |
| 134 | /> |
| 135 | ))} |
| 136 | </ul> |
| 137 | </> |
| 138 | ); |
| 139 | } |
| 140 | |
| 141 | function RowMember({ |
| 142 | user, |