@@ -30,31 +30,32 @@ const TeamMembers = ({ team }) => {
30
30
31
31
const filteredMembers = useMemo (
32
32
( ) =>
33
- resources . filter ( ( member ) => {
34
- const filterLowerCase = filter . toLowerCase ( ) ;
35
- const lookupFields = _ . compact ( [
36
- member . handle ,
37
- member . firstName ,
38
- member . lastName ,
39
- member . role ,
40
- ..._ . map ( member . skills , "name" ) ,
41
- ] ) . map ( ( field ) => field . toLowerCase ( ) ) ;
33
+ resources
34
+ // populate resources with job data first
35
+ . map ( ( member ) => ( {
36
+ ...member ,
37
+ job : _ . find ( jobs , { id : member . jobId } ) || { } ,
38
+ } ) )
39
+ // now we can filter resources
40
+ . filter ( ( member ) => {
41
+ const filterLowerCase = filter . toLowerCase ( ) . trim ( ) ;
42
+ const lookupFields = _ . compact ( [
43
+ member . handle ,
44
+ member . firstName ,
45
+ member . lastName ,
46
+ `${ member . firstName } ${ member . lastName } ` , // full name
47
+ member . job . description ,
48
+ ..._ . map ( member . skills , "name" ) ,
49
+ ] ) . map ( ( field ) => field . toLowerCase ( ) ) ;
42
50
43
- return _ . some (
44
- lookupFields ,
45
- ( field ) => field . indexOf ( filterLowerCase ) > - 1
46
- ) ;
47
- } ) ,
48
- [ resources , filter ]
51
+ return _ . some (
52
+ lookupFields ,
53
+ ( field ) => field . indexOf ( filterLowerCase ) > - 1
54
+ ) ;
55
+ } ) ,
56
+ [ resources , filter , jobs ]
49
57
) ;
50
58
51
- const filteredMembersWithJobs = useMemo ( ( ) => {
52
- return filteredMembers . map ( ( member ) => ( {
53
- ...member ,
54
- job : _ . find ( jobs , { id : member . jobId } ) || { } ,
55
- } ) ) ;
56
- } , [ filteredMembers , jobs ] ) ;
57
-
58
59
const onFilterChange = useCallback (
59
60
( event ) => {
60
61
setFilter ( event . target . value ) ;
@@ -76,8 +77,8 @@ const TeamMembers = ({ team }) => {
76
77
const pagesTotal = Math . ceil ( filteredMembers . length / perPage ) ;
77
78
78
79
const pageMembers = useMemo (
79
- ( ) => filteredMembersWithJobs . slice ( ( page - 1 ) * perPage , page * perPage ) ,
80
- [ filteredMembersWithJobs , page , perPage ]
80
+ ( ) => filteredMembers . slice ( ( page - 1 ) * perPage , page * perPage ) ,
81
+ [ filteredMembers , page , perPage ]
81
82
) ;
82
83
83
84
const onPageClick = useCallback (
@@ -101,10 +102,10 @@ const TeamMembers = ({ team }) => {
101
102
}
102
103
/>
103
104
{ resources . length === 0 && < div styleName = "no-members" > No members</ div > }
104
- { resources . length > 0 && filteredMembersWithJobs . length === 0 && (
105
+ { resources . length > 0 && filteredMembers . length === 0 && (
105
106
< div styleName = "no-members" > No members matching filter</ div >
106
107
) }
107
- { filteredMembersWithJobs . length > 0 && (
108
+ { filteredMembers . length > 0 && (
108
109
< div styleName = "table" >
109
110
{ pageMembers . map ( ( member ) => (
110
111
< div styleName = "table-row" key = { member . id } >
@@ -181,15 +182,15 @@ const TeamMembers = ({ team }) => {
181
182
type = "secondary"
182
183
onClick = { showMore }
183
184
disabled = {
184
- filteredMembersWithJobs . length === 0 || // if no members to show
185
+ filteredMembers . length === 0 || // if no members to show
185
186
page === pagesTotal // if we are already on the last page
186
187
}
187
188
>
188
189
Show More
189
190
</ Button >
190
- { filteredMembersWithJobs . length > 0 && (
191
+ { filteredMembers . length > 0 && (
191
192
< Pagination
192
- total = { filteredMembersWithJobs . length }
193
+ total = { filteredMembers . length }
193
194
currentPage = { page }
194
195
perPage = { perPage }
195
196
onPageClick = { onPageClick }
0 commit comments