├── .firebaserc ├── .gitignore ├── .vscode └── settings.json ├── README.md ├── build_fragments.js ├── dynamic_forms_templates ├── chingu_application_qs.json ├── new_voyage_user_qs.json ├── team_standup_qs.json └── voyage_application_qs.json ├── firebase.json ├── package-lock.json ├── package.json ├── public ├── favicon │ ├── android-icon-144x144.png │ ├── android-icon-192x192.png │ ├── android-icon-36x36.png │ ├── android-icon-48x48.png │ ├── android-icon-72x72.png │ ├── android-icon-96x96.png │ ├── apple-icon-114x114.png │ ├── apple-icon-120x120.png │ ├── apple-icon-144x144.png │ ├── apple-icon-152x152.png │ ├── apple-icon-180x180.png │ ├── apple-icon-57x57.png │ ├── apple-icon-60x60.png │ ├── apple-icon-72x72.png │ ├── apple-icon-76x76.png │ ├── apple-icon-precomposed.png │ ├── apple-icon.png │ ├── browserconfig.xml │ ├── favicon-16x16.png │ ├── favicon-32x32.png │ ├── favicon-96x96.png │ ├── favicon.ico │ ├── manifest.json │ ├── ms-icon-144x144.png │ ├── ms-icon-150x150.png │ ├── ms-icon-310x310.png │ └── ms-icon-70x70.png └── index.html ├── src ├── App.js ├── App.test.js ├── ScrollToTop.js ├── assets │ ├── 404-03.png │ ├── Artboard 10.png │ ├── Artboard 11.png │ ├── Artboard 17.png │ ├── Artboard 2-small.png │ ├── Artboard 2.png │ ├── Artboard 3-small.png │ ├── Artboard 3.png │ ├── Artboard 4-small.png │ ├── Artboard 4.png │ ├── Artboard 5.png │ ├── Artboard 6.png │ ├── Artboard 7.png │ ├── Artboard 8.png │ ├── Artboard 9.png │ ├── blank image.png │ ├── blank_picture.png │ ├── communication_url.png │ ├── edit-green.png │ ├── edit-white.png │ ├── edit.png │ ├── error.png │ ├── github-PR-icon.png │ ├── github-issue-icon.png │ ├── github_url.png │ ├── green alert.png │ ├── help-other.png │ ├── help-team-disabled.png │ ├── help-team.png │ ├── landingImage.png │ ├── links.png │ ├── mockup_url.png │ ├── notes_url.png │ ├── placeholder image.png │ ├── project_url.png │ ├── red alert.png │ ├── sad-face.png │ ├── success.png │ ├── team-icon.png │ ├── tier badges-01.png │ ├── tier badges-02.png │ ├── tier badges-03.png │ ├── workflow_url.png │ └── yellow alert.png ├── components │ ├── 404 │ │ ├── 404.jsx │ │ └── 404.scss │ ├── AllProjects │ │ ├── AllProjects.scss │ │ ├── components │ │ │ ├── Project.jsx │ │ │ └── Project.scss │ │ ├── graphql │ │ │ └── allProjectsQuery.js │ │ └── index.jsx │ ├── DynamicForm │ │ ├── DynamicForm.scss │ │ ├── UTC.data.js │ │ ├── components │ │ │ ├── DynamicFormContainer.jsx │ │ │ ├── DynamicFormMaker │ │ │ │ ├── QuestionComponents │ │ │ │ │ ├── SkillSetter │ │ │ │ │ │ ├── ItemTypes.js │ │ │ │ │ │ ├── RenderChosenSkills.jsx │ │ │ │ │ │ ├── RenderSkills.jsx │ │ │ │ │ │ ├── SkillSetter.jsx │ │ │ │ │ │ ├── SourceSkillCard.jsx │ │ │ │ │ │ └── index.jsx │ │ │ │ │ ├── checkbox.jsx │ │ │ │ │ ├── checkbox_2_column.jsx │ │ │ │ │ ├── date.jsx │ │ │ │ │ ├── dropdown.jsx │ │ │ │ │ ├── index.js │ │ │ │ │ ├── multiple_text_input.jsx │ │ │ │ │ ├── not_functional │ │ │ │ │ │ ├── dropdown_multiple.jsx │ │ │ │ │ │ └── radio_with_other_text_input.jsx │ │ │ │ │ ├── radio.jsx │ │ │ │ │ ├── team_progress_sentiment_buttons.jsx │ │ │ │ │ ├── text.jsx │ │ │ │ │ ├── textarea.jsx │ │ │ │ │ ├── three_buttons.jsx │ │ │ │ │ └── voyage_application_tier_select.jsx │ │ │ │ └── index.js │ │ │ ├── DynamicFormWrapper.jsx │ │ │ ├── index.js │ │ │ └── utilities.js │ │ ├── dynamicFormQuery.js │ │ ├── dynamicFormSubmitMutation.js │ │ └── index.jsx │ ├── Error │ │ ├── Error.scss │ │ ├── FormError.jsx │ │ └── index.jsx │ ├── FeedPortal │ │ ├── FeedPortal.scss │ │ ├── components │ │ │ ├── ChinguCards.jsx │ │ │ ├── ChinguCards.scss │ │ │ ├── FeedItem.jsx │ │ │ ├── FeedItem.scss │ │ │ ├── GithubActivity.jsx │ │ │ ├── GithubActivity.scss │ │ │ ├── InfoComponents.jsx │ │ │ ├── NewsFeed.jsx │ │ │ ├── NewsfeedStandup.jsx │ │ │ ├── NewsfeedStandup.scss │ │ │ ├── NoNews.jsx │ │ │ ├── NoNews.scss │ │ │ ├── SideBar.jsx │ │ │ ├── TeamCard.jsx │ │ │ ├── TeamCard.scss │ │ │ ├── TeamLinks.jsx │ │ │ ├── index.js │ │ │ └── newsfeedData.mock.js │ │ ├── graphql │ │ │ ├── newsfeedQuery.js │ │ │ └── sidebarQuery.js │ │ └── index.jsx │ ├── Footer │ │ ├── Footer.js │ │ └── SubscribeForm.js │ ├── Header │ │ ├── Header.js │ │ └── userBaseQuery.js │ ├── HelpPage │ │ ├── Help.scss │ │ ├── help-qa.data.js │ │ └── index.jsx │ ├── Landing │ │ ├── components │ │ │ ├── CohortsBar.jsx │ │ │ ├── LandingBar.jsx │ │ │ ├── LandingBarWithIcons.jsx │ │ │ ├── LandingBottom.jsx │ │ │ ├── LandingProjects.jsx │ │ │ ├── LandingTestimonial.jsx │ │ │ ├── LandingTop.jsx │ │ │ ├── landingBarItemsData.js │ │ │ └── landingBarRenderers.js │ │ └── index.jsx │ ├── Loader │ │ ├── Loader.scss │ │ └── index.jsx │ ├── Login │ │ ├── Login.scss │ │ ├── components │ │ │ └── GithubLoginModal.jsx │ │ └── index.jsx │ ├── Pages │ │ ├── ApplicationLanding.js │ │ ├── CurrentPrograms.js │ │ ├── FAQ.js │ │ ├── PrivacyPolicy.js │ │ ├── Staff.js │ │ └── VoyageFive.js │ ├── ProjectCard │ │ ├── CohortProjectInfo.jsx │ │ ├── ProjectCard.scss │ │ ├── ProjectImage.jsx │ │ ├── ProjectInfo.jsx │ │ ├── TeamButtons.jsx │ │ ├── TeamCard.scss │ │ ├── TeamResourceLinks.jsx │ │ └── index.jsx │ ├── ProjectShowcase │ │ ├── ProjectShowcase.scss │ │ ├── components │ │ │ ├── Banner.jsx │ │ │ ├── EditProjectForm │ │ │ │ └── index.jsx │ │ │ ├── ExternalLinks.jsx │ │ │ ├── HeroImage.jsx │ │ │ ├── ImageEditModal │ │ │ │ ├── ImagePreview.jsx │ │ │ │ └── index.jsx │ │ │ ├── ImageGallery │ │ │ │ ├── FeaturedImage.jsx │ │ │ │ ├── Thumbnail.jsx │ │ │ │ ├── ThumbnailPanel.jsx │ │ │ │ ├── Thumbnails.jsx │ │ │ │ └── index.jsx │ │ │ ├── ProjectDescription.jsx │ │ │ ├── ProjectSideBar.jsx │ │ │ └── Toolbar │ │ │ │ └── index.jsx │ │ ├── graphql │ │ │ └── getProjectAndUser.js │ │ └── index.jsx │ ├── ProjectStandup │ │ ├── ProjectStandup.scss │ │ └── index.jsx │ ├── Register │ │ ├── Register.scss │ │ └── index.jsx │ ├── SkillsPicker │ │ └── index.jsx │ ├── Success │ │ ├── Success.jsx │ │ └── Success.scss │ ├── Ticketbox │ │ ├── Ticketbox.scss │ │ ├── components │ │ │ ├── BackBtn.jsx │ │ │ ├── Feedback │ │ │ │ ├── BugSuggestion.jsx │ │ │ │ ├── BugSuggestionQA.js │ │ │ │ └── index.js │ │ │ ├── Help │ │ │ │ ├── HelpOptions.jsx │ │ │ │ ├── HelpPageSearch.jsx │ │ │ │ ├── TeamHelp.jsx │ │ │ │ ├── TeamHelpQA.js │ │ │ │ └── index.jsx │ │ │ ├── Success.jsx │ │ │ └── TicketBoxError.jsx │ │ └── index.jsx │ ├── UserProfile │ │ ├── ProjectCards │ │ │ ├── CurrentVoyages.jsx │ │ │ ├── InfoComponents.jsx │ │ │ ├── NoTeamTypeCards.jsx │ │ │ ├── PendingVoyages.jsx │ │ │ └── ProjectCards.jsx │ │ ├── UserInfo.jsx │ │ ├── UserProfile.scss │ │ ├── UserSideBar.jsx │ │ ├── UserSideBar.scss │ │ ├── components │ │ │ ├── ChosenSkills.jsx │ │ │ ├── UserAcquiredSkills │ │ │ │ └── index.jsx │ │ │ ├── UserDesiredSkills │ │ │ │ ├── DesiredSkillPicker.scss │ │ │ │ ├── DesiredSkillsPicker.jsx │ │ │ │ └── index.jsx │ │ │ ├── UserSkills.jsx │ │ │ ├── index.jsx │ │ │ └── timezoneOptions.js │ │ ├── graphql │ │ │ ├── profileQuery.js │ │ │ └── skillsQuery.js │ │ └── index.jsx │ ├── VoyageApplication │ │ ├── VoyageApplication.scss │ │ └── index.jsx │ ├── VoyageCard │ │ ├── Action.js │ │ ├── Badge.js │ │ ├── CheckInDone.js │ │ ├── Info.js │ │ ├── Pending.js │ │ ├── Title.js │ │ ├── VoyageCard.js │ │ ├── VoyageCard.scss │ │ └── WeeklyCheckIn.js │ ├── VoyagePortal │ │ ├── VoyagePortal.scss │ │ ├── graphql │ │ │ └── voyagesQuery.js │ │ └── index.jsx │ ├── WeeklyCheckin │ │ ├── WeeklyCheckin.scss │ │ ├── graphql │ │ │ └── mutation.js │ │ ├── index.js │ │ └── weeklyCheckin.data.js │ ├── common │ │ ├── Button.js │ │ ├── EditButton.js │ │ ├── EditButton.scss │ │ └── Modal.js │ └── utilities │ │ ├── EditableTextField.jsx │ │ ├── EditableTextField.scss │ │ ├── PopupMenu.jsx │ │ ├── PrivateRoute.jsx │ │ ├── Request.jsx │ │ ├── dateFormatter.js │ │ ├── index.jsx │ │ ├── introspectEnum.js │ │ └── newsfeedDateFormatter.js ├── fragmentTypes.json ├── get_uri.js ├── index.js ├── mutations │ ├── authMutation.js │ ├── loginMutation.js │ ├── registerUserMutation.js │ └── updateUser.js ├── registerServiceWorker.js ├── static-api-elements │ ├── companyFAQ.js │ ├── contributorListing.js │ ├── index.js │ ├── programFAQ.js │ └── staffListing.js └── styles │ ├── abstracts │ ├── _functions.scss │ ├── _mixins.scss │ ├── _placeholders.scss │ └── _variables.scss │ ├── assets │ ├── Periman.jpg │ ├── bear8.jpg │ ├── challenge--landing.png │ ├── coment.PNG │ ├── debasree.jpg │ ├── earth--landing.png │ ├── grow--landing.png │ ├── landingImages.js │ ├── pankaja.jpg │ ├── patreon.png │ ├── process-01.png │ ├── process-02.png │ ├── process-03.png │ ├── process-04.png │ ├── project-placeholder.png │ ├── slack_key_gif.mp4 │ ├── slackkey.JPG │ ├── sona.PNG │ ├── staffImages │ │ ├── chance.jpg │ │ ├── francesca.jpg │ │ ├── jim.jpg │ │ ├── parminder.jpg │ │ ├── sab.jpg │ │ ├── staffImages.js │ │ ├── vamp.jpg │ │ └── van.jpg │ ├── ticketybot.PNG │ ├── tier-badges-01--landing.png │ ├── tier-badges-02--landing.png │ ├── tier-badges-03--landing.png │ └── user-placeholder.png │ ├── base │ ├── _base.scss │ ├── _fonts.scss │ ├── _helpers.scss │ └── _typography.scss │ ├── components │ ├── _button.scss │ ├── _landing_icon_item.scss │ ├── _landing_testimonial.scss │ ├── _login_form.scss │ ├── _login_form_item.scss │ ├── _modal.scss │ ├── _signup_form.scss │ └── _signup_form_item.scss │ ├── fontawesome │ └── webfonts │ │ ├── fa-brands-400.eot │ │ ├── fa-brands-400.svg │ │ ├── fa-brands-400.ttf │ │ ├── fa-brands-400.woff │ │ ├── fa-brands-400.woff2 │ │ ├── fa-regular-400.eot │ │ ├── fa-regular-400.svg │ │ ├── fa-regular-400.ttf │ │ ├── fa-regular-400.woff │ │ ├── fa-regular-400.woff2 │ │ ├── fa-solid-900.eot │ │ ├── fa-solid-900.svg │ │ ├── fa-solid-900.ttf │ │ ├── fa-solid-900.woff │ │ ├── fa-solid-900.woff2 │ │ └── fontawesome-all.css │ ├── layout │ ├── _basic-page.scss │ ├── _footer.scss │ └── _header.scss │ ├── main.scss │ ├── pages │ ├── _contact_form.scss │ ├── _current_programs.scss │ ├── _dashboard.scss │ ├── _faq.scss │ ├── _landing.scss │ ├── _login.scss │ ├── _privacy_page.scss │ ├── _profile.scss │ ├── _signup.scss │ ├── _slack.scss │ ├── _staff.scss │ └── _voyage_five.scss │ └── vendors │ ├── _include-media.scss │ └── _normalize.scss └── yarn.lock /.firebaserc: -------------------------------------------------------------------------------- 1 | { 2 | "projects": { 3 | "default": "chingu-frontend" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/ignore-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | 6 | # testing 7 | /coverage 8 | 9 | # production 10 | /build 11 | 12 | # generated files 13 | *.css 14 | 15 | # misc 16 | .DS_Store 17 | .env.local 18 | .env.development.local 19 | .env.test.local 20 | .env.production.local 21 | 22 | npm-debug.log* 23 | yarn-debug.log* 24 | yarn-error.log* 25 | 26 | .vs/ 27 | *.sqlite -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "editor.tabSize": 2 3 | } -------------------------------------------------------------------------------- /build_fragments.js: -------------------------------------------------------------------------------- 1 | const fetch = require('node-fetch'); 2 | const fs = require('fs'); 3 | const { uri } = require('./src/get_uri') 4 | 5 | fetch(uri, { 6 | method: 'POST', 7 | headers: { 'Content-Type': 'application/json' }, 8 | body: JSON.stringify({ 9 | variables: {}, 10 | operationName: '', 11 | query: ` 12 | { 13 | __schema { 14 | types { 15 | kind 16 | name 17 | possibleTypes { 18 | name 19 | } 20 | } 21 | } 22 | } 23 | `, 24 | }), 25 | }) 26 | .then(result => result.json()) 27 | .then(result => { 28 | // here we're filtering out any type information unrelated to unions or interfaces 29 | const filteredData = result.data.__schema.types.filter( 30 | type => type.possibleTypes !== null, 31 | ); 32 | result.data.__schema.types = filteredData; 33 | fs.writeFile('./src/fragmentTypes.json', JSON.stringify(result.data), err => { 34 | if (err) { 35 | console.error('Error writing fragmentTypes file', err); 36 | } else { 37 | console.log('Fragment types successfully extracted!'); 38 | } 39 | console.log({ uri }) 40 | }); 41 | }); -------------------------------------------------------------------------------- /dynamic_forms_templates/team_standup_qs.json: -------------------------------------------------------------------------------- 1 | mutation { 2 | one: questionCreate( 3 | input: { 4 | field_name:"standup_id" 5 | text:"Cohort Team Standup ID" 6 | input_type:hidden 7 | data_type:Number 8 | tags:[cohort, teamwork, identifier] 9 | } 10 | ) { 11 | id 12 | } 13 | 14 | two: questionCreate( 15 | input: { 16 | field_name:"progress_sentiment" 17 | text:"How would you describe your team's progress?" 18 | input_type:team_progress_sentiment_buttons 19 | options: [{text:"red"}, {text:"yellow"}, {text:"green"}] 20 | data_type:String 21 | tags:[cohort, teamwork] 22 | } 23 | ) { 24 | id 25 | } 26 | 27 | three: questionCreate( 28 | input: { 29 | field_name:"worked_on" 30 | text:"What have you worked on since the last standup?" 31 | input_type:textarea 32 | data_type:String 33 | tags:[cohort, teamwork] 34 | } 35 | ) { 36 | id 37 | } 38 | 39 | four: questionCreate( 40 | input: { 41 | field_name:"working_on" 42 | text:"What will you be working on until the next standup?" 43 | input_type:textarea 44 | data_type:String 45 | tags:[cohort, teamwork] 46 | } 47 | ) { 48 | id 49 | } 50 | 51 | five: questionCreate( 52 | input: { 53 | field_name:"blocked_on" 54 | text:"Is there anything blocking your progress?" 55 | input_type:textarea 56 | data_type:String 57 | tags:[cohort, teamwork] 58 | } 59 | ) { 60 | id 61 | } 62 | } -------------------------------------------------------------------------------- /firebase.json: -------------------------------------------------------------------------------- 1 | { 2 | "hosting": { 3 | "public": "build", 4 | "ignore": [ 5 | "firebase.json", 6 | "**/.*", 7 | "**/node_modules/**" 8 | ], 9 | "rewrites": [ 10 | { 11 | "source": "**", 12 | "destination": "/index.html" 13 | } 14 | ] 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "chingu-frontend", 3 | "version": "0.1.0", 4 | "private": true, 5 | "dependencies": { 6 | "apollo-boost": "^0.1.10", 7 | "apollo-cache-inmemory": "^1.2.9", 8 | "babel-polyfill": "^6.26.0", 9 | "cross-env": "^5.2.0", 10 | "graphql": "^14.0.2", 11 | "graphql-tag": "^2.9.2", 12 | "lodash": "^4.17.10", 13 | "node-fetch": "^2.2.1", 14 | "node-sass-chokidar": "^1.3.0", 15 | "npm-run-all": "^4.1.3", 16 | "react": "^16.4.0", 17 | "react-apollo": "^2.1.9", 18 | "react-copy-to-clipboard": "^5.0.1", 19 | "react-dnd": "^5.0.0", 20 | "react-dnd-html5-backend": "^5.0.1", 21 | "react-dom": "^16.2.0", 22 | "react-markdown": "^3.4.1", 23 | "react-redux": "^5.0.7", 24 | "react-router-dom": "^4.2.2", 25 | "react-scripts": "^2.1.1", 26 | "react-select": "^2.1.0", 27 | "redux": "^3.7.2", 28 | "redux-form": "^7.2.3", 29 | "validator": "^10.7.0" 30 | }, 31 | "scripts": { 32 | "build-css": "node-sass-chokidar src/ -o src/", 33 | "watch-css": "npm run build-css && node-sass-chokidar src/ -o src/ --watch --recursive", 34 | "start-js": "react-scripts start", 35 | "start": "cross-env NODE_PATH=src npm-run-all -p watch-css build-fragments start-js", 36 | "staging": "cross-env REACT_APP_API=staging npm run start", 37 | "local": "cross-env REACT_APP_API=local npm run start", 38 | "build-js": "react-scripts build", 39 | "build": "npm-run-all build-css build-fragments build-js; echo \"/* /index.html 200\" > build/_redirects", 40 | "test": "react-scripts test --env=jsdom", 41 | "eject": "react-scripts eject", 42 | "build-fragments": "node ./build_fragments.js" 43 | }, 44 | "browserslist": [ 45 | ">0.2%", 46 | "not dead", 47 | "not ie <= 11", 48 | "not op_mini all" 49 | ] 50 | } 51 | -------------------------------------------------------------------------------- /public/favicon/android-icon-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chingu-x/chingu-frontend/20efd444ea0716323cfe6278f472d7c63a0ce9f3/public/favicon/android-icon-144x144.png -------------------------------------------------------------------------------- /public/favicon/android-icon-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chingu-x/chingu-frontend/20efd444ea0716323cfe6278f472d7c63a0ce9f3/public/favicon/android-icon-192x192.png -------------------------------------------------------------------------------- /public/favicon/android-icon-36x36.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chingu-x/chingu-frontend/20efd444ea0716323cfe6278f472d7c63a0ce9f3/public/favicon/android-icon-36x36.png -------------------------------------------------------------------------------- /public/favicon/android-icon-48x48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chingu-x/chingu-frontend/20efd444ea0716323cfe6278f472d7c63a0ce9f3/public/favicon/android-icon-48x48.png -------------------------------------------------------------------------------- /public/favicon/android-icon-72x72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chingu-x/chingu-frontend/20efd444ea0716323cfe6278f472d7c63a0ce9f3/public/favicon/android-icon-72x72.png -------------------------------------------------------------------------------- /public/favicon/android-icon-96x96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chingu-x/chingu-frontend/20efd444ea0716323cfe6278f472d7c63a0ce9f3/public/favicon/android-icon-96x96.png -------------------------------------------------------------------------------- /public/favicon/apple-icon-114x114.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chingu-x/chingu-frontend/20efd444ea0716323cfe6278f472d7c63a0ce9f3/public/favicon/apple-icon-114x114.png -------------------------------------------------------------------------------- /public/favicon/apple-icon-120x120.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chingu-x/chingu-frontend/20efd444ea0716323cfe6278f472d7c63a0ce9f3/public/favicon/apple-icon-120x120.png -------------------------------------------------------------------------------- /public/favicon/apple-icon-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chingu-x/chingu-frontend/20efd444ea0716323cfe6278f472d7c63a0ce9f3/public/favicon/apple-icon-144x144.png -------------------------------------------------------------------------------- /public/favicon/apple-icon-152x152.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chingu-x/chingu-frontend/20efd444ea0716323cfe6278f472d7c63a0ce9f3/public/favicon/apple-icon-152x152.png -------------------------------------------------------------------------------- /public/favicon/apple-icon-180x180.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chingu-x/chingu-frontend/20efd444ea0716323cfe6278f472d7c63a0ce9f3/public/favicon/apple-icon-180x180.png -------------------------------------------------------------------------------- /public/favicon/apple-icon-57x57.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chingu-x/chingu-frontend/20efd444ea0716323cfe6278f472d7c63a0ce9f3/public/favicon/apple-icon-57x57.png -------------------------------------------------------------------------------- /public/favicon/apple-icon-60x60.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chingu-x/chingu-frontend/20efd444ea0716323cfe6278f472d7c63a0ce9f3/public/favicon/apple-icon-60x60.png -------------------------------------------------------------------------------- /public/favicon/apple-icon-72x72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chingu-x/chingu-frontend/20efd444ea0716323cfe6278f472d7c63a0ce9f3/public/favicon/apple-icon-72x72.png -------------------------------------------------------------------------------- /public/favicon/apple-icon-76x76.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chingu-x/chingu-frontend/20efd444ea0716323cfe6278f472d7c63a0ce9f3/public/favicon/apple-icon-76x76.png -------------------------------------------------------------------------------- /public/favicon/apple-icon-precomposed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chingu-x/chingu-frontend/20efd444ea0716323cfe6278f472d7c63a0ce9f3/public/favicon/apple-icon-precomposed.png -------------------------------------------------------------------------------- /public/favicon/apple-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chingu-x/chingu-frontend/20efd444ea0716323cfe6278f472d7c63a0ce9f3/public/favicon/apple-icon.png -------------------------------------------------------------------------------- /public/favicon/browserconfig.xml: -------------------------------------------------------------------------------- 1 | 2 | #ffffff -------------------------------------------------------------------------------- /public/favicon/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chingu-x/chingu-frontend/20efd444ea0716323cfe6278f472d7c63a0ce9f3/public/favicon/favicon-16x16.png -------------------------------------------------------------------------------- /public/favicon/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chingu-x/chingu-frontend/20efd444ea0716323cfe6278f472d7c63a0ce9f3/public/favicon/favicon-32x32.png -------------------------------------------------------------------------------- /public/favicon/favicon-96x96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chingu-x/chingu-frontend/20efd444ea0716323cfe6278f472d7c63a0ce9f3/public/favicon/favicon-96x96.png -------------------------------------------------------------------------------- /public/favicon/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chingu-x/chingu-frontend/20efd444ea0716323cfe6278f472d7c63a0ce9f3/public/favicon/favicon.ico -------------------------------------------------------------------------------- /public/favicon/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Chingu Developers Network", 3 | "icons": [ 4 | { 5 | "src": "\/android-icon-36x36.png", 6 | "sizes": "36x36", 7 | "type": "image\/png", 8 | "density": "0.75" 9 | }, 10 | { 11 | "src": "\/android-icon-48x48.png", 12 | "sizes": "48x48", 13 | "type": "image\/png", 14 | "density": "1.0" 15 | }, 16 | { 17 | "src": "\/android-icon-72x72.png", 18 | "sizes": "72x72", 19 | "type": "image\/png", 20 | "density": "1.5" 21 | }, 22 | { 23 | "src": "\/android-icon-96x96.png", 24 | "sizes": "96x96", 25 | "type": "image\/png", 26 | "density": "2.0" 27 | }, 28 | { 29 | "src": "\/android-icon-144x144.png", 30 | "sizes": "144x144", 31 | "type": "image\/png", 32 | "density": "3.0" 33 | }, 34 | { 35 | "src": "\/android-icon-192x192.png", 36 | "sizes": "192x192", 37 | "type": "image\/png", 38 | "density": "4.0" 39 | } 40 | ], 41 | "start_url": "./index.html", 42 | "display": "standalone", 43 | "theme_color": "#000000", 44 | "background_color": "#ffffff" 45 | } -------------------------------------------------------------------------------- /public/favicon/ms-icon-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chingu-x/chingu-frontend/20efd444ea0716323cfe6278f472d7c63a0ce9f3/public/favicon/ms-icon-144x144.png -------------------------------------------------------------------------------- /public/favicon/ms-icon-150x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chingu-x/chingu-frontend/20efd444ea0716323cfe6278f472d7c63a0ce9f3/public/favicon/ms-icon-150x150.png -------------------------------------------------------------------------------- /public/favicon/ms-icon-310x310.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chingu-x/chingu-frontend/20efd444ea0716323cfe6278f472d7c63a0ce9f3/public/favicon/ms-icon-310x310.png -------------------------------------------------------------------------------- /public/favicon/ms-icon-70x70.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chingu-x/chingu-frontend/20efd444ea0716323cfe6278f472d7c63a0ce9f3/public/favicon/ms-icon-70x70.png -------------------------------------------------------------------------------- /src/App.test.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom'; 3 | import App from './App'; 4 | 5 | it('renders without crashing', () => { 6 | const div = document.createElement('div'); 7 | ReactDOM.render(, div); 8 | ReactDOM.unmountComponentAtNode(div); 9 | }); 10 | -------------------------------------------------------------------------------- /src/ScrollToTop.js: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import { withRouter } from "react-router-dom"; 3 | 4 | class ScrollToTop extends React.Component { 5 | componentDidUpdate(prevProps) { 6 | if (this.props.location !== prevProps.location) { 7 | window.scrollTo(0, 0); 8 | } 9 | } 10 | 11 | render() { 12 | return this.props.children; 13 | } 14 | } 15 | 16 | export default withRouter(ScrollToTop); -------------------------------------------------------------------------------- /src/assets/404-03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chingu-x/chingu-frontend/20efd444ea0716323cfe6278f472d7c63a0ce9f3/src/assets/404-03.png -------------------------------------------------------------------------------- /src/assets/Artboard 10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chingu-x/chingu-frontend/20efd444ea0716323cfe6278f472d7c63a0ce9f3/src/assets/Artboard 10.png -------------------------------------------------------------------------------- /src/assets/Artboard 11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chingu-x/chingu-frontend/20efd444ea0716323cfe6278f472d7c63a0ce9f3/src/assets/Artboard 11.png -------------------------------------------------------------------------------- /src/assets/Artboard 17.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chingu-x/chingu-frontend/20efd444ea0716323cfe6278f472d7c63a0ce9f3/src/assets/Artboard 17.png -------------------------------------------------------------------------------- /src/assets/Artboard 2-small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chingu-x/chingu-frontend/20efd444ea0716323cfe6278f472d7c63a0ce9f3/src/assets/Artboard 2-small.png -------------------------------------------------------------------------------- /src/assets/Artboard 2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chingu-x/chingu-frontend/20efd444ea0716323cfe6278f472d7c63a0ce9f3/src/assets/Artboard 2.png -------------------------------------------------------------------------------- /src/assets/Artboard 3-small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chingu-x/chingu-frontend/20efd444ea0716323cfe6278f472d7c63a0ce9f3/src/assets/Artboard 3-small.png -------------------------------------------------------------------------------- /src/assets/Artboard 3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chingu-x/chingu-frontend/20efd444ea0716323cfe6278f472d7c63a0ce9f3/src/assets/Artboard 3.png -------------------------------------------------------------------------------- /src/assets/Artboard 4-small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chingu-x/chingu-frontend/20efd444ea0716323cfe6278f472d7c63a0ce9f3/src/assets/Artboard 4-small.png -------------------------------------------------------------------------------- /src/assets/Artboard 4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chingu-x/chingu-frontend/20efd444ea0716323cfe6278f472d7c63a0ce9f3/src/assets/Artboard 4.png -------------------------------------------------------------------------------- /src/assets/Artboard 5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chingu-x/chingu-frontend/20efd444ea0716323cfe6278f472d7c63a0ce9f3/src/assets/Artboard 5.png -------------------------------------------------------------------------------- /src/assets/Artboard 6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chingu-x/chingu-frontend/20efd444ea0716323cfe6278f472d7c63a0ce9f3/src/assets/Artboard 6.png -------------------------------------------------------------------------------- /src/assets/Artboard 7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chingu-x/chingu-frontend/20efd444ea0716323cfe6278f472d7c63a0ce9f3/src/assets/Artboard 7.png -------------------------------------------------------------------------------- /src/assets/Artboard 8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chingu-x/chingu-frontend/20efd444ea0716323cfe6278f472d7c63a0ce9f3/src/assets/Artboard 8.png -------------------------------------------------------------------------------- /src/assets/Artboard 9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chingu-x/chingu-frontend/20efd444ea0716323cfe6278f472d7c63a0ce9f3/src/assets/Artboard 9.png -------------------------------------------------------------------------------- /src/assets/blank image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chingu-x/chingu-frontend/20efd444ea0716323cfe6278f472d7c63a0ce9f3/src/assets/blank image.png -------------------------------------------------------------------------------- /src/assets/blank_picture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chingu-x/chingu-frontend/20efd444ea0716323cfe6278f472d7c63a0ce9f3/src/assets/blank_picture.png -------------------------------------------------------------------------------- /src/assets/communication_url.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chingu-x/chingu-frontend/20efd444ea0716323cfe6278f472d7c63a0ce9f3/src/assets/communication_url.png -------------------------------------------------------------------------------- /src/assets/edit-green.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chingu-x/chingu-frontend/20efd444ea0716323cfe6278f472d7c63a0ce9f3/src/assets/edit-green.png -------------------------------------------------------------------------------- /src/assets/edit-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chingu-x/chingu-frontend/20efd444ea0716323cfe6278f472d7c63a0ce9f3/src/assets/edit-white.png -------------------------------------------------------------------------------- /src/assets/edit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chingu-x/chingu-frontend/20efd444ea0716323cfe6278f472d7c63a0ce9f3/src/assets/edit.png -------------------------------------------------------------------------------- /src/assets/error.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chingu-x/chingu-frontend/20efd444ea0716323cfe6278f472d7c63a0ce9f3/src/assets/error.png -------------------------------------------------------------------------------- /src/assets/github-PR-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chingu-x/chingu-frontend/20efd444ea0716323cfe6278f472d7c63a0ce9f3/src/assets/github-PR-icon.png -------------------------------------------------------------------------------- /src/assets/github-issue-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chingu-x/chingu-frontend/20efd444ea0716323cfe6278f472d7c63a0ce9f3/src/assets/github-issue-icon.png -------------------------------------------------------------------------------- /src/assets/github_url.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chingu-x/chingu-frontend/20efd444ea0716323cfe6278f472d7c63a0ce9f3/src/assets/github_url.png -------------------------------------------------------------------------------- /src/assets/green alert.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chingu-x/chingu-frontend/20efd444ea0716323cfe6278f472d7c63a0ce9f3/src/assets/green alert.png -------------------------------------------------------------------------------- /src/assets/help-other.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chingu-x/chingu-frontend/20efd444ea0716323cfe6278f472d7c63a0ce9f3/src/assets/help-other.png -------------------------------------------------------------------------------- /src/assets/help-team-disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chingu-x/chingu-frontend/20efd444ea0716323cfe6278f472d7c63a0ce9f3/src/assets/help-team-disabled.png -------------------------------------------------------------------------------- /src/assets/help-team.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chingu-x/chingu-frontend/20efd444ea0716323cfe6278f472d7c63a0ce9f3/src/assets/help-team.png -------------------------------------------------------------------------------- /src/assets/landingImage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chingu-x/chingu-frontend/20efd444ea0716323cfe6278f472d7c63a0ce9f3/src/assets/landingImage.png -------------------------------------------------------------------------------- /src/assets/links.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chingu-x/chingu-frontend/20efd444ea0716323cfe6278f472d7c63a0ce9f3/src/assets/links.png -------------------------------------------------------------------------------- /src/assets/mockup_url.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chingu-x/chingu-frontend/20efd444ea0716323cfe6278f472d7c63a0ce9f3/src/assets/mockup_url.png -------------------------------------------------------------------------------- /src/assets/notes_url.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chingu-x/chingu-frontend/20efd444ea0716323cfe6278f472d7c63a0ce9f3/src/assets/notes_url.png -------------------------------------------------------------------------------- /src/assets/placeholder image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chingu-x/chingu-frontend/20efd444ea0716323cfe6278f472d7c63a0ce9f3/src/assets/placeholder image.png -------------------------------------------------------------------------------- /src/assets/project_url.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chingu-x/chingu-frontend/20efd444ea0716323cfe6278f472d7c63a0ce9f3/src/assets/project_url.png -------------------------------------------------------------------------------- /src/assets/red alert.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chingu-x/chingu-frontend/20efd444ea0716323cfe6278f472d7c63a0ce9f3/src/assets/red alert.png -------------------------------------------------------------------------------- /src/assets/sad-face.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chingu-x/chingu-frontend/20efd444ea0716323cfe6278f472d7c63a0ce9f3/src/assets/sad-face.png -------------------------------------------------------------------------------- /src/assets/success.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chingu-x/chingu-frontend/20efd444ea0716323cfe6278f472d7c63a0ce9f3/src/assets/success.png -------------------------------------------------------------------------------- /src/assets/team-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chingu-x/chingu-frontend/20efd444ea0716323cfe6278f472d7c63a0ce9f3/src/assets/team-icon.png -------------------------------------------------------------------------------- /src/assets/tier badges-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chingu-x/chingu-frontend/20efd444ea0716323cfe6278f472d7c63a0ce9f3/src/assets/tier badges-01.png -------------------------------------------------------------------------------- /src/assets/tier badges-02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chingu-x/chingu-frontend/20efd444ea0716323cfe6278f472d7c63a0ce9f3/src/assets/tier badges-02.png -------------------------------------------------------------------------------- /src/assets/tier badges-03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chingu-x/chingu-frontend/20efd444ea0716323cfe6278f472d7c63a0ce9f3/src/assets/tier badges-03.png -------------------------------------------------------------------------------- /src/assets/workflow_url.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chingu-x/chingu-frontend/20efd444ea0716323cfe6278f472d7c63a0ce9f3/src/assets/workflow_url.png -------------------------------------------------------------------------------- /src/assets/yellow alert.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chingu-x/chingu-frontend/20efd444ea0716323cfe6278f472d7c63a0ce9f3/src/assets/yellow alert.png -------------------------------------------------------------------------------- /src/components/404/404.jsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { Link } from "react-router-dom" 3 | import './404.css'; 4 | 5 | class Missing404Page extends React.Component { 6 | render() { 7 | return ( 8 |
9 | 404 10 | 11 | 12 | 13 |
14 | ); 15 | } 16 | } 17 | 18 | export default Missing404Page; 19 | -------------------------------------------------------------------------------- /src/components/404/404.scss: -------------------------------------------------------------------------------- 1 | @import '../../styles/abstracts/_variables.scss'; 2 | 3 | .p404-page-container { 4 | background-color: $light-grey; 5 | width: 100vw; 6 | height: 100vh; 7 | } 8 | .p404-image { 9 | width: 1080px; 10 | margin: 0 auto; 11 | object-fit: contain; 12 | display: block; 13 | top: 30vh; 14 | position: relative; 15 | } 16 | .p404-goBack-btn { 17 | border: none; 18 | color: white; 19 | background-color: $attention-red; 20 | padding: 25px; 21 | font-size: 25px; 22 | font-weight: 700; 23 | box-shadow: $box-shadow; 24 | text-transform: uppercase; 25 | text-align: center; 26 | display: block; 27 | position: relative; 28 | top: 30vh; 29 | margin: 0 auto; 30 | cursor: pointer; 31 | } 32 | @media (max-width: 1180px) { 33 | .p404-image { 34 | width: 80vw; 35 | } 36 | .p404-goBack-btn { 37 | font-size: 14px; 38 | padding: 10px; 39 | } 40 | } -------------------------------------------------------------------------------- /src/components/AllProjects/AllProjects.scss: -------------------------------------------------------------------------------- 1 | @import '../../styles/abstracts/_variables.scss'; 2 | 3 | .all-projects-container { 4 | max-width: $max-width; 5 | min-height: 100vh; 6 | padding: $page-padding; 7 | margin: 0 auto; 8 | } 9 | 10 | .all-projects-title { 11 | @include portal-title; 12 | margin-bottom: 60px; 13 | } 14 | 15 | .all-projects { 16 | display: grid; 17 | grid-template-columns: repeat(3, 1fr); 18 | grid-gap: 20px; 19 | align-items: center; 20 | justify-items: center; 21 | margin-bottom: 100px; 22 | } -------------------------------------------------------------------------------- /src/components/AllProjects/components/Project.jsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import './Project.css'; 3 | import { Link } from "react-router-dom"; 4 | 5 | const Project = ({ project: { id, images, title, elevator_pitch } }) => { 6 | return ( 7 | 8 | 14 |
15 |
{title}
16 |
{elevator_pitch}
17 |
18 | 19 | ); 20 | } 21 | 22 | export default Project; 23 | 24 | // { 25 | // techStack.map((techStack, index) => { 26 | // return ( 27 | //
{techStack}
28 | // ) 29 | // }) 30 | // } -------------------------------------------------------------------------------- /src/components/AllProjects/components/Project.scss: -------------------------------------------------------------------------------- 1 | @import '../../../styles/abstracts/_variables.scss'; 2 | 3 | .project { 4 | width: 100%; 5 | box-shadow: $box-shadow; 6 | color: $dark-grey; 7 | } 8 | .project-image { 9 | height: 250px; 10 | width: 320px; 11 | object-fit: cover; 12 | border: 1px solid $light-grey; 13 | } 14 | 15 | .project-info { 16 | background-color: white; 17 | padding: 10px; 18 | border: 1px solid $lighter-grey; 19 | margin-top: -7px; 20 | min-height: 120px; 21 | } 22 | 23 | .project-title { 24 | text-align: left; 25 | font-size: 14px; 26 | font-weight: 600; 27 | margin-bottom: 5px; 28 | } 29 | 30 | .project-description { 31 | font-size: 14px; 32 | } -------------------------------------------------------------------------------- /src/components/AllProjects/graphql/allProjectsQuery.js: -------------------------------------------------------------------------------- 1 | import { gql } from "apollo-boost" 2 | 3 | const allProjectsQuery = gql` 4 | query allProjects { 5 | projects(limit: 20) { 6 | id 7 | title 8 | elevator_pitch 9 | } 10 | } 11 | ` 12 | 13 | 14 | // images(only_main:true) { 15 | // id 16 | // order 17 | // url 18 | // } 19 | 20 | export default allProjectsQuery -------------------------------------------------------------------------------- /src/components/AllProjects/index.jsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import allProjectsQuery from './graphql/allProjectsQuery'; 3 | import Request from "../utilities/Request"; 4 | import Project from './components/Project'; 5 | import './AllProjects.css'; 6 | 7 | class AllProjects extends React.Component { 8 | state = { 9 | projects: null 10 | } 11 | 12 | componentDidMount() { 13 | const { projects } = this.props.data; 14 | this.setState({ projects }) 15 | } 16 | 17 | renderProjects = () => { 18 | const { projects } = this.state; 19 | return projects.map((project, idx) => { 20 | return 21 | }) 22 | } 23 | 24 | render() { 25 | let { projects } = this.state; 26 | return ( 27 |
28 |
All Projects
29 |
{projects && this.renderProjects()}
30 |
31 | ) 32 | } 33 | } 34 | 35 | export default props => ( 36 | ) 42 | -------------------------------------------------------------------------------- /src/components/DynamicForm/UTC.data.js: -------------------------------------------------------------------------------- 1 | const UTC = [ 2 | 'UTC -12', 3 | 'UTC -11', 4 | 'UTC -10', 5 | 'UTC -9', 6 | 'UTC -9:30', 7 | 'UTC -9', 8 | 'UTC -8 (ex, California)', 9 | 'UTC -7 (ex, Colorado)', 10 | 'UTC -6 (ex, Texas)', 11 | 'UTC -5 (ex, New York)', 12 | 'UTC -4', 13 | 'UTC -3', 14 | 'UTC -2', 15 | 'UTC -1', 16 | 'UTC 0 (ex, Ireland)', 17 | 'UTC +1 (ex, Denmark)', 18 | 'UTC +2 (ex, Greece)', 19 | 'UTC +3', 20 | 'UTC +4', 21 | 'UTC +4:30', 22 | 'UTC +5', 23 | 'UTC +5:30 (ex, India)', 24 | 'UTC +6', 25 | 'UTC +6:30', 26 | 'UTC +7 (ex, Thailand)', 27 | 'UTC +8 (ex, China)', 28 | 'UTC +9 (ex, Japan)', 29 | 'UTC +10', 30 | 'UTC +11', 31 | 'UTC +12', 32 | 'UTC +13', 33 | 'UTC +14', 34 | ] 35 | 36 | export default UTC; -------------------------------------------------------------------------------- /src/components/DynamicForm/components/DynamicFormMaker/QuestionComponents/SkillSetter/ItemTypes.js: -------------------------------------------------------------------------------- 1 | export const ItemTypes = { 2 | SKILL_CARD: 'skill-card' 3 | } -------------------------------------------------------------------------------- /src/components/DynamicForm/components/DynamicFormMaker/QuestionComponents/SkillSetter/RenderChosenSkills.jsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import PropTypes from 'prop-types'; 3 | import SourceSkillCard from './SourceSkillCard'; 4 | import { ItemTypes } from './ItemTypes'; 5 | import { DropTarget } from 'react-dnd'; 6 | 7 | const skillTarget = { 8 | drop(props, monitor) { 9 | return { 10 | position: props.position, 11 | skill: monitor.getItem().skillId, 12 | addSkillHandler: props.addSkillHandler 13 | } 14 | } 15 | } 16 | 17 | function collect(connect, monitor) { 18 | return { 19 | connectDropTarget: connect.dropTarget(), 20 | isOver: monitor.isOver() 21 | } 22 | } 23 | 24 | const RenderChosenSkills = ({ SKILL, connectDropTarget, isOver, position }) => { 25 | return connectDropTarget( 26 |
27 |
{position + 1}
28 | { 29 | SKILL && SKILL.id && 30 | } 31 |
32 | ) 33 | } 34 | 35 | RenderChosenSkills.propTypes = { 36 | connectDropTarget: PropTypes.func.isRequired, 37 | isOver: PropTypes.bool.isRequired 38 | }; 39 | 40 | export default DropTarget(ItemTypes.SKILL_CARD, skillTarget, collect)(RenderChosenSkills); -------------------------------------------------------------------------------- /src/components/DynamicForm/components/DynamicFormMaker/QuestionComponents/SkillSetter/RenderSkills.jsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import SourceSkillCard from './SourceSkillCard'; 3 | import { ItemTypes } from './ItemTypes'; 4 | import { DropTarget } from 'react-dnd'; 5 | 6 | const skillTarget = { 7 | drop(props, monitor) { 8 | return { 9 | skill: monitor.getItem().skillId, 10 | removeSkillHandler: props.removeSkillHandler 11 | } 12 | } 13 | } 14 | 15 | function collect(connect, monitor) { 16 | return { 17 | connectDropTarget: connect.dropTarget(), 18 | isOver: monitor.isOver() 19 | } 20 | } 21 | 22 | const RenderSkills = ({ SKILL_ARRAY, connectDropTarget }) => { 23 | if (!SKILL_ARRAY.length) return null 24 | return connectDropTarget( 25 |
26 |
{SKILL_ARRAY[0].category}
27 | { 28 | SKILL_ARRAY.map((skill, idx) => { 29 | return 30 | }) 31 | } 32 |
33 | ) 34 | } 35 | 36 | export default DropTarget(ItemTypes.SKILL_CARD, skillTarget, collect)(RenderSkills); -------------------------------------------------------------------------------- /src/components/DynamicForm/components/DynamicFormMaker/QuestionComponents/SkillSetter/SourceSkillCard.jsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import PropTypes from 'prop-types'; 3 | import { ItemTypes } from './ItemTypes'; 4 | import { DragSource } from 'react-dnd'; 5 | 6 | const skillSource = { 7 | beginDrag(props) { 8 | return { 9 | skillId: props.skill 10 | } 11 | }, 12 | endDrag(props, monitor, component) { 13 | let results = monitor.getDropResult(); 14 | if (!results) { 15 | // dragged outside of targetSources 16 | // do nothing 17 | return; 18 | } else if (results.addSkillHandler) { 19 | let { addSkillHandler, position, skill } = results; 20 | return addSkillHandler(position, skill); 21 | } else if (results.removeSkillHandler) { 22 | let { removeSkillHandler, skill } = results; 23 | return removeSkillHandler(skill) 24 | } 25 | } 26 | } 27 | 28 | function collect(connect, monitor) { 29 | return { 30 | connectDragSource: connect.dragSource(), 31 | isDragging: monitor.isDragging() 32 | } 33 | } 34 | 35 | const SourceSkillCard = ({ skill, connectDragSource, isDragging, chosen }) => { 36 | return connectDragSource( 37 |
41 | {skill.name} 42 |
43 | ) 44 | } 45 | 46 | SourceSkillCard.propTypes = { 47 | connectDragSource: PropTypes.func.isRequired, 48 | isDragging: PropTypes.bool.isRequired 49 | } 50 | 51 | export default DragSource(ItemTypes.SKILL_CARD, skillSource, collect)(SourceSkillCard); -------------------------------------------------------------------------------- /src/components/DynamicForm/components/DynamicFormMaker/QuestionComponents/SkillSetter/index.jsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import SkillSetter from './SkillSetter'; 3 | 4 | const skill_setter = (data, onFormChange, form_data) => { 5 | return ( 6 | 7 | ) 8 | } 9 | 10 | export default skill_setter; 11 | -------------------------------------------------------------------------------- /src/components/DynamicForm/components/DynamicFormMaker/QuestionComponents/checkbox.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | const CheckboxComponent = ( 4 | { 5 | answer, 6 | field_name, 7 | index, 8 | onFormChange, 9 | form_data, 10 | minlength, 11 | maxlength, 12 | }, 13 | ) => { 14 | const value = form_data[field_name]; 15 | return ( 16 |
17 | 33 |
34 | ); 35 | } 36 | 37 | export { CheckboxComponent }; 38 | 39 | // maps over options array creating Checkbox components 40 | export default ( 41 | { field_name, options, minlength, maxlength }, 42 | onFormChange, 43 | form_data, 44 | ) => options.map( 45 | (answer, index) => ( 46 | 56 | ), 57 | ); 58 | -------------------------------------------------------------------------------- /src/components/DynamicForm/components/DynamicFormMaker/QuestionComponents/checkbox_2_column.jsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | 3 | import { CheckboxComponent } from "./checkbox"; 4 | 5 | export default ( 6 | { field_name, options, minlength, maxlength }, 7 | onFormChange, 8 | form_data, 9 | ) => { 10 | // TODO: refactor to map over options directly 11 | const firstHalf = []; 12 | const secondHalf = []; 13 | for (var i = 0; i < (options).length; i++) { 14 | if (i < (options).length / 2) { 15 | firstHalf.push(options[i]); 16 | } else { 17 | secondHalf.push(options[i]); 18 | } 19 | } 20 | 21 | return ( 22 |
23 |
24 | { 25 | firstHalf.map( 26 | (answer, index) => ( 27 | 37 | ), 38 | ) 39 | } 40 |
41 |
42 | { 43 | secondHalf.map( 44 | (answer, index) => ( 45 | 55 | ), 56 | ) 57 | } 58 |
59 |
60 | ) 61 | } -------------------------------------------------------------------------------- /src/components/DynamicForm/components/DynamicFormMaker/QuestionComponents/date.jsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | 3 | export default ( 4 | { input_type, field_name, minlength, maxlength }, 5 | onFormChange, 6 | form_data, 7 | ) => ( 8 | onFormChange( 15 | { currentTarget, min: minlength, max: maxlength } 16 | ) 17 | } 18 | /> 19 | ); 20 | -------------------------------------------------------------------------------- /src/components/DynamicForm/components/DynamicFormMaker/QuestionComponents/dropdown.jsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import Select from "react-select"; 3 | 4 | const dropdown = ( 5 | { field_name, input_type, options }, 6 | onFormChange, 7 | form_data, 8 | ) => { 9 | // map to React-Select option format 10 | const mappedOptions = options.map(({ text, value }) => ({ label: text, value })); 11 | const value = form_data[field_name]; 12 | // React-Select wants {label, value} for value prop 13 | // have to find corresponding label for the chosen value to render properly 14 | const option = mappedOptions.find(el => el.value === value); 15 | const label = option ? option.label : ''; 16 | return ( 17 | inputBoxFilter(e)} 56 | /> 57 | {renderMultiple()} 58 | 59 | 60 | 61 | ) 62 | } 63 | 64 | export default dropdown_multiple; 65 | -------------------------------------------------------------------------------- /src/components/DynamicForm/components/DynamicFormMaker/QuestionComponents/not_functional/radio_with_other_text_input.jsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | 3 | // TODO: this is currently unsupported. when its ready notify backend to add to 4 | // question input_type enum 5 | export class RadioWithInputComponent extends React.Component { 6 | render() { 7 | const { answer, field_name, index, onFormChange, form_data } = this.props; 8 | return ( 9 |
10 | 23 |
24 | ) 25 | } 26 | // render() { 27 | // const { answer, field_name, index, onFormChange, form_data } = this.props; 28 | // return ( 29 | //
30 | // onFormChange(e)} 34 | // className="form-input" 35 | // /> 36 | // 49 | //
50 | // ) 51 | // } 52 | }; 53 | -------------------------------------------------------------------------------- /src/components/DynamicForm/components/DynamicFormMaker/QuestionComponents/radio.jsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | 3 | const RadioComponent = ( 4 | { answer, field_name, index, onFormChange, form_data }, 5 | ) => { 6 | const value = form_data[field_name]; 7 | return ( 8 |
9 | 21 |
22 | ); 23 | } 24 | 25 | export { RadioComponent }; 26 | 27 | // maps over options to create Radio Components 28 | export default ( 29 | { field_name, options }, 30 | onFormChange, 31 | form_data, 32 | ) => options.map( 33 | (answer, index) => ( 34 | 42 | ), 43 | ); 44 | -------------------------------------------------------------------------------- /src/components/DynamicForm/components/DynamicFormMaker/QuestionComponents/team_progress_sentiment_buttons.jsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | // TODO: style these to have emojis or some text besides the color 3 | // options: [red, yellow, green] 4 | const FormButton = ({ color, onClick, data, id }) => { 5 | return ( 6 | onClick(e)} 11 | name={id} 12 | /> 13 | ); 14 | } 15 | 16 | const team_progress_sentiment_buttons = (data, onFormChange, form_data) => { 17 | return ( 18 |
19 | {data.options.map((option, index) => { 20 | const answer = option.value || option; 21 | return ( 22 | 29 | ) 30 | })} 31 |
32 | ) 33 | } 34 | 35 | export default team_progress_sentiment_buttons; 36 | -------------------------------------------------------------------------------- /src/components/DynamicForm/components/DynamicFormMaker/QuestionComponents/text.jsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | // TODO: support 'date' type. confirm the format the date input returns 3 | // matches what is expected on the backend 4 | export default ( 5 | { input_type, field_name, minlength, maxlength }, 6 | onFormChange, 7 | form_data, 8 | ) => ( 9 | onFormChange( 18 | { currentTarget, min: minlength, max: maxlength } 19 | ) 20 | } 21 | /> 22 | ); 23 | -------------------------------------------------------------------------------- /src/components/DynamicForm/components/DynamicFormMaker/QuestionComponents/textarea.jsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | 3 | export default ( 4 | { field_name, minlength, maxlength }, 5 | onFormChange, 6 | form_data, 7 | ) => ( 8 |