diff --git a/public/locales/en/common.json b/public/locales/en/common.json index 408b1274..d3a9c47f 100644 --- a/public/locales/en/common.json +++ b/public/locales/en/common.json @@ -590,17 +590,17 @@ "HAVE_YOU_RECEIVE_ANY_PRIOR_TRAINING": "Have You Received Any Prior Training?", "WHAT_DO_YOU_WANT_TO_BECOME": "What do you want to become?", "EDUCATIONAL_INSTITUTE": "Educational Institute", - "UNEMPLOYED_OR_DOMESTIC_WORK":"Unemployed or Domestic Work", - "SELF_PLACED":"Self Placed", - "TRANSGENDER":"Transgender", - "HINDI":"Hindi", - "MARATHI":"Marathi", - "URDU":"Urdu", - "DIVORCED/WIDOW":"Divorced/Widow", - "AVAILABLE_SUGGESTIONS":"Available suggestions:", - "USERNAME_ALREADY_EXIST":"This username already exists", - "GRADUATE":"Graduate", - "POST_GRADUATE":"Post Graduate" + "UNEMPLOYED_OR_DOMESTIC_WORK": "Unemployed or Domestic Work", + "SELF_PLACED": "Self Placed", + "TRANSGENDER": "Transgender", + "HINDI": "Hindi", + "MARATHI": "Marathi", + "URDU": "Urdu", + "DIVORCED/WIDOW": "Divorced/Widow", + "AVAILABLE_SUGGESTIONS": "Available suggestions:", + "USERNAME_ALREADY_EXIST": "This username already exists", + "GRADUATE": "Graduate", + "POST_GRADUATE": "Post Graduate" }, "FORM_ERROR_MESSAGES": { "INVALID_INPUT": "Invalid Input.", @@ -622,6 +622,7 @@ "SPACE_AND_SPECIAL_CHARACTERS_NOT_ALLOWED": "Space and special characters are not allowed", "DATE_MUST_BE_ON_OR_BEFORE": "Date must be on or before {{date}}", "DATE_MUST_BE_ON_OR_AFTER": "Date must be on or after {{date}}" + }, "COURSE_PLANNER": { "COURSE_PLANNER": "Curriculum Plan", @@ -740,16 +741,18 @@ "PHONE_NUMBER": "Phone Number", "MENTOR_ID": "Mentor ID", "GENDER": "Gender", - "AGE": "Age" + "AGE": "Age", + "VOLUNTEERING_DETAILS": "Volunteering details", + "MARK_AS_VOLUNTEER": "Mark as Volunteer" }, "YOUTHNET_CAMP_DETAILS": { "SUBMISSION": "Submission", "SUMMARY": "Summary" }, "SURVEYS": { - "SURVEYS" :"Surveys", - "ACTIVE_SURVEYS" :"Active Surveys", - "PREVIOUS_SURVEYS" :"Previous Surveys", - "VILLAGES":"Villages" + "SURVEYS": "Surveys", + "ACTIVE_SURVEYS": "Active Surveys", + "PREVIOUS_SURVEYS": "Previous Surveys", + "VILLAGES": "Villages" } } diff --git a/src/components/youthNet/BottomDrawer.tsx b/src/components/youthNet/BottomDrawer.tsx new file mode 100644 index 00000000..52f3063d --- /dev/null +++ b/src/components/youthNet/BottomDrawer.tsx @@ -0,0 +1,95 @@ +import React from 'react'; +import { Drawer, Box, Typography, Button, Divider } from '@mui/material'; +import SwapHorizIcon from '@mui/icons-material/SwapHoriz'; +import { useTheme } from '@mui/material/styles'; + +interface BottomDrawerProps { + open: boolean; + onClose?: () => void; + title: string; + buttonLabel: string; + onAction: () => void; +} + +const BottomDrawer: React.FC = ({ + open, + onClose, + title, + buttonLabel, + onAction, +}) => { + const theme = useTheme(); + return ( + + + + + + {title} + + + + + ); +}; + +export default BottomDrawer; diff --git a/src/components/youthNet/UserCard.tsx b/src/components/youthNet/UserCard.tsx index 5f29dd49..afab3abb 100644 --- a/src/components/youthNet/UserCard.tsx +++ b/src/components/youthNet/UserCard.tsx @@ -22,7 +22,8 @@ type UserCardProps = { showMore?: boolean; totalCount?: number; newRegistrations?: number; - onClick?: (name: string) => void; // Add onClick prop + onClick?: (name: string) => void; + onToggleClick?: (name: string) => void; }; const UserCard: React.FC = ({ @@ -37,24 +38,22 @@ const UserCard: React.FC = ({ totalCount, newRegistrations, onClick, + onToggleClick, }) => { const theme = useTheme(); return ( onClick && onClick(name)} > {showAvtar && ( @@ -87,12 +86,14 @@ const UserCard: React.FC = ({ > onClick?.(name)} > {name} @@ -148,6 +149,7 @@ const UserCard: React.FC = ({ color: theme.palette.warning['300'], cursor: 'pointer', }} + onClick={() => onToggleClick?.(name)} /> )} @@ -159,14 +161,16 @@ const UserCard: React.FC = ({ type UserListProps = { users: UserCardProps[]; - layout?: 'list' | 'grid'; // Added layout prop - onUserClick?: (name: string) => void; // Add onUserClick prop + layout?: 'list' | 'grid'; + onUserClick?: (name: string) => void; + onToggleUserClick?: (name: string) => void; }; export const UserList: React.FC = ({ users, layout = 'grid', - onUserClick, // Receive onUserClick prop + onUserClick, + onToggleUserClick, }) => { return layout === 'grid' ? ( @@ -180,8 +184,11 @@ export const UserList: React.FC = ({ md={user.totalCount ? 12 : 6} lg={user.totalCount ? 12 : 4} > - {' '} - {/* Pass onUserClick */} + {' '} {index < users.length - 1 && } @@ -192,7 +199,11 @@ export const UserList: React.FC = ({ {users.map((user, index) => ( - + {index < users.length - 1 && } ))} diff --git a/src/components/youthNet/VillageDetailCard.tsx b/src/components/youthNet/VillageDetailCard.tsx index cab90915..1ab7754a 100644 --- a/src/components/youthNet/VillageDetailCard.tsx +++ b/src/components/youthNet/VillageDetailCard.tsx @@ -19,7 +19,6 @@ const VillageDetailCard: React.FC = ({ border: `1px solid ${theme.palette.warning['A100']}`, bgcolor: theme.palette.warning['800'], padding: '12px', - margin: '20px', borderRadius: '16px', height: '64px', diff --git a/src/components/youthNet/tempConfigs.ts b/src/components/youthNet/tempConfigs.ts index 4809cb3b..c45bce27 100644 --- a/src/components/youthNet/tempConfigs.ts +++ b/src/components/youthNet/tempConfigs.ts @@ -212,6 +212,7 @@ export const youthList = [ age: 14, joinOn: 'Join on 15 Jan, 2025', image: '', + showMore: true, showAvtar: true, }, { @@ -219,6 +220,7 @@ export const youthList = [ age: 17, joinOn: 'Join on 15 Jan, 2025', image: '', + showMore: true, showAvtar: true, }, ]; diff --git a/src/pages/youthboard/villages/index.tsx b/src/pages/youthboard/villages/index.tsx index a8d89fda..23aacb42 100644 --- a/src/pages/youthboard/villages/index.tsx +++ b/src/pages/youthboard/villages/index.tsx @@ -21,6 +21,7 @@ import withRole from '@/components/withRole'; import { TENANT_DATA } from '../../../../app.config'; import Dropdown from '@/components/youthNet/DropDown'; import { useRouter } from 'next/router'; +import BottomDrawer from '@/components/youthNet/BottomDrawer'; const Index = () => { const { t } = useTranslation(); @@ -28,6 +29,8 @@ const Index = () => { const router = useRouter(); const [value, setValue] = useState(1); const [searchInput, setSearchInput] = useState(''); + const [toggledUser, setToggledUser] = useState(''); + const [openDrawer, setOpenDrawer] = useState(false); const handleChange = (event: React.SyntheticEvent, newValue: number) => { setValue(newValue); @@ -35,7 +38,22 @@ const Index = () => { const handleUserClick = (name: any) => { console.log('Clicked user:', name); - router.push(`/youthboard/student/${name}`); + router.push(`/youthboard/volunteer-profile/${name}`); + }; + + const handleToggledUserClick = (name: any) => { + console.log('Toggled user:', name); + setToggledUser(name); + setOpenDrawer((prev) => !prev); + }; + + const handleMarkAsVolunteer = () => { + console.log('Marked as Volunteer'); + setOpenDrawer(false); + }; + + const handleToggleClose = () => { + setOpenDrawer(false); }; return ( @@ -51,7 +69,7 @@ const Index = () => { { {value === 1 && ( <> - {/* */} { sx={{ pr: '20px', }} - // justifyContent={'space-around'} > { layout="list" users={youthList} onUserClick={handleUserClick} + onToggleUserClick={handleToggledUserClick} /> + )} diff --git a/src/pages/youthboard/student/[id].tsx b/src/pages/youthboard/volunteer-profile/[id].tsx similarity index 64% rename from src/pages/youthboard/student/[id].tsx rename to src/pages/youthboard/volunteer-profile/[id].tsx index 76cd0d29..e7753372 100644 --- a/src/pages/youthboard/student/[id].tsx +++ b/src/pages/youthboard/volunteer-profile/[id].tsx @@ -7,12 +7,16 @@ import { useTranslation } from 'react-i18next'; import { GetStaticPaths } from 'next'; import Header from '@/components/Header'; import BackHeader from '@/components/youthNet/BackHeader'; -import { Box, Typography } from '@mui/material'; +import { Box, Button, Typography } from '@mui/material'; +import EditIcon from '@mui/icons-material/Edit'; import { UserList } from '@/components/youthNet/UserCard'; import Profile from '@/components/youthNet/Profile'; import { useTheme } from '@mui/material/styles'; +import { VILLAGE_DATA } from '@/components/youthNet/tempConfigs'; +import VillageDetailCard from '@/components/youthNet/VillageDetailCard'; +import Frame2 from '../../../assets/images/SurveyFrame2.png'; -const StudentDetails = () => { +const VolunteerDetails = () => { const theme = useTheme(); const { t } = useTranslation(); const router = useRouter(); @@ -55,6 +59,29 @@ const StudentDetails = () => { /> + + + {t('YOUTHNET_PROFILE.VOLUNTEERING_DETAILS')} + + + + + { > {t('YOUTHNET_PROFILE.PROFILE_DETAILS')} + @@ -93,4 +137,4 @@ export const getStaticPaths: GetStaticPaths<{ slug: string }> = async () => { }; }; -export default withRole(TENANT_DATA.YOUTHNET)(StudentDetails); +export default withRole(TENANT_DATA.YOUTHNET)(VolunteerDetails);