Skip to content

Commit d1a8d3d

Browse files
Merge pull request #4829 from OneCommunityGlobal/Akshay-Add-search-to-communityPortal-Activity-Resources
Akshay - Add - user search functionality to communityportal/activity/{id}/resources
2 parents 3bbaf38 + 59af406 commit d1a8d3d

2 files changed

Lines changed: 74 additions & 33 deletions

File tree

src/components/ResourceManagement/ResourceManagement.jsx

Lines changed: 57 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
import { useState } from 'react';
1+
import { useState, useEffect } from 'react';
22
import { useSelector } from 'react-redux';
33
import styles from './ResourceManagement.module.css';
44
import { formatDateTimeLocal } from '../../utils/formatDate';
55

6-
function SearchBar() {
6+
function SearchBar({ searchTerm, onSearchChange, onClear }) {
77
return (
88
<div className={styles.searchBarContainer}>
99
<div className={styles.searchBarContainerLeft}>
@@ -12,10 +12,18 @@ function SearchBar() {
1212
<span className={styles.iconToggle}></span>
1313
</div>
1414
<div className={styles.searchBarContainerRight}>
15-
<input type="text" className={styles.searchInput} placeholder="Search" />
16-
<button type="button" className={styles.searchButton}>
17-
Search
18-
</button>
15+
<input
16+
type="text"
17+
className={styles.searchInput}
18+
placeholder="Search by User"
19+
value={searchTerm}
20+
onChange={onSearchChange}
21+
/>
22+
{searchTerm && (
23+
<button type="button" className={styles.clearButton} onClick={onClear}>
24+
25+
</button>
26+
)}
1927
</div>
2028
</div>
2129
);
@@ -37,38 +45,52 @@ function ResourceManagement() {
3745
},
3846
{
3947
id: 2,
40-
user: 'First Last',
48+
user: 'Test Last',
4149
timeDuration: '02:20:00',
4250
facilities: 'CRM Admin pages',
4351
materials: 'Larry San Francisco',
4452
date: '2026-01-30T17:59:00.000Z',
4553
},
4654
{
4755
id: 3,
48-
user: 'First Last',
56+
user: 'Lorem ipsum',
4957
timeDuration: '03:00:00',
5058
facilities: 'Client Project',
5159
materials: 'Bagwell Avenue Ocala',
5260
date: '2026-01-30T17:00:00.000Z',
5361
},
5462
{
5563
id: 4,
56-
user: 'First Last',
64+
user: 'Dolor Sit',
5765
timeDuration: '02:45:00',
5866
facilities: 'Admin Dashboard',
5967
materials: 'Washburn Baton Rouge',
6068
date: '2026-01-29T17:00:00.000Z',
6169
},
6270
{
6371
id: 5,
64-
user: 'First Last',
72+
user: 'Elit Quisque',
6573
timeDuration: '03:30:00',
6674
facilities: 'App Landing page',
6775
materials: 'Nest Lane Olivette',
6876
date: '2025-02-02T17:00:00.000Z',
6977
},
7078
]);
7179

80+
const [searchTerm, setSearchTerm] = useState(() => localStorage.getItem('resourceSearch') || '');
81+
82+
useEffect(() => {
83+
localStorage.setItem('resourceSearch', searchTerm);
84+
}, [searchTerm]);
85+
86+
const handleSearchChange = e => {
87+
setSearchTerm(e.target.value);
88+
};
89+
90+
const filteredResources = resources.filter(resource =>
91+
resource.user.toLowerCase().includes(searchTerm.toLowerCase()),
92+
);
93+
7294
return (
7395
<div
7496
className={`${styles.resourceManagementPage} ${
@@ -82,7 +104,11 @@ function ResourceManagement() {
82104
</button>
83105
</div>
84106

85-
<SearchBar />
107+
<SearchBar
108+
searchTerm={searchTerm}
109+
onSearchChange={handleSearchChange}
110+
onClear={() => setSearchTerm('')}
111+
/>
86112

87113
<div className={styles.resourceList}>
88114
<div className={styles.resourceHeading}>
@@ -97,23 +123,28 @@ function ResourceManagement() {
97123
</div>
98124
<hr className={styles.lineSperator} />
99125

100-
{resources.map(resource => (
101-
<div key={resource.id}>
102-
<div className={styles.resourceItem}>
103-
<div className={styles.checkboxContainer}>
104-
<input type="checkbox" />
105-
</div>
106-
<div className={styles.resourceItemDetail}>{resource.user}</div>
107-
<div className={styles.resourceItemDetail}>{resource.timeDuration}</div>
108-
<div className={styles.resourceItemDetail}>{resource.facilities}</div>
109-
<div className={styles.resourceItemDetail}>{resource.materials}</div>
110-
<div className={styles.resourceItemDetail}>
111-
<span className={styles.calendarIcon}>📅</span> {formatDateTimeLocal(resource.date)}
126+
{filteredResources.length === 0 ? (
127+
<div className={styles.noResultsMessage}>No user found</div>
128+
) : (
129+
filteredResources.map(resource => (
130+
<div key={resource.id}>
131+
<div className={styles.resourceItem}>
132+
<div className={styles.checkboxContainer}>
133+
<input type="checkbox" />
134+
</div>
135+
<div className={styles.resourceItemDetail}>{resource.user}</div>
136+
<div className={styles.resourceItemDetail}>{resource.timeDuration}</div>
137+
<div className={styles.resourceItemDetail}>{resource.facilities}</div>
138+
<div className={styles.resourceItemDetail}>{resource.materials}</div>
139+
<div className={styles.resourceItemDetail}>
140+
<span className={styles.calendarIcon}>📅</span>{' '}
141+
{formatDateTimeLocal(resource.date)}
142+
</div>
112143
</div>
144+
<hr className={styles.lineSperator} />
113145
</div>
114-
<hr className={styles.lineSperator} />
115-
</div>
116-
))}
146+
))
147+
)}
117148
</div>
118149

119150
<div className={styles.pagination}>

src/components/ResourceManagement/ResourceManagement.module.css

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,7 @@
9999

100100
.searchBarContainerRight {
101101
display: flex;
102+
position: relative;
102103
gap: 10px;
103104
}
104105

@@ -114,17 +115,21 @@
114115
color: var(--table-header-color);
115116
}
116117

117-
.searchButton {
118-
background-color: #006FE6;
119-
color: white !important;
118+
.clearButton {
119+
position: absolute;
120+
top: 10px;
121+
right: 8px;
122+
background: transparent;
120123
border: none;
121-
padding: 5px 10px;
122-
border-radius: 5px;
123124
cursor: pointer;
125+
font-size: 16px;
126+
color: var(--table-header-color);
127+
padding: 0;
128+
line-height: 1;
124129
}
125130

126-
.searchButton:hover {
127-
background-color: #0056b3;
131+
.clearButton:hover {
132+
color: var(--text-color);
128133
}
129134

130135
/* ==========================================
@@ -177,6 +182,11 @@
177182
margin: 0;
178183
}
179184

185+
.noResultsMessage{
186+
text-align: center;
187+
margin-top: 20px;
188+
}
189+
180190
/* ==========================================
181191
6) Pagination
182192
========================================== */

0 commit comments

Comments
 (0)