Skip to content

Commit a5c41e6

Browse files
Merge pull request #4813 from OneCommunityGlobal/aayush_create_new_page_error
Aayush create new page error
2 parents 7d19362 + cf50a87 commit a5c41e6

3 files changed

Lines changed: 85 additions & 48 deletions

File tree

src/actions/userManagement.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -369,11 +369,11 @@ export const getUserProfileBasicInfo = ({ userId, source } = {}) => {
369369
// API request to fetch basic user profile information
370370
let userProfileBasicInfoPromise;
371371
if (userId)
372-
userProfileBasicInfoPromise = axios.get(`${ENDPOINTS.USER_PROFILE_BASIC_INFO}?userId=${userId}`);
372+
userProfileBasicInfoPromise = axios.get(ENDPOINTS.USER_PROFILE(userId));
373373
else if (source)
374374
userProfileBasicInfoPromise = axios.get(ENDPOINTS.USER_PROFILE_BASIC_INFO(source));
375375
else
376-
userProfileBasicInfoPromise = axios.get(ENDPOINTS.USER_PROFILE_BASIC_INFO);
376+
userProfileBasicInfoPromise = axios.get(ENDPOINTS.USER_PROFILES);
377377

378378
return async dispatch => {
379379
// Dispatch action indicating the start of the fetch process

src/components/BMDashboard/Team/CreateNewTeam/CreateNewTeam.jsx

Lines changed: 78 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import Joi from 'joi';
55
import { boxStyle } from '../../../../styles';
66
import styles from './CreateNewTeam.module.css';
77
import { getUserProfileBasicInfo } from '../../../../actions/userManagement';
8+
import { toast } from 'react-toastify';
89

910
const initialFormState = {
1011
teamName: '',
@@ -23,8 +24,8 @@ export default function CreateNewTeam() {
2324
const [selectedMember, setSelectedMember] = useState('');
2425
const [selectedTask, setSelectedTask] = useState('');
2526
const [members, setMembers] = useState([]);
26-
// const [tasks, setTasks] = useState([]);
27-
const [tasks] = useState([]);
27+
const [tasks, setTasks] = useState([]);
28+
//const [tasks] = useState([]);
2829
const [assignedMembers, setAssignedMembers] = useState([]);
2930
const [assignedTasks, setAssignedTasks] = useState([]);
3031
const [errorMessage, setErrorMessage] = useState('');
@@ -36,13 +37,26 @@ export default function CreateNewTeam() {
3637
additionalInformation: false,
3738
});
3839

40+
const user = useSelector(state => state.auth.user);
41+
42+
const dummyTasks = ['Task 1', 'Task 2', 'Task 3', 'Task 4', 'Task 5'];
43+
44+
const [loadingMembers, setLoadingMembers] = useState(false);
3945
useEffect(() => {
40-
dispatch(getUserProfileBasicInfo());
46+
setLoadingMembers(true);
47+
const result = dispatch(getUserProfileBasicInfo());
48+
// If the action returns a promise (thunk), handle it
49+
if (result && typeof result.then === 'function') {
50+
result.finally(() => setLoadingMembers(false));
51+
} else {
52+
setLoadingMembers(false);
53+
}
54+
tasks.length === 0 && setTasks(dummyTasks);
4155
}, [dispatch]);
4256

4357
useEffect(() => {
44-
setMembers(userProfilesBasicInfo);
45-
}, []);
58+
setMembers(userProfilesBasicInfo || []);
59+
}, [userProfilesBasicInfo]);
4660

4761
const validationObj = {
4862
additionalInformation: Joi.string()
@@ -63,7 +77,7 @@ export default function CreateNewTeam() {
6377
errorMessages[detail.path[0]] = detail.message;
6478
});
6579
}
66-
if (assignedMembers.length === 0) {
80+
if ((!data.teamMembers || data.teamMembers.length === 0) && assignedMembers.length === 0) {
6781
errorMessages.assignedMembers = 'You must assign at least one member.';
6882
} else {
6983
// Clear the assignedMembers error if members have been added
@@ -118,6 +132,8 @@ export default function CreateNewTeam() {
118132
// eslint-disable-next-line no-console
119133
console.log('Form Submitted:', updatedFormData);
120134

135+
toast.success('Team created successfully!');
136+
121137
setSelectedMember('');
122138
setAssignedMembers([]);
123139
setSelectedTask('');
@@ -138,6 +154,7 @@ export default function CreateNewTeam() {
138154
setAssignedTasks([]);
139155
setFormData(initialFormState);
140156
setErrors({});
157+
setErrorMessage('');
141158
setTouchedFields({
142159
teamName: false,
143160
assignedMembers: false,
@@ -202,6 +219,7 @@ export default function CreateNewTeam() {
202219
if (selectedTask && !assignedTasks.includes(selectedTask)) {
203220
setAssignedTasks([...assignedTasks, selectedTask]);
204221
setSelectedTask('');
222+
setTaskErrorMessage('');
205223
}
206224
};
207225

@@ -218,7 +236,7 @@ export default function CreateNewTeam() {
218236
</header>
219237

220238
<Form className={`${styles.addTeamForm} container`} onSubmit={handleSubmit}>
221-
<FormGroup>
239+
<FormGroup style={{ marginTop: '1.5rem', marginBottom: 0 }}>
222240
<Label for="teamName">
223241
Team Name<span className={`${styles.fieldRequired}`}>*</span>
224242
</Label>
@@ -237,26 +255,36 @@ export default function CreateNewTeam() {
237255
</Label>
238256
)}
239257
</FormGroup>
240-
<FormGroup>
258+
<FormGroup style={{ marginTop: '1.5rem', marginBottom: 0 }}>
241259
<Label for="member-select">
242260
Add Members<span className={`${styles.fieldRequired}`}>*</span>
243261
</Label>
244262
<div className={`${styles.selectContainer}`}>
245-
<Input
246-
id="members-select"
247-
type="select"
248-
value={selectedMember}
249-
onChange={handleMemberChange}
250-
className={`${styles.memberDropdown}`}
251-
>
252-
<option value="">Select a Member</option>
253-
{members.map((user, index) => (
254-
// eslint-disable-next-line react/no-array-index-key
255-
<option key={index} value={user.id}>
256-
{user.firstName} {user.lastName}
257-
</option>
258-
))}
259-
</Input>
263+
{loadingMembers ? (
264+
<div style={{ padding: '0.5rem' }}>Loading members...</div>
265+
) : (
266+
<Input
267+
id="members-select"
268+
type="select"
269+
value={selectedMember}
270+
onChange={handleMemberChange}
271+
className={`${styles.memberDropdown}`}
272+
>
273+
{Array.isArray(members) && members.length > 0 ? (
274+
<>
275+
<option value="">Select a Member</option>
276+
{members.map((user, index) => (
277+
// eslint-disable-next-line react/no-array-index-key
278+
<option key={index} value={user.id}>
279+
{user.firstName} {user.lastName}
280+
</option>
281+
))}
282+
</>
283+
) : (
284+
<option value="">No members available</option>
285+
)}
286+
</Input>
287+
)}
260288
<Button
261289
onClick={handleAddMember}
262290
// disabled={!selectedMember || isMemberAssigned}
@@ -278,7 +306,9 @@ export default function CreateNewTeam() {
278306
</FormGroup>
279307
<div>
280308
{assignedMembers.length > 0 && (
281-
<p className={styles.label}>Currently Assigned Members:</p>
309+
<label htmlFor="assigned-members" className={styles.label}>
310+
Currently Assigned Members:
311+
</label>
282312
)}
283313
<div className={`${styles.badgeContainer}`}>
284314
{assignedMembers.map((member, index) => {
@@ -302,17 +332,23 @@ export default function CreateNewTeam() {
302332
})}
303333
</div>
304334
</div>
305-
<FormGroup>
335+
<FormGroup style={{ marginTop: '1.5rem', marginBottom: 0 }}>
306336
<Label for="task-select">Add Main Tasks</Label>
307337
<div className={`${styles.selectContainer}`}>
308338
<Input id="tasks-select" type="select" value={selectedTask} onChange={handleTaskChange}>
309-
<option value="">Select a Task</option>
310-
{tasks.map((task, index) => (
311-
// eslint-disable-next-line react/no-array-index-key
312-
<option key={index} value={task.id}>
313-
{task}
314-
</option>
315-
))}
339+
{Array.isArray(tasks) && tasks.length > 0 ? (
340+
<>
341+
<option value="">Select a Task</option>
342+
{tasks.map((task, index) => (
343+
// eslint-disable-next-line react/no-array-index-key
344+
<option key={index} value={task.id}>
345+
{task}
346+
</option>
347+
))}
348+
</>
349+
) : (
350+
<option value="">No tasks available</option>
351+
)}
316352
</Input>
317353
<Button
318354
onClick={handleAddTask}
@@ -322,7 +358,7 @@ export default function CreateNewTeam() {
322358
Add
323359
</Button>
324360
</div>
325-
{errorMessage && (
361+
{taskErrorMessage && (
326362
<Label className={`${styles.teamFormError}`} style={{ color: 'red' }}>
327363
{taskErrorMessage}
328364
</Label>
@@ -331,7 +367,9 @@ export default function CreateNewTeam() {
331367

332368
<div>
333369
{assignedTasks.length > 0 && (
334-
<label htmlFor="assigned-tasks">Currently Assigned Tasks:</label>
370+
<label htmlFor="assigned-tasks" className={styles.label}>
371+
Currently Assigned Tasks:
372+
</label>
335373
)}
336374
<div className={`${styles.badgeContainer}`}>
337375
{assignedTasks.map((task, index) => {
@@ -342,11 +380,9 @@ export default function CreateNewTeam() {
342380
<span
343381
role="button"
344382
tabIndex={0}
345-
onClick={() => handleRemoveMember(member)}
346-
onKeyDown={e =>
347-
(e.key === 'Enter' || e.key === ' ') && handleRemoveMember(member)
348-
}
349-
aria-label={`Remove member ${member}`}
383+
onClick={() => handleRemoveTask(task)}
384+
onKeyDown={e => (e.key === 'Enter' || e.key === ' ') && handleRemoveTask(task)}
385+
aria-label={`Remove task ${task}`}
350386
>
351387
X
352388
</span>
@@ -355,7 +391,7 @@ export default function CreateNewTeam() {
355391
})}
356392
</div>
357393
</div>
358-
<FormGroup>
394+
<FormGroup style={{ marginTop: '1.5rem', marginBottom: 0 }}>
359395
<Label for="additional-information-label">Additional Information</Label>
360396
<Input
361397
type="textarea"
@@ -373,10 +409,10 @@ export default function CreateNewTeam() {
373409
)}
374410
</FormGroup>
375411
<div className={`${styles.addTeamButtons}`}>
376-
<Button id="cancel-button" outline style={boxStyle} onClick={handleCancelClick}>
412+
<Button id="cancel-button" style={boxStyle} onClick={handleCancelClick}>
377413
Cancel
378414
</Button>
379-
<Button id="submit-button" style={boxStyle}>
415+
<Button id="submit-button" style={boxStyle} onClick={handleSubmit}>
380416
Submit
381417
</Button>
382418
</div>

src/components/BMDashboard/Team/CreateNewTeam/CreateNewTeam.module.css

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -60,16 +60,17 @@
6060
border-color: #e53935;
6161
}
6262

63-
.teamFormError {
63+
.addTeamForm .teamFormError {
6464
font-weight: 500;
6565
font-size: 11px !important;
66-
color: red;
66+
color: red !important;
6767
display: flex;
6868
justify-content: flex-start;
69+
padding-left: 0;
6970
}
7071

71-
.fieldRequired{
72-
color: red;
72+
.addTeamForm .fieldRequired{
73+
color: red !important;
7374
}
7475

7576
.addTeamContainer{

0 commit comments

Comments
 (0)