{"action":"created","comment":{"url":"https://api.github.com/repos/18F/cms-hitech-apd/pulls/comments/197560988","pull_request_review_id":131337380,"id":197560988,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDE5NzU2MDk4OA==","diff_hunk":"@@ -0,0 +1,65 @@\n+import PropTypes from 'prop-types';\n+import React, { Component } from 'react';\n+import { connect } from 'react-redux';\n+import Snackbar from '@material-ui/core/Snackbar';\n+\n+import { processQueue, closeNotification } from '../actions/notification';\n+\n+class Notification extends Component {\n+  handleClose = (_, reason) => {\n+    if (reason === 'clickaway') return;\n+    this.props.closeNotification();\n+  };\n+\n+  handleExited = () => {\n+    this.props.processQueue();","path":"web/src/containers/Notification.js","position":15,"original_position":15,"commit_id":"616d079eb1d4740c561627f72e4324ff5acb8b36","original_commit_id":"616d079eb1d4740c561627f72e4324ff5acb8b36","user":{"login":"mgwalker","id":1775733,"node_id":"MDQ6VXNlcjE3NzU3MzM=","avatar_url":"https://avatars3.githubusercontent.com/u/1775733?v=4","gravatar_id":"","url":"https://api.github.com/users/mgwalker","html_url":"https://github.com/mgwalker","followers_url":"https://api.github.com/users/mgwalker/followers","following_url":"https://api.github.com/users/mgwalker/following{/other_user}","gists_url":"https://api.github.com/users/mgwalker/gists{/gist_id}","starred_url":"https://api.github.com/users/mgwalker/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mgwalker/subscriptions","organizations_url":"https://api.github.com/users/mgwalker/orgs","repos_url":"https://api.github.com/users/mgwalker/repos","events_url":"https://api.github.com/users/mgwalker/events{/privacy}","received_events_url":"https://api.github.com/users/mgwalker/received_events","type":"User","site_admin":false},"body":"And then pop the queue only after the previous notification has transitioned away.  Slick!","created_at":"2018-06-22T20:29:27Z","updated_at":"2018-06-22T20:29:27Z","html_url":"https://github.com/18F/cms-hitech-apd/pull/698#discussion_r197560988","pull_request_url":"https://api.github.com/repos/18F/cms-hitech-apd/pulls/698","author_association":"MEMBER","_links":{"self":{"href":"https://api.github.com/repos/18F/cms-hitech-apd/pulls/comments/197560988"},"html":{"href":"https://github.com/18F/cms-hitech-apd/pull/698#discussion_r197560988"},"pull_request":{"href":"https://api.github.com/repos/18F/cms-hitech-apd/pulls/698"}}},"pull_request":{"url":"https://api.github.com/repos/18F/cms-hitech-apd/pulls/698","id":196502128,"node_id":"MDExOlB1bGxSZXF1ZXN0MTk2NTAyMTI4","html_url":"https://github.com/18F/cms-hitech-apd/pull/698","diff_url":"https://github.com/18F/cms-hitech-apd/pull/698.diff","patch_url":"https://github.com/18F/cms-hitech-apd/pull/698.patch","issue_url":"https://api.github.com/repos/18F/cms-hitech-apd/issues/698","number":698,"state":"open","locked":false,"title":"add notification / snackbar system","user":{"login":"brendansudol","id":1060893,"node_id":"MDQ6VXNlcjEwNjA4OTM=","avatar_url":"https://avatars2.githubusercontent.com/u/1060893?v=4","gravatar_id":"","url":"https://api.github.com/users/brendansudol","html_url":"https://github.com/brendansudol","followers_url":"https://api.github.com/users/brendansudol/followers","following_url":"https://api.github.com/users/brendansudol/following{/other_user}","gists_url":"https://api.github.com/users/brendansudol/gists{/gist_id}","starred_url":"https://api.github.com/users/brendansudol/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/brendansudol/subscriptions","organizations_url":"https://api.github.com/users/brendansudol/orgs","repos_url":"https://api.github.com/users/brendansudol/repos","events_url":"https://api.github.com/users/brendansudol/events{/privacy}","received_events_url":"https://api.github.com/users/brendansudol/received_events","type":"User","site_admin":false},"body":"This adds a fairly robust, accessible notification / snackbar system.\r\n\r\nTo display a notification, one simply has to dispatch a `notify` action with a `message` param. i.e., `dispatch(notify('Success!'))`\r\n\r\nThe notification auto-hides after a configurable number of seconds, currently 3.\r\n\r\nIt can also handle consecutive notifications (i.e., triggering one while another is still visible); per [Google's guidelines](https://material.io/archive/guidelines/components/snackbars-toasts.html#snackbars-toasts-usage), when a second snackbar is triggered while the first is displayed, the first should start the contraction motion downwards before the second one animates upwards. I essentially followed this [implementation](https://material-ui.com/demos/snackbars/#consecutive-snackbars).\r\n\r\nThe impetus of this new component was https://github.com/18F/cms-hitech-apd/issues/655 and that issue should now be resolved.\r\n\r\npreview:\r\nhttps://cl.ly/sSn9\r\n\r\n### This pull request is ready to merge when...\r\n- [ ] Tests have been updated (and all tests are passing)\r\n- [ ] This code has been reviewed by someone other than the original author\r\n- [ ] The experience passes a basic manual accessibility audit (keyboard nav, screenreader, text scaling) OR an exemption is documented\r\n\r\n### This feature is done when...\r\n- [ ] Product has approved the experience\r\n","created_at":"2018-06-21T16:04:01Z","updated_at":"2018-06-22T20:29:27Z","closed_at":null,"merged_at":null,"merge_commit_sha":"c1714adb8db4381404cd516108bd314c5e27abe8","assignee":null,"assignees":[],"requested_reviewers":[{"login":"jeromeleecms","id":34279968,"node_id":"MDQ6VXNlcjM0Mjc5OTY4","avatar_url":"https://avatars2.githubusercontent.com/u/34279968?v=4","gravatar_id":"","url":"https://api.github.com/users/jeromeleecms","html_url":"https://github.com/jeromeleecms","followers_url":"https://api.github.com/users/jeromeleecms/followers","following_url":"https://api.github.com/users/jeromeleecms/following{/other_user}","gists_url":"https://api.github.com/users/jeromeleecms/gists{/gist_id}","starred_url":"https://api.github.com/users/jeromeleecms/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jeromeleecms/subscriptions","organizations_url":"https://api.github.com/users/jeromeleecms/orgs","repos_url":"https://api.github.com/users/jeromeleecms/repos","events_url":"https://api.github.com/users/jeromeleecms/events{/privacy}","received_events_url":"https://api.github.com/users/jeromeleecms/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/18F/cms-hitech-apd/pulls/698/commits","review_comments_url":"https://api.github.com/repos/18F/cms-hitech-apd/pulls/698/comments","review_comment_url":"https://api.github.com/repos/18F/cms-hitech-apd/pulls/comments{/number}","comments_url":"https://api.github.com/repos/18F/cms-hitech-apd/issues/698/comments","statuses_url":"https://api.github.com/repos/18F/cms-hitech-apd/statuses/616d079eb1d4740c561627f72e4324ff5acb8b36","head":{"label":"18F:bjs-add-snackbar","ref":"bjs-add-snackbar","sha":"616d079eb1d4740c561627f72e4324ff5acb8b36","user":{"login":"18F","id":6233994,"node_id":"MDEyOk9yZ2FuaXphdGlvbjYyMzM5OTQ=","avatar_url":"https://avatars0.githubusercontent.com/u/6233994?v=4","gravatar_id":"","url":"https://api.github.com/users/18F","html_url":"https://github.com/18F","followers_url":"https://api.github.com/users/18F/followers","following_url":"https://api.github.com/users/18F/following{/other_user}","gists_url":"https://api.github.com/users/18F/gists{/gist_id}","starred_url":"https://api.github.com/users/18F/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/18F/subscriptions","organizations_url":"https://api.github.com/users/18F/orgs","repos_url":"https://api.github.com/users/18F/repos","events_url":"https://api.github.com/users/18F/events{/privacy}","received_events_url":"https://api.github.com/users/18F/received_events","type":"Organization","site_admin":false},"repo":{"id":113234315,"node_id":"MDEwOlJlcG9zaXRvcnkxMTMyMzQzMTU=","name":"cms-hitech-apd","full_name":"18F/cms-hitech-apd","owner":{"login":"18F","id":6233994,"node_id":"MDEyOk9yZ2FuaXphdGlvbjYyMzM5OTQ=","avatar_url":"https://avatars0.githubusercontent.com/u/6233994?v=4","gravatar_id":"","url":"https://api.github.com/users/18F","html_url":"https://github.com/18F","followers_url":"https://api.github.com/users/18F/followers","following_url":"https://api.github.com/users/18F/following{/other_user}","gists_url":"https://api.github.com/users/18F/gists{/gist_id}","starred_url":"https://api.github.com/users/18F/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/18F/subscriptions","organizations_url":"https://api.github.com/users/18F/orgs","repos_url":"https://api.github.com/users/18F/repos","events_url":"https://api.github.com/users/18F/events{/privacy}","received_events_url":"https://api.github.com/users/18F/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/18F/cms-hitech-apd","description":"Centers for Medicare and Medicaid Services (CMS) HITECH funding request app","fork":false,"url":"https://api.github.com/repos/18F/cms-hitech-apd","forks_url":"https://api.github.com/repos/18F/cms-hitech-apd/forks","keys_url":"https://api.github.com/repos/18F/cms-hitech-apd/keys{/key_id}","collaborators_url":"https://api.github.com/repos/18F/cms-hitech-apd/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/18F/cms-hitech-apd/teams","hooks_url":"https://api.github.com/repos/18F/cms-hitech-apd/hooks","issue_events_url":"https://api.github.com/repos/18F/cms-hitech-apd/issues/events{/number}","events_url":"https://api.github.com/repos/18F/cms-hitech-apd/events","assignees_url":"https://api.github.com/repos/18F/cms-hitech-apd/assignees{/user}","branches_url":"https://api.github.com/repos/18F/cms-hitech-apd/branches{/branch}","tags_url":"https://api.github.com/repos/18F/cms-hitech-apd/tags","blobs_url":"https://api.github.com/repos/18F/cms-hitech-apd/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/18F/cms-hitech-apd/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/18F/cms-hitech-apd/git/refs{/sha}","trees_url":"https://api.github.com/repos/18F/cms-hitech-apd/git/trees{/sha}","statuses_url":"https://api.github.com/repos/18F/cms-hitech-apd/statuses/{sha}","languages_url":"https://api.github.com/repos/18F/cms-hitech-apd/languages","stargazers_url":"https://api.github.com/repos/18F/cms-hitech-apd/stargazers","contributors_url":"https://api.github.com/repos/18F/cms-hitech-apd/contributors","subscribers_url":"https://api.github.com/repos/18F/cms-hitech-apd/subscribers","subscription_url":"https://api.github.com/repos/18F/cms-hitech-apd/subscription","commits_url":"https://api.github.com/repos/18F/cms-hitech-apd/commits{/sha}","git_commits_url":"https://api.github.com/repos/18F/cms-hitech-apd/git/commits{/sha}","comments_url":"https://api.github.com/repos/18F/cms-hitech-apd/comments{/number}","issue_comment_url":"https://api.github.com/repos/18F/cms-hitech-apd/issues/comments{/number}","contents_url":"https://api.github.com/repos/18F/cms-hitech-apd/contents/{+path}","compare_url":"https://api.github.com/repos/18F/cms-hitech-apd/compare/{base}...{head}","merges_url":"https://api.github.com/repos/18F/cms-hitech-apd/merges","archive_url":"https://api.github.com/repos/18F/cms-hitech-apd/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/18F/cms-hitech-apd/downloads","issues_url":"https://api.github.com/repos/18F/cms-hitech-apd/issues{/number}","pulls_url":"https://api.github.com/repos/18F/cms-hitech-apd/pulls{/number}","milestones_url":"https://api.github.com/repos/18F/cms-hitech-apd/milestones{/number}","notifications_url":"https://api.github.com/repos/18F/cms-hitech-apd/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/18F/cms-hitech-apd/labels{/name}","releases_url":"https://api.github.com/repos/18F/cms-hitech-apd/releases{/id}","deployments_url":"https://api.github.com/repos/18F/cms-hitech-apd/deployments","created_at":"2017-12-05T21:20:35Z","updated_at":"2018-06-22T17:40:56Z","pushed_at":"2018-06-22T18:53:10Z","git_url":"git://github.com/18F/cms-hitech-apd.git","ssh_url":"git@github.com:18F/cms-hitech-apd.git","clone_url":"https://github.com/18F/cms-hitech-apd.git","svn_url":"https://github.com/18F/cms-hitech-apd","homepage":"https://hitech-apd.app.cloud.gov","size":4562,"stargazers_count":8,"watchers_count":8,"language":"JavaScript","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":3,"mirror_url":null,"archived":false,"open_issues_count":54,"license":{"key":"other","name":"Other","spdx_id":null,"url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":3,"open_issues":54,"watchers":8,"default_branch":"master"}},"base":{"label":"18F:master","ref":"master","sha":"5ef0d4d18e20cc9467e61a56fef039e9fb532713","user":{"login":"18F","id":6233994,"node_id":"MDEyOk9yZ2FuaXphdGlvbjYyMzM5OTQ=","avatar_url":"https://avatars0.githubusercontent.com/u/6233994?v=4","gravatar_id":"","url":"https://api.github.com/users/18F","html_url":"https://github.com/18F","followers_url":"https://api.github.com/users/18F/followers","following_url":"https://api.github.com/users/18F/following{/other_user}","gists_url":"https://api.github.com/users/18F/gists{/gist_id}","starred_url":"https://api.github.com/users/18F/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/18F/subscriptions","organizations_url":"https://api.github.com/users/18F/orgs","repos_url":"https://api.github.com/users/18F/repos","events_url":"https://api.github.com/users/18F/events{/privacy}","received_events_url":"https://api.github.com/users/18F/received_events","type":"Organization","site_admin":false},"repo":{"id":113234315,"node_id":"MDEwOlJlcG9zaXRvcnkxMTMyMzQzMTU=","name":"cms-hitech-apd","full_name":"18F/cms-hitech-apd","owner":{"login":"18F","id":6233994,"node_id":"MDEyOk9yZ2FuaXphdGlvbjYyMzM5OTQ=","avatar_url":"https://avatars0.githubusercontent.com/u/6233994?v=4","gravatar_id":"","url":"https://api.github.com/users/18F","html_url":"https://github.com/18F","followers_url":"https://api.github.com/users/18F/followers","following_url":"https://api.github.com/users/18F/following{/other_user}","gists_url":"https://api.github.com/users/18F/gists{/gist_id}","starred_url":"https://api.github.com/users/18F/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/18F/subscriptions","organizations_url":"https://api.github.com/users/18F/orgs","repos_url":"https://api.github.com/users/18F/repos","events_url":"https://api.github.com/users/18F/events{/privacy}","received_events_url":"https://api.github.com/users/18F/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/18F/cms-hitech-apd","description":"Centers for Medicare and Medicaid Services (CMS) HITECH funding request app","fork":false,"url":"https://api.github.com/repos/18F/cms-hitech-apd","forks_url":"https://api.github.com/repos/18F/cms-hitech-apd/forks","keys_url":"https://api.github.com/repos/18F/cms-hitech-apd/keys{/key_id}","collaborators_url":"https://api.github.com/repos/18F/cms-hitech-apd/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/18F/cms-hitech-apd/teams","hooks_url":"https://api.github.com/repos/18F/cms-hitech-apd/hooks","issue_events_url":"https://api.github.com/repos/18F/cms-hitech-apd/issues/events{/number}","events_url":"https://api.github.com/repos/18F/cms-hitech-apd/events","assignees_url":"https://api.github.com/repos/18F/cms-hitech-apd/assignees{/user}","branches_url":"https://api.github.com/repos/18F/cms-hitech-apd/branches{/branch}","tags_url":"https://api.github.com/repos/18F/cms-hitech-apd/tags","blobs_url":"https://api.github.com/repos/18F/cms-hitech-apd/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/18F/cms-hitech-apd/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/18F/cms-hitech-apd/git/refs{/sha}","trees_url":"https://api.github.com/repos/18F/cms-hitech-apd/git/trees{/sha}","statuses_url":"https://api.github.com/repos/18F/cms-hitech-apd/statuses/{sha}","languages_url":"https://api.github.com/repos/18F/cms-hitech-apd/languages","stargazers_url":"https://api.github.com/repos/18F/cms-hitech-apd/stargazers","contributors_url":"https://api.github.com/repos/18F/cms-hitech-apd/contributors","subscribers_url":"https://api.github.com/repos/18F/cms-hitech-apd/subscribers","subscription_url":"https://api.github.com/repos/18F/cms-hitech-apd/subscription","commits_url":"https://api.github.com/repos/18F/cms-hitech-apd/commits{/sha}","git_commits_url":"https://api.github.com/repos/18F/cms-hitech-apd/git/commits{/sha}","comments_url":"https://api.github.com/repos/18F/cms-hitech-apd/comments{/number}","issue_comment_url":"https://api.github.com/repos/18F/cms-hitech-apd/issues/comments{/number}","contents_url":"https://api.github.com/repos/18F/cms-hitech-apd/contents/{+path}","compare_url":"https://api.github.com/repos/18F/cms-hitech-apd/compare/{base}...{head}","merges_url":"https://api.github.com/repos/18F/cms-hitech-apd/merges","archive_url":"https://api.github.com/repos/18F/cms-hitech-apd/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/18F/cms-hitech-apd/downloads","issues_url":"https://api.github.com/repos/18F/cms-hitech-apd/issues{/number}","pulls_url":"https://api.github.com/repos/18F/cms-hitech-apd/pulls{/number}","milestones_url":"https://api.github.com/repos/18F/cms-hitech-apd/milestones{/number}","notifications_url":"https://api.github.com/repos/18F/cms-hitech-apd/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/18F/cms-hitech-apd/labels{/name}","releases_url":"https://api.github.com/repos/18F/cms-hitech-apd/releases{/id}","deployments_url":"https://api.github.com/repos/18F/cms-hitech-apd/deployments","created_at":"2017-12-05T21:20:35Z","updated_at":"2018-06-22T17:40:56Z","pushed_at":"2018-06-22T18:53:10Z","git_url":"git://github.com/18F/cms-hitech-apd.git","ssh_url":"git@github.com:18F/cms-hitech-apd.git","clone_url":"https://github.com/18F/cms-hitech-apd.git","svn_url":"https://github.com/18F/cms-hitech-apd","homepage":"https://hitech-apd.app.cloud.gov","size":4562,"stargazers_count":8,"watchers_count":8,"language":"JavaScript","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":3,"mirror_url":null,"archived":false,"open_issues_count":54,"license":{"key":"other","name":"Other","spdx_id":null,"url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":3,"open_issues":54,"watchers":8,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/18F/cms-hitech-apd/pulls/698"},"html":{"href":"https://github.com/18F/cms-hitech-apd/pull/698"},"issue":{"href":"https://api.github.com/repos/18F/cms-hitech-apd/issues/698"},"comments":{"href":"https://api.github.com/repos/18F/cms-hitech-apd/issues/698/comments"},"review_comments":{"href":"https://api.github.com/repos/18F/cms-hitech-apd/pulls/698/comments"},"review_comment":{"href":"https://api.github.com/repos/18F/cms-hitech-apd/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/18F/cms-hitech-apd/pulls/698/commits"},"statuses":{"href":"https://api.github.com/repos/18F/cms-hitech-apd/statuses/616d079eb1d4740c561627f72e4324ff5acb8b36"}},"author_association":"MEMBER"}}
{"actor":{"display_login":"mgwalker"}}