diff --git a/jobs.json b/jobs.json new file mode 100644 index 0000000..f2ae48d --- /dev/null +++ b/jobs.json @@ -0,0 +1,19 @@ +{ + "posts": [ + { + "id": 1, + "title": "json-server", + "author": "typicode" + } + ], + "comments": [ + { + "id": 1, + "body": "some comment", + "postId": 1 + } + ], + "profile": { + "name": "typicode" + } +} \ No newline at end of file diff --git a/src/App.js b/src/App.js index bd3377b..5b5ceb1 100644 --- a/src/App.js +++ b/src/App.js @@ -1,5 +1,5 @@ import './App.css'; -import { SearchResults } from './Components/Search_Results/SearchResults'; +// import { SearchResults } from './Components/Search_Results/SearchResults'; import { BrowserRouter as Router, Route, Link, Switch } from "react-router-dom"; import { Landing } from './Components/Home/Landing'; import { Login } from "./Components/Login&SignIn/Login"; @@ -20,16 +20,16 @@ function App() { - + {/* */} - + - + - + diff --git a/src/Components/ApplyJobs/MainApply.jsx b/src/Components/ApplyJobs/MainApply.jsx new file mode 100644 index 0000000..f1f6d8d --- /dev/null +++ b/src/Components/ApplyJobs/MainApply.jsx @@ -0,0 +1,37 @@ +import React from 'react' +import styled from 'styled-components' +import ApplyForm from './ApplyForm' +// import { useLocation } from 'react-router' + +const MainApplyDiv = styled.div` + width: 100%; + height: 100vh; + display: flex; +` +const LeftApplyDiv = styled.div` + width: 60%; +` +const RightApplyDiv = styled.div` + width: 40%; + background: rgb(250, 249, 248); +` + + +const MainApply = () => { + + return ( + + + + + + + + + + + + ) +} + +export default MainApply diff --git a/src/Components/ApplyJobs/ReviewPage.jsx b/src/Components/ApplyJobs/ReviewPage.jsx new file mode 100644 index 0000000..2e838ff --- /dev/null +++ b/src/Components/ApplyJobs/ReviewPage.jsx @@ -0,0 +1,98 @@ +import React from 'react' +import { BiArrowBack } from "react-icons/bi"; +import { ProgressBar } from 'react-step-progress-bar' +import { VscFilePdf } from "react-icons/vsc"; +import ReviewDiv from './StyledReviewPage' + + +// let formData = { +// city: "Budaun", +// company: "Masai School", +// experience: "1", +// firstName: "Tausif", +// jobTitle: "Developer", +// lastName: "Sheikh", +// newPdf: "", +// phoneNumber: "09140708447", +// resume: "C:\\fakepath\\Highschool.pdf" +// } + +const ReviewPage = ({ handleReview, formData }) => { + // console.log(formData) + + const submitApplication = () => { + console.log("submit done"); + } + + return ( + + {/*
*/} + +
+ +
Application step 5 of 5
+
+

Please review your application

+

Contact information

+
+
+

Full Name

+

{`${formData.firstName} ${formData.lastName}`}

+
+
+

Email Address

+

email@example.com

+ To mitigate fraud, Indeed may mask your email address. If masked, the employer will see an address like mohdtausif67_j7s@indeedemail.com. Some employers, however, may still be able to unmask and see your actual email address. +
+
+

City, State

+

{formData.city}

+
+
+

Phone Number

+

{formData.phoneNumber}

+
+
+ +

Resume

+
+ +

{formData.resume.slice(12)}

+
+ +

Employee questions

+
+
+

Job Profile

+

{formData.jobTitle}

+
+
+

Company name

+

{formData.company}

+
+
+

How many years of total work experience do you have?

+

{formData.experience}

+
+
+

If you notice an error in your application, please
contact Indeed

+ +
+
+ +

Notify me by email when similar jobs are available

