{"action":"opened","number":72,"pull_request":{"url":"https://api.github.com/repos/LambdaSchool/Sprint-Challenge-Lambda-Times-React/pulls/72","id":206057480,"node_id":"MDExOlB1bGxSZXF1ZXN0MjA2MDU3NDgw","html_url":"https://github.com/LambdaSchool/Sprint-Challenge-Lambda-Times-React/pull/72","diff_url":"https://github.com/LambdaSchool/Sprint-Challenge-Lambda-Times-React/pull/72.diff","patch_url":"https://github.com/LambdaSchool/Sprint-Challenge-Lambda-Times-React/pull/72.patch","issue_url":"https://api.github.com/repos/LambdaSchool/Sprint-Challenge-Lambda-Times-React/issues/72","number":72,"state":"open","locked":false,"title":"John O'Rourke's Lambda Times React Sprint","user":{"login":"johnoro","id":34101601,"node_id":"MDQ6VXNlcjM0MTAxNjAx","avatar_url":"https://avatars0.githubusercontent.com/u/34101601?v=4","gravatar_id":"","url":"https://api.github.com/users/johnoro","html_url":"https://github.com/johnoro","followers_url":"https://api.github.com/users/johnoro/followers","following_url":"https://api.github.com/users/johnoro/following{/other_user}","gists_url":"https://api.github.com/users/johnoro/gists{/gist_id}","starred_url":"https://api.github.com/users/johnoro/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/johnoro/subscriptions","organizations_url":"https://api.github.com/users/johnoro/orgs","repos_url":"https://api.github.com/users/johnoro/repos","events_url":"https://api.github.com/users/johnoro/events{/privacy}","received_events_url":"https://api.github.com/users/johnoro/received_events","type":"User","site_admin":false},"body":"# Sprint Challenge: Lambda Times (React)\r\n\r\nIn the past week we have taken a deeper dive into React. We went from writing small functional components, to building class components, using lifecycle events, type checking our props, and styling our components dynamically. React is a powerful library and to be able to use all of these concepts while building an app will be extremely beneficial. In this sprint challenge, we will be revisiting all of these concepts. Remember, this is a way for you to analyze your understanding of the concepts presented this week. Feel free to reference old code, but please refrain from copy/pasting, even rewriting old code can teach you something new! Take your time, and have fun!\r\n\r\n## Assessing your Intermediate React Fu\r\n* Answers to your written questions will be recorded in *ANSWERS.md* \r\n* This is to be worked on alone but you can use outside resources. You can *reference* any old code you may have, and documentation, however, please refrain from copying and pasting any of your answers. Try and understand the question and put your responses in your own words.\r\n\r\n### Questions:\r\n1. What are PropTypes used for?\r\n2. What is a lifecycle event in React?\r\n3. What is a Higher Order Component?\r\n4. What are three different ways to style components in React? \r\n\r\n## Challenge\r\nToday we are going to revisit an old friend, Lambda Times! This time around, we are going to take our old Vanilla Javascript app, and convert it to a React app! Much of the initial work has been done for you, but there are some missing pieces you will need to complete to get the app working properly. As before, the styling is modeled after the [LA Times Website](http://www.latimes.com). We have gone through the trouble of creating your base React app, and including some components. Included as well is a CSS file that you may reference when writing your own code. Look through the application code. If you have the old Lambda Times (Applied Javascript) sprint challenge handy, you may compare how the structure of this app differs from that, noting how React gives us very easy to use concise components. From within the `lambdatimes` folder run `yarn` and then `yarn start`. This will open your locally hosted application in your browser. Once you are ready move onto the next steps:\r\n\r\n### Part I\r\n* Find the `TopBar` and `Header` components. Convert these two components to Styled Components. You should not have any `className` props when you are finished. Once you have finished the `TopBar` and `Header` components, please move on to Part II. If you have time at the end, you may convert all of the components to styled-components.\r\n\r\n### Part II\r\n* Inside the `Content` folder you will find all 5 components that make up the content of the application. The flow goes like this: `Content > Tabs > Tab` and `Content > Cards > Card`. Follow the directions in the `Content` component to get your data ready.\r\n* Go through the `Tabs`, `Tab`, `Cards`, and `Card` components following the instructions, and passing data and props to get the tabs and cards to appear on the screen.\r\n* Once the Tabs and Cards are rendering to the screen complete the `changeSelected` and `filterCards` functions in the `Content` component.\r\n* You should now be able to filter cards using your tabs!\r\n\r\n### Part III\r\n* Make sure all of your props being passed are validated using PropTypes. \r\n\r\n### Part IV\r\n* Add another tab and some more cards to your data, and see your work in action!\r\n\r\n## Stretch Challenge\r\nThere are multiple stretch challenges available to you, you may attempt these in any order. Remember, stretch challenges are only to give you extra time to work on these concepts, if you do not get to these challenges, that is fine! Continue working on your main objectives.\r\n\r\n* Refactor the app, so that it uses ALL styled components. There should be no `className` props on any component. To truly test this, delete the CSS file.  \r\n\r\n* You will find a `Carousel` component in your Content folder. Complete this component, rendering a functional carousel. Add this component between your `Tabs` and `Cards` components within the `Content` component. Added challenge: make it so that there is infinite scroll to the right and the left.\r\n\r\n* Add a login and an HOC. Make it so that when a user clicks on the login button at the top, a login modal is shown (Use React-strap). Have a user login, validating the login credentials on the `localStorage`. Add a Higher Order Component that wraps the `Content` component, only allowing it to render once a user has logged in. For more instructions see this README: [React-Insta-Clone: Day III](https://github.com/LambdaSchool/React-Insta-Clone/blob/master/DAY_THREE_README.md#tasks-day-iii)","created_at":"2018-08-03T15:02:30Z","updated_at":"2018-08-03T15:02:30Z","closed_at":null,"merged_at":null,"merge_commit_sha":null,"assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/LambdaSchool/Sprint-Challenge-Lambda-Times-React/pulls/72/commits","review_comments_url":"https://api.github.com/repos/LambdaSchool/Sprint-Challenge-Lambda-Times-React/pulls/72/comments","review_comment_url":"https://api.github.com/repos/LambdaSchool/Sprint-Challenge-Lambda-Times-React/pulls/comments{/number}","comments_url":"https://api.github.com/repos/LambdaSchool/Sprint-Challenge-Lambda-Times-React/issues/72/comments","statuses_url":"https://api.github.com/repos/LambdaSchool/Sprint-Challenge-Lambda-Times-React/statuses/30a4df77f463016eb02425288cc8dfcba88a5c3a","head":{"label":"johnoro:master","ref":"master","sha":"30a4df77f463016eb02425288cc8dfcba88a5c3a","user":{"login":"johnoro","id":34101601,"node_id":"MDQ6VXNlcjM0MTAxNjAx","avatar_url":"https://avatars0.githubusercontent.com/u/34101601?v=4","gravatar_id":"","url":"https://api.github.com/users/johnoro","html_url":"https://github.com/johnoro","followers_url":"https://api.github.com/users/johnoro/followers","following_url":"https://api.github.com/users/johnoro/following{/other_user}","gists_url":"https://api.github.com/users/johnoro/gists{/gist_id}","starred_url":"https://api.github.com/users/johnoro/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/johnoro/subscriptions","organizations_url":"https://api.github.com/users/johnoro/orgs","repos_url":"https://api.github.com/users/johnoro/repos","events_url":"https://api.github.com/users/johnoro/events{/privacy}","received_events_url":"https://api.github.com/users/johnoro/received_events","type":"User","site_admin":false},"repo":{"id":143440447,"node_id":"MDEwOlJlcG9zaXRvcnkxNDM0NDA0NDc=","name":"Sprint-Challenge-Lambda-Times-React","full_name":"johnoro/Sprint-Challenge-Lambda-Times-React","owner":{"login":"johnoro","id":34101601,"node_id":"MDQ6VXNlcjM0MTAxNjAx","avatar_url":"https://avatars0.githubusercontent.com/u/34101601?v=4","gravatar_id":"","url":"https://api.github.com/users/johnoro","html_url":"https://github.com/johnoro","followers_url":"https://api.github.com/users/johnoro/followers","following_url":"https://api.github.com/users/johnoro/following{/other_user}","gists_url":"https://api.github.com/users/johnoro/gists{/gist_id}","starred_url":"https://api.github.com/users/johnoro/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/johnoro/subscriptions","organizations_url":"https://api.github.com/users/johnoro/orgs","repos_url":"https://api.github.com/users/johnoro/repos","events_url":"https://api.github.com/users/johnoro/events{/privacy}","received_events_url":"https://api.github.com/users/johnoro/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/johnoro/Sprint-Challenge-Lambda-Times-React","description":null,"fork":true,"url":"https://api.github.com/repos/johnoro/Sprint-Challenge-Lambda-Times-React","forks_url":"https://api.github.com/repos/johnoro/Sprint-Challenge-Lambda-Times-React/forks","keys_url":"https://api.github.com/repos/johnoro/Sprint-Challenge-Lambda-Times-React/keys{/key_id}","collaborators_url":"https://api.github.com/repos/johnoro/Sprint-Challenge-Lambda-Times-React/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/johnoro/Sprint-Challenge-Lambda-Times-React/teams","hooks_url":"https://api.github.com/repos/johnoro/Sprint-Challenge-Lambda-Times-React/hooks","issue_events_url":"https://api.github.com/repos/johnoro/Sprint-Challenge-Lambda-Times-React/issues/events{/number}","events_url":"https://api.github.com/repos/johnoro/Sprint-Challenge-Lambda-Times-React/events","assignees_url":"https://api.github.com/repos/johnoro/Sprint-Challenge-Lambda-Times-React/assignees{/user}","branches_url":"https://api.github.com/repos/johnoro/Sprint-Challenge-Lambda-Times-React/branches{/branch}","tags_url":"https://api.github.com/repos/johnoro/Sprint-Challenge-Lambda-Times-React/tags","blobs_url":"https://api.github.com/repos/johnoro/Sprint-Challenge-Lambda-Times-React/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/johnoro/Sprint-Challenge-Lambda-Times-React/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/johnoro/Sprint-Challenge-Lambda-Times-React/git/refs{/sha}","trees_url":"https://api.github.com/repos/johnoro/Sprint-Challenge-Lambda-Times-React/git/trees{/sha}","statuses_url":"https://api.github.com/repos/johnoro/Sprint-Challenge-Lambda-Times-React/statuses/{sha}","languages_url":"https://api.github.com/repos/johnoro/Sprint-Challenge-Lambda-Times-React/languages","stargazers_url":"https://api.github.com/repos/johnoro/Sprint-Challenge-Lambda-Times-React/stargazers","contributors_url":"https://api.github.com/repos/johnoro/Sprint-Challenge-Lambda-Times-React/contributors","subscribers_url":"https://api.github.com/repos/johnoro/Sprint-Challenge-Lambda-Times-React/subscribers","subscription_url":"https://api.github.com/repos/johnoro/Sprint-Challenge-Lambda-Times-React/subscription","commits_url":"https://api.github.com/repos/johnoro/Sprint-Challenge-Lambda-Times-React/commits{/sha}","git_commits_url":"https://api.github.com/repos/johnoro/Sprint-Challenge-Lambda-Times-React/git/commits{/sha}","comments_url":"https://api.github.com/repos/johnoro/Sprint-Challenge-Lambda-Times-React/comments{/number}","issue_comment_url":"https://api.github.com/repos/johnoro/Sprint-Challenge-Lambda-Times-React/issues/comments{/number}","contents_url":"https://api.github.com/repos/johnoro/Sprint-Challenge-Lambda-Times-React/contents/{+path}","compare_url":"https://api.github.com/repos/johnoro/Sprint-Challenge-Lambda-Times-React/compare/{base}...{head}","merges_url":"https://api.github.com/repos/johnoro/Sprint-Challenge-Lambda-Times-React/merges","archive_url":"https://api.github.com/repos/johnoro/Sprint-Challenge-Lambda-Times-React/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/johnoro/Sprint-Challenge-Lambda-Times-React/downloads","issues_url":"https://api.github.com/repos/johnoro/Sprint-Challenge-Lambda-Times-React/issues{/number}","pulls_url":"https://api.github.com/repos/johnoro/Sprint-Challenge-Lambda-Times-React/pulls{/number}","milestones_url":"https://api.github.com/repos/johnoro/Sprint-Challenge-Lambda-Times-React/milestones{/number}","notifications_url":"https://api.github.com/repos/johnoro/Sprint-Challenge-Lambda-Times-React/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/johnoro/Sprint-Challenge-Lambda-Times-React/labels{/name}","releases_url":"https://api.github.com/repos/johnoro/Sprint-Challenge-Lambda-Times-React/releases{/id}","deployments_url":"https://api.github.com/repos/johnoro/Sprint-Challenge-Lambda-Times-React/deployments","created_at":"2018-08-03T14:57:32Z","updated_at":"2018-08-03T15:01:23Z","pushed_at":"2018-08-03T15:01:21Z","git_url":"git://github.com/johnoro/Sprint-Challenge-Lambda-Times-React.git","ssh_url":"git@github.com:johnoro/Sprint-Challenge-Lambda-Times-React.git","clone_url":"https://github.com/johnoro/Sprint-Challenge-Lambda-Times-React.git","svn_url":"https://github.com/johnoro/Sprint-Challenge-Lambda-Times-React","homepage":null,"size":1036,"stargazers_count":0,"watchers_count":0,"language":"JavaScript","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":null,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"LambdaSchool:master","ref":"master","sha":"37c22eff1b4ab3d19e40c958a566d8ed57406378","user":{"login":"LambdaSchool","id":24780114,"node_id":"MDEyOk9yZ2FuaXphdGlvbjI0NzgwMTE0","avatar_url":"https://avatars1.githubusercontent.com/u/24780114?v=4","gravatar_id":"","url":"https://api.github.com/users/LambdaSchool","html_url":"https://github.com/LambdaSchool","followers_url":"https://api.github.com/users/LambdaSchool/followers","following_url":"https://api.github.com/users/LambdaSchool/following{/other_user}","gists_url":"https://api.github.com/users/LambdaSchool/gists{/gist_id}","starred_url":"https://api.github.com/users/LambdaSchool/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/LambdaSchool/subscriptions","organizations_url":"https://api.github.com/users/LambdaSchool/orgs","repos_url":"https://api.github.com/users/LambdaSchool/repos","events_url":"https://api.github.com/users/LambdaSchool/events{/privacy}","received_events_url":"https://api.github.com/users/LambdaSchool/received_events","type":"Organization","site_admin":false},"repo":{"id":137974893,"node_id":"MDEwOlJlcG9zaXRvcnkxMzc5NzQ4OTM=","name":"Sprint-Challenge-Lambda-Times-React","full_name":"LambdaSchool/Sprint-Challenge-Lambda-Times-React","owner":{"login":"LambdaSchool","id":24780114,"node_id":"MDEyOk9yZ2FuaXphdGlvbjI0NzgwMTE0","avatar_url":"https://avatars1.githubusercontent.com/u/24780114?v=4","gravatar_id":"","url":"https://api.github.com/users/LambdaSchool","html_url":"https://github.com/LambdaSchool","followers_url":"https://api.github.com/users/LambdaSchool/followers","following_url":"https://api.github.com/users/LambdaSchool/following{/other_user}","gists_url":"https://api.github.com/users/LambdaSchool/gists{/gist_id}","starred_url":"https://api.github.com/users/LambdaSchool/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/LambdaSchool/subscriptions","organizations_url":"https://api.github.com/users/LambdaSchool/orgs","repos_url":"https://api.github.com/users/LambdaSchool/repos","events_url":"https://api.github.com/users/LambdaSchool/events{/privacy}","received_events_url":"https://api.github.com/users/LambdaSchool/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/LambdaSchool/Sprint-Challenge-Lambda-Times-React","description":null,"fork":false,"url":"https://api.github.com/repos/LambdaSchool/Sprint-Challenge-Lambda-Times-React","forks_url":"https://api.github.com/repos/LambdaSchool/Sprint-Challenge-Lambda-Times-React/forks","keys_url":"https://api.github.com/repos/LambdaSchool/Sprint-Challenge-Lambda-Times-React/keys{/key_id}","collaborators_url":"https://api.github.com/repos/LambdaSchool/Sprint-Challenge-Lambda-Times-React/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/LambdaSchool/Sprint-Challenge-Lambda-Times-React/teams","hooks_url":"https://api.github.com/repos/LambdaSchool/Sprint-Challenge-Lambda-Times-React/hooks","issue_events_url":"https://api.github.com/repos/LambdaSchool/Sprint-Challenge-Lambda-Times-React/issues/events{/number}","events_url":"https://api.github.com/repos/LambdaSchool/Sprint-Challenge-Lambda-Times-React/events","assignees_url":"https://api.github.com/repos/LambdaSchool/Sprint-Challenge-Lambda-Times-React/assignees{/user}","branches_url":"https://api.github.com/repos/LambdaSchool/Sprint-Challenge-Lambda-Times-React/branches{/branch}","tags_url":"https://api.github.com/repos/LambdaSchool/Sprint-Challenge-Lambda-Times-React/tags","blobs_url":"https://api.github.com/repos/LambdaSchool/Sprint-Challenge-Lambda-Times-React/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/LambdaSchool/Sprint-Challenge-Lambda-Times-React/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/LambdaSchool/Sprint-Challenge-Lambda-Times-React/git/refs{/sha}","trees_url":"https://api.github.com/repos/LambdaSchool/Sprint-Challenge-Lambda-Times-React/git/trees{/sha}","statuses_url":"https://api.github.com/repos/LambdaSchool/Sprint-Challenge-Lambda-Times-React/statuses/{sha}","languages_url":"https://api.github.com/repos/LambdaSchool/Sprint-Challenge-Lambda-Times-React/languages","stargazers_url":"https://api.github.com/repos/LambdaSchool/Sprint-Challenge-Lambda-Times-React/stargazers","contributors_url":"https://api.github.com/repos/LambdaSchool/Sprint-Challenge-Lambda-Times-React/contributors","subscribers_url":"https://api.github.com/repos/LambdaSchool/Sprint-Challenge-Lambda-Times-React/subscribers","subscription_url":"https://api.github.com/repos/LambdaSchool/Sprint-Challenge-Lambda-Times-React/subscription","commits_url":"https://api.github.com/repos/LambdaSchool/Sprint-Challenge-Lambda-Times-React/commits{/sha}","git_commits_url":"https://api.github.com/repos/LambdaSchool/Sprint-Challenge-Lambda-Times-React/git/commits{/sha}","comments_url":"https://api.github.com/repos/LambdaSchool/Sprint-Challenge-Lambda-Times-React/comments{/number}","issue_comment_url":"https://api.github.com/repos/LambdaSchool/Sprint-Challenge-Lambda-Times-React/issues/comments{/number}","contents_url":"https://api.github.com/repos/LambdaSchool/Sprint-Challenge-Lambda-Times-React/contents/{+path}","compare_url":"https://api.github.com/repos/LambdaSchool/Sprint-Challenge-Lambda-Times-React/compare/{base}...{head}","merges_url":"https://api.github.com/repos/LambdaSchool/Sprint-Challenge-Lambda-Times-React/merges","archive_url":"https://api.github.com/repos/LambdaSchool/Sprint-Challenge-Lambda-Times-React/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/LambdaSchool/Sprint-Challenge-Lambda-Times-React/downloads","issues_url":"https://api.github.com/repos/LambdaSchool/Sprint-Challenge-Lambda-Times-React/issues{/number}","pulls_url":"https://api.github.com/repos/LambdaSchool/Sprint-Challenge-Lambda-Times-React/pulls{/number}","milestones_url":"https://api.github.com/repos/LambdaSchool/Sprint-Challenge-Lambda-Times-React/milestones{/number}","notifications_url":"https://api.github.com/repos/LambdaSchool/Sprint-Challenge-Lambda-Times-React/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/LambdaSchool/Sprint-Challenge-Lambda-Times-React/labels{/name}","releases_url":"https://api.github.com/repos/LambdaSchool/Sprint-Challenge-Lambda-Times-React/releases{/id}","deployments_url":"https://api.github.com/repos/LambdaSchool/Sprint-Challenge-Lambda-Times-React/deployments","created_at":"2018-06-20T03:22:10Z","updated_at":"2018-08-03T14:37:35Z","pushed_at":"2018-08-03T15:00:09Z","git_url":"git://github.com/LambdaSchool/Sprint-Challenge-Lambda-Times-React.git","ssh_url":"git@github.com:LambdaSchool/Sprint-Challenge-Lambda-Times-React.git","clone_url":"https://github.com/LambdaSchool/Sprint-Challenge-Lambda-Times-React.git","svn_url":"https://github.com/LambdaSchool/Sprint-Challenge-Lambda-Times-React","homepage":null,"size":1036,"stargazers_count":0,"watchers_count":0,"language":"JavaScript","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":87,"mirror_url":null,"archived":false,"open_issues_count":71,"license":null,"forks":87,"open_issues":71,"watchers":0,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/LambdaSchool/Sprint-Challenge-Lambda-Times-React/pulls/72"},"html":{"href":"https://github.com/LambdaSchool/Sprint-Challenge-Lambda-Times-React/pull/72"},"issue":{"href":"https://api.github.com/repos/LambdaSchool/Sprint-Challenge-Lambda-Times-React/issues/72"},"comments":{"href":"https://api.github.com/repos/LambdaSchool/Sprint-Challenge-Lambda-Times-React/issues/72/comments"},"review_comments":{"href":"https://api.github.com/repos/LambdaSchool/Sprint-Challenge-Lambda-Times-React/pulls/72/comments"},"review_comment":{"href":"https://api.github.com/repos/LambdaSchool/Sprint-Challenge-Lambda-Times-React/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/LambdaSchool/Sprint-Challenge-Lambda-Times-React/pulls/72/commits"},"statuses":{"href":"https://api.github.com/repos/LambdaSchool/Sprint-Challenge-Lambda-Times-React/statuses/30a4df77f463016eb02425288cc8dfcba88a5c3a"}},"author_association":"NONE","merged":false,"mergeable":null,"rebaseable":null,"mergeable_state":"unknown","merged_by":null,"comments":0,"review_comments":0,"maintainer_can_modify":true,"commits":1,"additions":22,"deletions":0,"changed_files":1}}
{"actor":{"display_login":"johnoro"}}