{"action":"closed","number":324,"pull_request":{"url":"https://api.github.com/repos/helpscout/blue/pulls/324","id":205558554,"node_id":"MDExOlB1bGxSZXF1ZXN0MjA1NTU4NTU0","html_url":"https://github.com/helpscout/blue/pull/324","diff_url":"https://github.com/helpscout/blue/pull/324.diff","patch_url":"https://github.com/helpscout/blue/pull/324.patch","issue_url":"https://api.github.com/repos/helpscout/blue/issues/324","number":324,"state":"closed","locked":false,"title":"PropProvider: A configurable Blue. Unlocked!","user":{"login":"ItsJonQ","id":2322354,"node_id":"MDQ6VXNlcjIzMjIzNTQ=","avatar_url":"https://avatars0.githubusercontent.com/u/2322354?v=4","gravatar_id":"","url":"https://api.github.com/users/ItsJonQ","html_url":"https://github.com/ItsJonQ","followers_url":"https://api.github.com/users/ItsJonQ/followers","following_url":"https://api.github.com/users/ItsJonQ/following{/other_user}","gists_url":"https://api.github.com/users/ItsJonQ/gists{/gist_id}","starred_url":"https://api.github.com/users/ItsJonQ/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ItsJonQ/subscriptions","organizations_url":"https://api.github.com/users/ItsJonQ/orgs","repos_url":"https://api.github.com/users/ItsJonQ/repos","events_url":"https://api.github.com/users/ItsJonQ/events{/privacy}","received_events_url":"https://api.github.com/users/ItsJonQ/received_events","type":"User","site_admin":false},"body":"## PropProvider: A configurable Blue. Unlocked!\r\n\r\nThis update adds a brand new component, the `PropProvider`. Powered by\r\nReact's new `context` API (polyfilled for React 15), it enables users to\r\nspecify configs to customize Blue components within an app.\r\n\r\nThe first component to use this is `Tooltip`, starting with just the `zIndex`\r\nprop. I've wanted to implement this system for a while. The `zIndex`\r\nupdate was the perfect excuse, as it is necessary for `Tooltip` components\r\nto render correctly within nested `Modal`. (An edge-case... but one I experienced\r\nin Beacon)\r\n\r\nThe `zIndex` can be customized at the App, or even component scope level\r\nas required.\r\n\r\n## Example\r\n\r\n```jsx\r\nimport React from 'react'\r\nimport PropProvider from '@helpscout/blue/components/PropProvider'\r\nimport Tooltip from '@helpscout/blue/components/Tooltip'\r\n\r\nconst customConfigs = {\r\n  Tooltip: {\r\n    zIndex: 123,\r\n  },\r\n}\r\n\r\nconst App = () => {\r\n  return (\r\n    <Provider value={customConfig}>\r\n      ...\r\n      <Tooltip>...</Tooltip>\r\n      ...\r\n    </Provider>\r\n  )\r\n}\r\n```\r\n\r\nIn the example (above), the `Tooltip` will use the `zIndex` config as a prop.\r\n\r\n## How it works\r\n\r\nUnder the hood, components are rigged up, or \"connected\" with a special HOC\r\ncalled `configConnect`, which works very similarly to the one found in Redux.\r\n\r\n`configConnect` attempts to find the appropriate configs (`Object`) from the\r\n`PropProvider`. If it's available, the configs will be passed to the component\r\n(as a `...spread`).\r\n\r\n---\r\n\r\nEdit: Changed name from `ConfigProvider` to `PropProvider`, as it better describes what it does and follows the React/Prop naming patterns.","created_at":"2018-08-01T21:28:02Z","updated_at":"2018-08-02T14:48:00Z","closed_at":"2018-08-02T14:48:00Z","merged_at":"2018-08-02T14:48:00Z","merge_commit_sha":"3cb42e4b6c1f3f5267bb578753fc8ca218f8f3e0","assignee":{"login":"ItsJonQ","id":2322354,"node_id":"MDQ6VXNlcjIzMjIzNTQ=","avatar_url":"https://avatars0.githubusercontent.com/u/2322354?v=4","gravatar_id":"","url":"https://api.github.com/users/ItsJonQ","html_url":"https://github.com/ItsJonQ","followers_url":"https://api.github.com/users/ItsJonQ/followers","following_url":"https://api.github.com/users/ItsJonQ/following{/other_user}","gists_url":"https://api.github.com/users/ItsJonQ/gists{/gist_id}","starred_url":"https://api.github.com/users/ItsJonQ/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ItsJonQ/subscriptions","organizations_url":"https://api.github.com/users/ItsJonQ/orgs","repos_url":"https://api.github.com/users/ItsJonQ/repos","events_url":"https://api.github.com/users/ItsJonQ/events{/privacy}","received_events_url":"https://api.github.com/users/ItsJonQ/received_events","type":"User","site_admin":false},"assignees":[{"login":"ItsJonQ","id":2322354,"node_id":"MDQ6VXNlcjIzMjIzNTQ=","avatar_url":"https://avatars0.githubusercontent.com/u/2322354?v=4","gravatar_id":"","url":"https://api.github.com/users/ItsJonQ","html_url":"https://github.com/ItsJonQ","followers_url":"https://api.github.com/users/ItsJonQ/followers","following_url":"https://api.github.com/users/ItsJonQ/following{/other_user}","gists_url":"https://api.github.com/users/ItsJonQ/gists{/gist_id}","starred_url":"https://api.github.com/users/ItsJonQ/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ItsJonQ/subscriptions","organizations_url":"https://api.github.com/users/ItsJonQ/orgs","repos_url":"https://api.github.com/users/ItsJonQ/repos","events_url":"https://api.github.com/users/ItsJonQ/events{/privacy}","received_events_url":"https://api.github.com/users/ItsJonQ/received_events","type":"User","site_admin":false}],"requested_reviewers":[{"login":"knicklabs","id":431654,"node_id":"MDQ6VXNlcjQzMTY1NA==","avatar_url":"https://avatars3.githubusercontent.com/u/431654?v=4","gravatar_id":"","url":"https://api.github.com/users/knicklabs","html_url":"https://github.com/knicklabs","followers_url":"https://api.github.com/users/knicklabs/followers","following_url":"https://api.github.com/users/knicklabs/following{/other_user}","gists_url":"https://api.github.com/users/knicklabs/gists{/gist_id}","starred_url":"https://api.github.com/users/knicklabs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/knicklabs/subscriptions","organizations_url":"https://api.github.com/users/knicklabs/orgs","repos_url":"https://api.github.com/users/knicklabs/repos","events_url":"https://api.github.com/users/knicklabs/events{/privacy}","received_events_url":"https://api.github.com/users/knicklabs/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[{"id":652094564,"node_id":"MDU6TGFiZWw2NTIwOTQ1NjQ=","url":"https://api.github.com/repos/helpscout/blue/labels/enhancement%20%E2%9C%A8","name":"enhancement ✨","color":"99efda","default":false},{"id":970476501,"node_id":"MDU6TGFiZWw5NzA0NzY1MDE=","url":"https://api.github.com/repos/helpscout/blue/labels/feature%20%F0%9F%92%85","name":"feature 💅","color":"5319e7","default":false}],"milestone":null,"commits_url":"https://api.github.com/repos/helpscout/blue/pulls/324/commits","review_comments_url":"https://api.github.com/repos/helpscout/blue/pulls/324/comments","review_comment_url":"https://api.github.com/repos/helpscout/blue/pulls/comments{/number}","comments_url":"https://api.github.com/repos/helpscout/blue/issues/324/comments","statuses_url":"https://api.github.com/repos/helpscout/blue/statuses/0804d0f0f6e5f3a715633ba59c7ac890902e31d5","head":{"label":"helpscout:config-provider","ref":"config-provider","sha":"0804d0f0f6e5f3a715633ba59c7ac890902e31d5","user":{"login":"helpscout","id":2071395,"node_id":"MDEyOk9yZ2FuaXphdGlvbjIwNzEzOTU=","avatar_url":"https://avatars0.githubusercontent.com/u/2071395?v=4","gravatar_id":"","url":"https://api.github.com/users/helpscout","html_url":"https://github.com/helpscout","followers_url":"https://api.github.com/users/helpscout/followers","following_url":"https://api.github.com/users/helpscout/following{/other_user}","gists_url":"https://api.github.com/users/helpscout/gists{/gist_id}","starred_url":"https://api.github.com/users/helpscout/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/helpscout/subscriptions","organizations_url":"https://api.github.com/users/helpscout/orgs","repos_url":"https://api.github.com/users/helpscout/repos","events_url":"https://api.github.com/users/helpscout/events{/privacy}","received_events_url":"https://api.github.com/users/helpscout/received_events","type":"Organization","site_admin":false},"repo":{"id":97950406,"node_id":"MDEwOlJlcG9zaXRvcnk5Nzk1MDQwNg==","name":"blue","full_name":"helpscout/blue","owner":{"login":"helpscout","id":2071395,"node_id":"MDEyOk9yZ2FuaXphdGlvbjIwNzEzOTU=","avatar_url":"https://avatars0.githubusercontent.com/u/2071395?v=4","gravatar_id":"","url":"https://api.github.com/users/helpscout","html_url":"https://github.com/helpscout","followers_url":"https://api.github.com/users/helpscout/followers","following_url":"https://api.github.com/users/helpscout/following{/other_user}","gists_url":"https://api.github.com/users/helpscout/gists{/gist_id}","starred_url":"https://api.github.com/users/helpscout/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/helpscout/subscriptions","organizations_url":"https://api.github.com/users/helpscout/orgs","repos_url":"https://api.github.com/users/helpscout/repos","events_url":"https://api.github.com/users/helpscout/events{/privacy}","received_events_url":"https://api.github.com/users/helpscout/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/helpscout/blue","description":"🔷Blue : React component library","fork":false,"url":"https://api.github.com/repos/helpscout/blue","forks_url":"https://api.github.com/repos/helpscout/blue/forks","keys_url":"https://api.github.com/repos/helpscout/blue/keys{/key_id}","collaborators_url":"https://api.github.com/repos/helpscout/blue/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/helpscout/blue/teams","hooks_url":"https://api.github.com/repos/helpscout/blue/hooks","issue_events_url":"https://api.github.com/repos/helpscout/blue/issues/events{/number}","events_url":"https://api.github.com/repos/helpscout/blue/events","assignees_url":"https://api.github.com/repos/helpscout/blue/assignees{/user}","branches_url":"https://api.github.com/repos/helpscout/blue/branches{/branch}","tags_url":"https://api.github.com/repos/helpscout/blue/tags","blobs_url":"https://api.github.com/repos/helpscout/blue/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/helpscout/blue/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/helpscout/blue/git/refs{/sha}","trees_url":"https://api.github.com/repos/helpscout/blue/git/trees{/sha}","statuses_url":"https://api.github.com/repos/helpscout/blue/statuses/{sha}","languages_url":"https://api.github.com/repos/helpscout/blue/languages","stargazers_url":"https://api.github.com/repos/helpscout/blue/stargazers","contributors_url":"https://api.github.com/repos/helpscout/blue/contributors","subscribers_url":"https://api.github.com/repos/helpscout/blue/subscribers","subscription_url":"https://api.github.com/repos/helpscout/blue/subscription","commits_url":"https://api.github.com/repos/helpscout/blue/commits{/sha}","git_commits_url":"https://api.github.com/repos/helpscout/blue/git/commits{/sha}","comments_url":"https://api.github.com/repos/helpscout/blue/comments{/number}","issue_comment_url":"https://api.github.com/repos/helpscout/blue/issues/comments{/number}","contents_url":"https://api.github.com/repos/helpscout/blue/contents/{+path}","compare_url":"https://api.github.com/repos/helpscout/blue/compare/{base}...{head}","merges_url":"https://api.github.com/repos/helpscout/blue/merges","archive_url":"https://api.github.com/repos/helpscout/blue/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/helpscout/blue/downloads","issues_url":"https://api.github.com/repos/helpscout/blue/issues{/number}","pulls_url":"https://api.github.com/repos/helpscout/blue/pulls{/number}","milestones_url":"https://api.github.com/repos/helpscout/blue/milestones{/number}","notifications_url":"https://api.github.com/repos/helpscout/blue/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/helpscout/blue/labels{/name}","releases_url":"https://api.github.com/repos/helpscout/blue/releases{/id}","deployments_url":"https://api.github.com/repos/helpscout/blue/deployments","created_at":"2017-07-21T13:31:30Z","updated_at":"2018-08-02T14:47:28Z","pushed_at":"2018-08-02T14:48:00Z","git_url":"git://github.com/helpscout/blue.git","ssh_url":"git@github.com:helpscout/blue.git","clone_url":"https://github.com/helpscout/blue.git","svn_url":"https://github.com/helpscout/blue","homepage":"https://hsblue.surge.sh/","size":5221,"stargazers_count":15,"watchers_count":15,"language":"JavaScript","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":4,"mirror_url":null,"archived":false,"open_issues_count":8,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"forks":4,"open_issues":8,"watchers":15,"default_branch":"master"}},"base":{"label":"helpscout:master","ref":"master","sha":"901dcd3fd152511c0851353dcb42384fc7dcc964","user":{"login":"helpscout","id":2071395,"node_id":"MDEyOk9yZ2FuaXphdGlvbjIwNzEzOTU=","avatar_url":"https://avatars0.githubusercontent.com/u/2071395?v=4","gravatar_id":"","url":"https://api.github.com/users/helpscout","html_url":"https://github.com/helpscout","followers_url":"https://api.github.com/users/helpscout/followers","following_url":"https://api.github.com/users/helpscout/following{/other_user}","gists_url":"https://api.github.com/users/helpscout/gists{/gist_id}","starred_url":"https://api.github.com/users/helpscout/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/helpscout/subscriptions","organizations_url":"https://api.github.com/users/helpscout/orgs","repos_url":"https://api.github.com/users/helpscout/repos","events_url":"https://api.github.com/users/helpscout/events{/privacy}","received_events_url":"https://api.github.com/users/helpscout/received_events","type":"Organization","site_admin":false},"repo":{"id":97950406,"node_id":"MDEwOlJlcG9zaXRvcnk5Nzk1MDQwNg==","name":"blue","full_name":"helpscout/blue","owner":{"login":"helpscout","id":2071395,"node_id":"MDEyOk9yZ2FuaXphdGlvbjIwNzEzOTU=","avatar_url":"https://avatars0.githubusercontent.com/u/2071395?v=4","gravatar_id":"","url":"https://api.github.com/users/helpscout","html_url":"https://github.com/helpscout","followers_url":"https://api.github.com/users/helpscout/followers","following_url":"https://api.github.com/users/helpscout/following{/other_user}","gists_url":"https://api.github.com/users/helpscout/gists{/gist_id}","starred_url":"https://api.github.com/users/helpscout/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/helpscout/subscriptions","organizations_url":"https://api.github.com/users/helpscout/orgs","repos_url":"https://api.github.com/users/helpscout/repos","events_url":"https://api.github.com/users/helpscout/events{/privacy}","received_events_url":"https://api.github.com/users/helpscout/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/helpscout/blue","description":"🔷Blue : React component library","fork":false,"url":"https://api.github.com/repos/helpscout/blue","forks_url":"https://api.github.com/repos/helpscout/blue/forks","keys_url":"https://api.github.com/repos/helpscout/blue/keys{/key_id}","collaborators_url":"https://api.github.com/repos/helpscout/blue/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/helpscout/blue/teams","hooks_url":"https://api.github.com/repos/helpscout/blue/hooks","issue_events_url":"https://api.github.com/repos/helpscout/blue/issues/events{/number}","events_url":"https://api.github.com/repos/helpscout/blue/events","assignees_url":"https://api.github.com/repos/helpscout/blue/assignees{/user}","branches_url":"https://api.github.com/repos/helpscout/blue/branches{/branch}","tags_url":"https://api.github.com/repos/helpscout/blue/tags","blobs_url":"https://api.github.com/repos/helpscout/blue/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/helpscout/blue/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/helpscout/blue/git/refs{/sha}","trees_url":"https://api.github.com/repos/helpscout/blue/git/trees{/sha}","statuses_url":"https://api.github.com/repos/helpscout/blue/statuses/{sha}","languages_url":"https://api.github.com/repos/helpscout/blue/languages","stargazers_url":"https://api.github.com/repos/helpscout/blue/stargazers","contributors_url":"https://api.github.com/repos/helpscout/blue/contributors","subscribers_url":"https://api.github.com/repos/helpscout/blue/subscribers","subscription_url":"https://api.github.com/repos/helpscout/blue/subscription","commits_url":"https://api.github.com/repos/helpscout/blue/commits{/sha}","git_commits_url":"https://api.github.com/repos/helpscout/blue/git/commits{/sha}","comments_url":"https://api.github.com/repos/helpscout/blue/comments{/number}","issue_comment_url":"https://api.github.com/repos/helpscout/blue/issues/comments{/number}","contents_url":"https://api.github.com/repos/helpscout/blue/contents/{+path}","compare_url":"https://api.github.com/repos/helpscout/blue/compare/{base}...{head}","merges_url":"https://api.github.com/repos/helpscout/blue/merges","archive_url":"https://api.github.com/repos/helpscout/blue/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/helpscout/blue/downloads","issues_url":"https://api.github.com/repos/helpscout/blue/issues{/number}","pulls_url":"https://api.github.com/repos/helpscout/blue/pulls{/number}","milestones_url":"https://api.github.com/repos/helpscout/blue/milestones{/number}","notifications_url":"https://api.github.com/repos/helpscout/blue/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/helpscout/blue/labels{/name}","releases_url":"https://api.github.com/repos/helpscout/blue/releases{/id}","deployments_url":"https://api.github.com/repos/helpscout/blue/deployments","created_at":"2017-07-21T13:31:30Z","updated_at":"2018-08-02T14:47:28Z","pushed_at":"2018-08-02T14:48:00Z","git_url":"git://github.com/helpscout/blue.git","ssh_url":"git@github.com:helpscout/blue.git","clone_url":"https://github.com/helpscout/blue.git","svn_url":"https://github.com/helpscout/blue","homepage":"https://hsblue.surge.sh/","size":5221,"stargazers_count":15,"watchers_count":15,"language":"JavaScript","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":4,"mirror_url":null,"archived":false,"open_issues_count":8,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"forks":4,"open_issues":8,"watchers":15,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/helpscout/blue/pulls/324"},"html":{"href":"https://github.com/helpscout/blue/pull/324"},"issue":{"href":"https://api.github.com/repos/helpscout/blue/issues/324"},"comments":{"href":"https://api.github.com/repos/helpscout/blue/issues/324/comments"},"review_comments":{"href":"https://api.github.com/repos/helpscout/blue/pulls/324/comments"},"review_comment":{"href":"https://api.github.com/repos/helpscout/blue/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/helpscout/blue/pulls/324/commits"},"statuses":{"href":"https://api.github.com/repos/helpscout/blue/statuses/0804d0f0f6e5f3a715633ba59c7ac890902e31d5"}},"author_association":"COLLABORATOR","merged":true,"mergeable":null,"rebaseable":null,"mergeable_state":"unknown","merged_by":{"login":"ItsJonQ","id":2322354,"node_id":"MDQ6VXNlcjIzMjIzNTQ=","avatar_url":"https://avatars0.githubusercontent.com/u/2322354?v=4","gravatar_id":"","url":"https://api.github.com/users/ItsJonQ","html_url":"https://github.com/ItsJonQ","followers_url":"https://api.github.com/users/ItsJonQ/followers","following_url":"https://api.github.com/users/ItsJonQ/following{/other_user}","gists_url":"https://api.github.com/users/ItsJonQ/gists{/gist_id}","starred_url":"https://api.github.com/users/ItsJonQ/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ItsJonQ/subscriptions","organizations_url":"https://api.github.com/users/ItsJonQ/orgs","repos_url":"https://api.github.com/users/ItsJonQ/repos","events_url":"https://api.github.com/users/ItsJonQ/events{/privacy}","received_events_url":"https://api.github.com/users/ItsJonQ/received_events","type":"User","site_admin":false},"comments":3,"review_comments":1,"maintainer_can_modify":false,"commits":2,"additions":417,"deletions":162,"changed_files":19}}
{"actor":{"display_login":"ItsJonQ"}}