+
+ By creating a job alert, you agree to our Terms. You can change your consent settings at any time by unsubscribing or as detailed in our terms. +
+ By pressing apply: 1) you agree to our Terms, Cookie & Privacy Policies; 2) you consent to your application being transmitted to the Employer (Indeed does not guarantee receipt), & processed & analyzed in accordance with its & Indeed's terms & privacy policies; & 3) you acknowledge that when you apply to jobs outside your country it may involve you sending your personal data to countries with lower levels of data protection. + +
+

Exit

+ +
+

Having an issue with this application?Tell us more

+
+ ) +} + +export default ReviewPage \ No newline at end of file diff --git a/src/Components/ApplyJobs/StyledExperience.jsx b/src/Components/ApplyJobs/StyledExperience.jsx new file mode 100644 index 0000000..f88bc8e --- /dev/null +++ b/src/Components/ApplyJobs/StyledExperience.jsx @@ -0,0 +1,96 @@ +import styled from 'styled-components' + +const AddExperience = styled.div` + width: 46%; + margin: auto; + + div:first-child{ + width: 100%; + height:7px; + background: navy; + border-radius:12px; + margin: 50px 0 10px; + padding:0; + } + + div:nth-child(2){ + display:flex; + align-items: center; + } + div:nth-child(2)>:first-child{ + cursor:pointer; + width: 20px; + margin-right: 8px; + padding:5px; + } + div:nth-child(2)>:first-child:hover{ + background: rgb(238, 241, 254); + border-radius:5px; + } + + h2{ + margin: 19px 0; + } + h4>span{ + font-weight: normal; + } + + form{ + width: 90%; + border: 1px solid black; + padding:21px; + border: 1px solid wheat; + border-radius:8px; + margin-top: 8px; + box-shadow: rgba(99, 99, 99, 0.2) 0px 2px 8px 0px; + } + + & input{ + display: block; + } + & label{ + font-weight: bold; + } + & input{ + width: 94%; + padding:11px; + border: 1px solid black; + border-radius:7px; + margin: 8px 0 28px; + font-size:17px; + outline:none; + } + + div:nth-child(6){ + display:flex; + justify-content:flex-end; + align-items:center; + margin-top:50px; + margin-bottom:50px; + } + div:nth-child(6)>:first-child{ + color: rgb(22, 64, 129); + margin-right: 30px; + cursor: pointer; + } + div:nth-child(6)>button{ + width: 125px; + background: rgb(22, 64, 129); + padding:13px; + font-weight: bold; + font-size:15px; + border-radius:5px; + border: none; + color: white; + cursor: pointer; + } + + & p{ + text-align:center; + } + p>span{ + color:rgb(22, 64, 129); + } +`; + +export default AddExperience \ No newline at end of file diff --git a/src/Components/ApplyJobs/StyledReviewPage.jsx b/src/Components/ApplyJobs/StyledReviewPage.jsx new file mode 100644 index 0000000..efe0117 --- /dev/null +++ b/src/Components/ApplyJobs/StyledReviewPage.jsx @@ -0,0 +1,152 @@ +import styled from "styled-components"; + +const ReviewDiv = styled.div` + width: 46%; + margin:16px auto; + padding:24px; + border: 1px solid lightgrey; + border-radius:8px; + + /* div :nth-child(1){ + width: 100%; + height:7px; + background: navy; + border-radius:12px; + margin: 6px 0 10px; + padding:0; + } */ + h3{ + color: #3d3a3a; + } + .backArrow{ + display:flex; + align-items: center; + } + .backArrow>:first-child{ + cursor:pointer; + width: 20px; + margin-right: 8px; + padding:5px; + } + .backArrow>:first-child:hover{ + background: rgb(238, 241, 254); + border-radius:5px; + } + h2{ + margin: 15px 0; + } + h4{ + color: grey; + } + div:nth-child(5){ + margin: 10px 0 20px; + padding:0 10px 10px 10px; + border: 1px solid lightgrey; + border-radius:8px; + box-shadow: rgba(99, 99, 99, 0.2) 0px 2px 8px 0px; + } + div:nth-child(5)>div,div:nth-child(9)>div{ + border-bottom: 1px solid lightgrey; + padding: 10px; + } + div:nth-child(5) p, div:nth-child(9) p{ + color: #706e6e; + } + div:nth-child(5) h3, div:nth-child(9) h3, div:nth-child(11) h3{ + font-size:17px; + margin-bottom:20px; + } + small{ + color: grey; + } + span{ + cursor: pointer; + color: rgb(22, 64, 129); + } + div:nth-child(5)>div:last-child,div:nth-child(9)>div:last-child{ + border: none; + } + .resume{ + margin: 10px 0 20px; + height:70px; + border: 1px solid lightgrey; + border-radius: 8px; + padding:10px; + display:flex; + align-items: center; + box-shadow: rgba(99, 99, 99, 0.2) 0px 2px 8px 0px; + + } + + .resume>:first-child{ + width: 30px; + height: 30px; + color: #ee1b1b; + margin-right: 16px; + } + .resume>h3{ + color: rgb(22, 64, 129); + font-size:16px; + cursor: pointer + } + + div:nth-child(9){ + margin: 10px 0 20px; + border: 1px solid lightgrey; + border-radius: 8px; + padding:0 10px 10px 10px; + box-shadow: rgba(99, 99, 99, 0.2) 0px 2px 8px 0px; + } + + div:nth-child(11){ + margin: 18px 0; + padding-bottom: 14px; + border-top: 1px solid lightgrey; + border-bottom: 1px solid lightgrey; + } + div:nth-child(11)>div{ + display:flex; + align-items: center; + + } + div:nth-child(11) input{ + width: 25px; + height: 25px; + margin-right: 16px; + } + div:nth-child(11) h3{ + padding-top: 10px; + margin-top: 8px; + } + + div:nth-child(13){ + display:flex; + justify-content:flex-end; + align-items:center; + margin-top:50px; + margin-bottom:50px; + } + + div:nth-child(13)>:first-child{ + color: rgb(22, 64, 129); + margin-right: 30px; + cursor: pointer; + } + div:nth-child(13)>button{ + width: 220px; + background: rgb(22, 64, 129); + padding:13px; + font-weight: bold; + font-size:15px; + border-radius:5px; + border: none; + color: white; + cursor: pointer; + } + + .textCenter{ + text-align:center; + } +` + +export default ReviewDiv \ No newline at end of file diff --git a/src/Components/Search_Results/Filters.jsx b/src/Components/Search_Results/Filters.jsx index 0fe7bc5..bf0083f 100644 --- a/src/Components/Search_Results/Filters.jsx +++ b/src/Components/Search_Results/Filters.jsx @@ -10,129 +10,129 @@ import '../../App.css' const A = styled.div` margin-left: ${(props) => props.fd * 1.3}px; `; -export const Filters = ({setUsers,jobs}) => { +export const Filters = ({ setUsers, jobs }) => { const [state, setState] = React.useState(false); - const [salary, setSalary] = useState(0); - const [direc, setDirec] = useState(true); - const [calculated, setCalculated] = useState(0); - - // const sliderposition = useRef() - console.log(calculated); - const handleClick = () => { - setState((prev) => !prev); + const [salary, setSalary] = useState(0); + const [direc, setDirec] = useState(true); + const [calculated, setCalculated] = useState(0); - console.log(state); - }; - const filters = [ - "Date Posted", - "Remote", - "Education level", - "Company", - "Job Language", - "Job Type" - ]; - const dateItems = [ - "Last 10 days", - "Last 15 days", - "Last 8 days", - "Last 4 days", - "Last 3 days", - ]; - const jtype = ["Part Time(5)", -"Fill Time(15)","Fresher(4)","InternShip(10)" -] - const remote = ["Work from home", "On site"]; - const education = [ - "Bachelor's Degree(12)", - "12th Pass(2)", - "Master's Degree(1)", - "10th Pass(2)", - ]; - const company = ["Aivee", "Trilia", "Fadeo", "Zoomzone", "Mita", "Yodel", "Feedfish", "Dazzlesphere", "Twitterbridge", "Yadel", "Gigashots", "Tazzy", "Flashspan", "Devpulse", "Devbug", "Topicstorm", "Skyndu", "Talane", "Tekfly", "Dabfeed", "Skinder", "Bubblebox", "Kazio", "Fiveclub", "Twitternation", "Mynte", "Einti", "Oyope", "Twitterbeat", "Jabberbean", "Blogspan", "Wikizz", "Linktype", "Buzzdog", "Eazzy", "Oyoba", "Feedbug", "Photolist", "Tanoodle", "InnoZ", "Kare", "Skyba", "Fivespan", "Tagpad", "Babbleblab", "Mydo", "Buzzster", "Yotz"]; - const language = ["English", "Hindi", "Marathi"]; - function increase(e) { - if (salary == 78300) { - setDirec(!direc); - } + // const sliderposition = useRef() + console.log(calculated); + const handleClick = () => { + setState((prev) => !prev); + + console.log(state); + }; + const filters = [ + "Date Posted", + "Remote", + "Education level", + "Company", + "Job Language", + "Job Type" + ]; + const dateItems = [ + "Last 10 days", + "Last 15 days", + "Last 8 days", + "Last 4 days", + "Last 3 days", + ]; + const jtype = ["Part Time(5)", + "Fill Time(15)", "Fresher(4)", "InternShip(10)" + ] + const remote = ["Work from home", "On site"]; + const education = [ + "Bachelor's Degree(12)", + "12th Pass(2)", + "Master's Degree(1)", + "10th Pass(2)", + ]; + const company = ["Aivee", "Trilia", "Fadeo", "Zoomzone", "Mita", "Yodel", "Feedfish", "Dazzlesphere", "Twitterbridge", "Yadel", "Gigashots", "Tazzy", "Flashspan", "Devpulse", "Devbug", "Topicstorm", "Skyndu", "Talane", "Tekfly", "Dabfeed", "Skinder", "Bubblebox", "Kazio", "Fiveclub", "Twitternation", "Mynte", "Einti", "Oyope", "Twitterbeat", "Jabberbean", "Blogspan", "Wikizz", "Linktype", "Buzzdog", "Eazzy", "Oyoba", "Feedbug", "Photolist", "Tanoodle", "InnoZ", "Kare", "Skyba", "Fivespan", "Tagpad", "Babbleblab", "Mydo", "Buzzster", "Yotz"]; + const language = ["English", "Hindi", "Marathi"]; + function increase(e) { + if (salary == 78300) { + setDirec(!direc); + } - if (direc) { - let temp = calculated + 1; - setCalculated(temp); - } else { - let temp = calculated - 1; - setCalculated(temp); + if (direc) { + let temp = calculated + 1; + setCalculated(temp); + } else { + let temp = calculated - 1; + setCalculated(temp); + } } - } - return ( -
-
-
-
-
- What - -
-
- Where - -
- - - Advanced Job Search - -
-
- {/* Filter Dropdowns */} -
- - - - - - -
- - -
-
-

- What's your desired salary per month? -

-
-
- {/*
₹{(salary>650?salary:"")}
*/} - ₹{salary > 650 ? salary : ""} + return ( +
+
+
+
+
+ What + +
+
+ Where + +
+ + + Advanced Job Search + +
+
+ {/* Filter Dropdowns */} +
+ + + + + + +
+ + +
+
+

+ What's your desired salary per month? +

+
+
+ {/*
₹{(salary>650?salary:"")}
*/} + ₹{salary > 650 ? salary : ""} +
+ { + // console.log(e.target.value); + if (e.target.value > 650) { + setSalary(e.target.value); + } + increase(e); + }} + > +
78K+
+
+
+
+ +
- { - // console.log(e.target.value); - if (e.target.value > 650) { - setSalary(e.target.value); - } - increase(e); - }} - > -
78K+
-
- -
-
-
-
- ); + ); }; diff --git a/src/Components/Search_Results/JobCards.jsx b/src/Components/Search_Results/JobCards.jsx index 18751dd..eafd27c 100644 --- a/src/Components/Search_Results/JobCards.jsx +++ b/src/Components/Search_Results/JobCards.jsx @@ -2,58 +2,58 @@ import React from 'react' import Paper from "@material-ui/core/Paper"; import StarRateIcon from '@material-ui/icons/StarRate'; import './JobCards.css' -export const JobCards = ({ele,setDetails,crossit,setCrossit}) => { +export const JobCards = ({ ele, setDetails, crossit, setCrossit }) => { console.log(ele); let jobs = JSON.parse(localStorage.getItem('jobs')) const [state, setState] = React.useState(false); const [status, setStatus] = React.useState(true); const handleClick = (e) => { setState((prev) => !prev); - + console.log(state); - }; - const saveJob = (e) =>{ + }; + const saveJob = (e) => { console.log(e); - for(let i=0;i{ - saveJob(ele.id) - setCrossit(false) - }} > - < nav className={status?"dis":"rem"}> -
+ return
{ + saveJob(ele.id) + setCrossit(false) + }} > + < nav className={status ? "dis" : "rem"}> +

new

- -

setStatus(!status)}>Not Interested

-

Save job

-
+ +

setStatus(!status)}>Not Interested

+

Save job

+
-
-

{ele.job}

-

{ele.companyName}

{ele.rating}.0

{}

-

{ele.city}, {ele.state}

- -
    -
  • {ele.skills1}
  • -
  • {ele.skills2}
  • -
-

{ele.date} days ago

- - {status?null:
setStatus(!status)}> -

Job removed

-

Undo

-
} -
- - +
+

{ele.job}

+

{ele.companyName}

{ele.rating}.0

{}

+

{ele.city}, {ele.state}

+ +
    +
  • {ele.skills1}
  • +
  • {ele.skills2}
  • +
+

{ele.date} days ago

+ + {status ? null :
setStatus(!status)}> +

Job removed

+

Undo

+
} +
+ + } diff --git a/src/Components/Search_Results/JobDetails.css b/src/Components/Search_Results/JobDetails.css index a96f2b0..ae2d61b 100644 --- a/src/Components/Search_Results/JobDetails.css +++ b/src/Components/Search_Results/JobDetails.css @@ -1,4 +1,4 @@ -.jobHeadings{ +.jobHeadings { width: 94.5%; border-top-left-radius: 12px; border-top-right-radius: 12px; @@ -6,26 +6,31 @@ padding-bottom: 25px; box-shadow: 0 5px 5px gainsboro; } -.title{ + +.title { margin-top: 20px; display: flex; justify-content: space-between; align-items: center; } -.jobHeadings>h4{ - margin: -15px 0; - display: flex; - align-items: center; + +.jobHeadings>h4 { + margin: -15px 0; + display: flex; + align-items: center; } -.jobHeadings h3{ + +.jobHeadings h3 { margin-bottom: 0 !important; } -.apply{ + +.apply { margin-top: 25px; - display: flex; - align-items: center; + display: flex; + align-items: center; } -.app{ + +.app { width: 150px; height: 41px; border-radius: 10px; @@ -40,29 +45,33 @@ color: #fff; padding-bottom: 2px; } -.app:hover{ - background-color: rgb(0,58,155); - + +.app:hover { + background-color: rgb(0, 58, 155); } -.detailed{ + +.detailed { height: 400px; overflow-y: scroll; padding: 0 15px; font-size: 14px; } -.apply img{ + +.apply img { margin-left: 16px; margin-top: 0; cursor: pointer; height: 47px; } -#expandd{ + +#expandd { position: absolute; top: 35px; right: 0; width: 150px; background-color: white !important; - } - .hideit{ - display: none; - } \ No newline at end of file +} + +.hideit { + display: none; +} \ No newline at end of file diff --git a/src/Components/Search_Results/SearchResults.jsx b/src/Components/Search_Results/SearchResults.jsx index 4615a81..2968884 100644 --- a/src/Components/Search_Results/SearchResults.jsx +++ b/src/Components/Search_Results/SearchResults.jsx @@ -7,105 +7,105 @@ import { Filters } from './Filters'; import { JobDetails } from "./JobDetails"; import ReactPaginate from 'react-paginate'; import { useState } from 'react'; -import {Footer} from '../Home/Footer.jsx' -import {ResumeUpload} from '../Home/ResumeUpload.jsx' +import { Footer } from '../Home/Footer.jsx' +import { ResumeUpload } from '../Home/ResumeUpload.jsx' import { Header1 } from '../Home/Header1'; export const SearchResults = () => { - let jobs = JSON.parse(localStorage.getItem('jobs')) - const [users,setUsers] = useState(jobs.slice(0,50)) - const [pageNumber, setpageNumber] = useState(0) - const [details,setDetails] = useState("") - const [fa,setFa] = useState(true) - const [crossit,setCrossit] = useState(true) - const [sort,setSort] = useState(true) - React.useEffect(() => { - window.scrollTo({ - top: 0, - behavior: "smooth" - }); - }, [pageNumber]); - const usersPerPage = 5 - const pagesVisited = pageNumber * usersPerPage; - const displayjobs = users.slice(pagesVisited,pagesVisited+usersPerPage) - const pageCount = Math.ceil(users.length / 10) + let jobs = JSON.parse(localStorage.getItem('jobs')) + const [users, setUsers] = useState(jobs.slice(0, 50)) + const [pageNumber, setpageNumber] = useState(0) + const [details, setDetails] = useState("") + const [fa, setFa] = useState(true) + const [crossit, setCrossit] = useState(true) + const [sort, setSort] = useState(true) + React.useEffect(() => { + window.scrollTo({ + top: 0, + behavior: "smooth" + }); + }, [pageNumber]); + const usersPerPage = 5 + const pagesVisited = pageNumber * usersPerPage; + const displayjobs = users.slice(pagesVisited, pagesVisited + usersPerPage) + const pageCount = Math.ceil(users.length / 10) - const changePage = ({selected}) =>{ - setpageNumber(selected) - }; -console.log(details); - return ( - <> - - -
-
-
-
-

- Upload your resume -

-

- Let employers find you

-
-
-

Online Typing jobs

-
-
- Sort by : { - let x = users.sort((a,b)=>{ - return (b.rating - a.rating) - }) - console.log(x); - setSort(!sort) + const changePage = ({ selected }) => { + setpageNumber(selected) + }; + console.log(details); + return ( + <> + + +
+
+
+
+

+ Upload your resume +

+

- Let employers find you

+
+
+

Online Typing jobs

+
+
+ Sort by : { + let x = users.sort((a, b) => { + return (b.rating - a.rating) + }) + console.log(x); + setSort(!sort) - setFa(!fa) - setUsers(x) - }} - >Relavance - { - console.log(users); - let x = users.sort((a,b)=>{ - return (a.date - b.date) - }) - console.log(x); - setFa(!fa) - setSort(!sort) - setUsers(x) - }}>Date -
-
- Page {pageNumber+1} of {users.length} jobs -
-
-
-
-
- { - displayjobs.map((el)=>{ - - return - }) - } -
+ setFa(!fa) + setUsers(x) + }} + >Relavance - { + console.log(users); + let x = users.sort((a, b) => { + return (a.date - b.date) + }) + console.log(x); + setFa(!fa) + setSort(!sort) + setUsers(x) + }}>Date +
+
+ Page {pageNumber + 1} of {users.length} jobs +
+
+
+
+
+ { + displayjobs.map((el) => { -
- "} - pageCount={pageCount} - onPageChange={changePage} - containerClassName={"paginateBttns"} - previousLinkClassName={"previousBn"} - nextLinkClassName={"nextBn"} - disabledClassName={"paginateDisabled"} - activeClassName={"paginateActive"} - /> -
-
-
- {details==""?null:} -
-
-
- - - ); + return + }) + } +
+ +
+ "} + pageCount={pageCount} + onPageChange={changePage} + containerClassName={"paginateBttns"} + previousLinkClassName={"previousBn"} + nextLinkClassName={"nextBn"} + disabledClassName={"paginateDisabled"} + activeClassName={"paginateActive"} + /> +
+
+
+ {details == "" ? null : } +
+
+