{"action":"created","comment":{"url":"https://api.github.com/repos/dojo/widgets/pulls/comments/147184771","pull_request_review_id":72244231,"id":147184771,"diff_hunk":"@@ -266,118 +267,158 @@ export default class ComboBox extends ComboBoxBase<ComboBoxProperties> {\n \t\t\treturn (current + total) % total;\n \t\t}\n \n-\t\tlet index = nextIndex(this._activeIndex);\n-\n-\t\twhile (this._isIndexDisabled(index)) {\n-\t\t\tindex = nextIndex(index);\n-\t\t}\n-\n-\t\tthis._activeIndex = index;\n+\t\tthis._activeIndex = nextIndex(this._activeIndex);\n \t\tthis.invalidate();\n \t}\n \n-\tprotected onElementCreated(element: HTMLElement, key: string) {\n+\tprotected onElementUpdated(element: HTMLElement, key: string) {\n \t\tif (key === 'root') {\n-\t\t\tthis._inputElement = <HTMLInputElement> element.querySelector('input');\n-\t\t\tthis._restoreFocus();\n+\t\t\tif (this._callInputFocus) {\n+\t\t\t\tthis._callInputFocus = false;\n+\t\t\t\tconst input = element.querySelector('input') as HTMLElement;\n+\t\t\t\tinput && input.focus();\n+\t\t\t}\n \t\t}\n \t}\n \n-\tprotected onElementUpdated(element: HTMLElement, key: string) {\n-\t\tif (key === 'root') {\n-\t\t\tthis._restoreFocus();\n-\t\t\tconst selectedResult = element.querySelector('[data-selected=\"true\"]');\n-\t\t\tselectedResult && this._scrollIntoView(<HTMLElement> selectedResult);\n-\t\t}\n+\tprotected renderInput(): WNode {\n+\t\tconst {\n+\t\t\tclearable,\n+\t\t\tdisabled,\n+\t\t\tinputProperties = {},\n+\t\t\tinvalid,\n+\t\t\treadOnly,\n+\t\t\trequired,\n+\t\t\tresults = [],\n+\t\t\tvalue = '',\n+\t\t\ttheme\n+\t\t} = this.properties;\n+\n+\t\treturn w(TextInput, <TextInputProperties> {\n+\t\t\t...inputProperties,\n+\t\t\tkey: 'textinput',\n+\t\t\t'aria-activedescendant': this._getResultId(results[this._activeIndex], this._activeIndex),\n+\t\t\t'aria-owns': this._getMenuId(),\n+\t\t\tclasses: this.classes(clearable ? css.clearable : null),\n+\t\t\tcontrols: this._getMenuId(),\n+\t\t\tdisabled,\n+\t\t\tinvalid,\n+\t\t\tonBlur: this._onInputBlur,\n+\t\t\tonFocus: this._onInputFocus,\n+\t\t\tonInput: this._onInput,\n+\t\t\tonKeyDown: this._onInputKeyDown,\n+\t\t\treadOnly,\n+\t\t\trequired,\n+\t\t\ttheme,\n+\t\t\tvalue\n+\t\t});\n \t}\n \n-\tprotected renderMenu(results: any[]): WNode | null {\n-\t\tconst { theme = {}, isResultDisabled, CustomResultMenu = ResultMenu, CustomResultItem } = this.properties;\n+\tprotected renderClearButton() {\n+\t\tconst {\n+\t\t\tdisabled,\n+\t\t\treadOnly\n+\t\t} = this.properties;\n+\n+\t\treturn v('button', {\n+\t\t\t'aria-controls': this._getMenuId(),\n+\t\t\tclasses: this.classes(css.clear),\n+\t\t\tdisabled,\n+\t\t\treadOnly,\n+\t\t\tonclick: this._onClearClick\n+\t\t}, [\n+\t\t\t'clear combo box',\n+\t\t\tv('i', { classes: this.classes(iconCss.icon, iconCss.closeIcon),\n+\t\t\t\trole: 'presentation', 'aria-hidden': 'true'\n+\t\t\t})\n+\t\t]);\n+\t}\n+\n+\tprotected renderMenuButton() {\n+\t\tconst {\n+\t\t\tdisabled,\n+\t\t\treadOnly\n+\t\t} = this.properties;\n+\n+\t\treturn v('button', {\n+\t\t\tclasses: this.classes(css.trigger),\n+\t\t\tdisabled,\n+\t\t\treadOnly,\n+\t\t\ttabIndex: -1,\n+\t\t\tonclick: this._onArrowClick\n+\t\t}, [\n+\t\t\t'open combo box',\n+\t\t\tv('i', {\n+\t\t\t\t'aria-hidden': 'true',\n+\t\t\t\tclasses: this.classes(iconCss.icon, iconCss.downIcon),\n+\t\t\t\trole: 'presentation'\n+\t\t\t})\n+\t\t]);\n+\t}\n+\n+\tprotected renderMenu(results: any[]): DNode | null {\n+\t\tconst { theme, isResultDisabled } = this.properties;\n \n \t\tif (results.length === 0 || !this._open) {\n \t\t\treturn null;\n \t\t}\n \n-\t\treturn w(CustomResultMenu, {\n-\t\t\tgetResultLabel: this._getResultLabel,\n-\t\t\tCustomResultItem,\n-\t\t\tid: this._menuId,\n-\t\t\tisResultDisabled,\n-\t\t\tonResultMouseDown: this._onResultMouseDown,\n-\t\t\tonResultMouseEnter: this._onResultMouseEnter,\n-\t\t\tonResultMouseUp: this._onResultMouseUp,\n-\t\t\tresults,\n-\t\t\tselectedIndex: this._activeIndex,\n-\t\t\ttheme\n-\t\t});\n+\t\treturn v('div', {\n+\t\t\tkey: 'dropdown',\n+\t\t\tclasses: this.classes(css.dropdown),\n+\t\t\tonmouseover: this._onResultHover,\n+\t\t\tonmousedown: this._onResultMouseDown\n+\t\t}, [\n+\t\t\tw(Listbox, {","path":"src/combobox/ComboBox.ts","position":459,"original_position":459,"commit_id":"ed13c75fe72700841bb19ef41c0654cdd7c970d0","original_commit_id":"ed13c75fe72700841bb19ef41c0654cdd7c970d0","user":{"login":"smhigley","id":3819570,"avatar_url":"https://avatars1.githubusercontent.com/u/3819570?v=4","gravatar_id":"","url":"https://api.github.com/users/smhigley","html_url":"https://github.com/smhigley","followers_url":"https://api.github.com/users/smhigley/followers","following_url":"https://api.github.com/users/smhigley/following{/other_user}","gists_url":"https://api.github.com/users/smhigley/gists{/gist_id}","starred_url":"https://api.github.com/users/smhigley/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/smhigley/subscriptions","organizations_url":"https://api.github.com/users/smhigley/orgs","repos_url":"https://api.github.com/users/smhigley/repos","events_url":"https://api.github.com/users/smhigley/events{/privacy}","received_events_url":"https://api.github.com/users/smhigley/received_events","type":"User","site_admin":false},"body":"Yup, I think we talked about not passing around sub-widget constructors anymore, right? I think Ant or Matt G originally wanted them gone entirely, but it makes handling events more difficult. I suppose ComboBox/Select could take an extension of Listbox though, since it's a standalone widget.","created_at":"2017-10-26T15:46:14Z","updated_at":"2017-10-26T15:46:14Z","html_url":"https://github.com/dojo/widgets/pull/312#discussion_r147184771","pull_request_url":"https://api.github.com/repos/dojo/widgets/pulls/312","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/dojo/widgets/pulls/comments/147184771"},"html":{"href":"https://github.com/dojo/widgets/pull/312#discussion_r147184771"},"pull_request":{"href":"https://api.github.com/repos/dojo/widgets/pulls/312"}},"in_reply_to_id":147143151},"pull_request":{"url":"https://api.github.com/repos/dojo/widgets/pulls/312","id":146966262,"html_url":"https://github.com/dojo/widgets/pull/312","diff_url":"https://github.com/dojo/widgets/pull/312.diff","patch_url":"https://github.com/dojo/widgets/pull/312.patch","issue_url":"https://api.github.com/repos/dojo/widgets/issues/312","number":312,"state":"open","locked":false,"title":"Listbox","user":{"login":"smhigley","id":3819570,"avatar_url":"https://avatars1.githubusercontent.com/u/3819570?v=4","gravatar_id":"","url":"https://api.github.com/users/smhigley","html_url":"https://github.com/smhigley","followers_url":"https://api.github.com/users/smhigley/followers","following_url":"https://api.github.com/users/smhigley/following{/other_user}","gists_url":"https://api.github.com/users/smhigley/gists{/gist_id}","starred_url":"https://api.github.com/users/smhigley/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/smhigley/subscriptions","organizations_url":"https://api.github.com/users/smhigley/orgs","repos_url":"https://api.github.com/users/smhigley/repos","events_url":"https://api.github.com/users/smhigley/events{/privacy}","received_events_url":"https://api.github.com/users/smhigley/received_events","type":"User","site_admin":false},"body":"**Type:** feature\r\n\r\nThe following has been addressed in the PR:\r\n\r\n* [x] There is a related issue\r\n* [x] All code matches the [style guide](https://github.com/dojo/meta/blob/master/STYLE.md)\r\n* [x] Unit or Functional tests are included in the PR\r\n\r\n<!--\r\nOur bots should ensure:\r\n\r\n* [ ] All contributors have signed a CLA\r\n* [ ] The PR passes CI testing\r\n* [ ] Code coverage is maintained\r\n* [ ] The PR has been reviewed and approved\r\n-->\r\n\r\n**Description:**\r\n\r\nRefactors Select and ComboBox to use a common Listbox widget. Resolves #117. This PR also introduces some of the discussed changes to widget patterns, namely splitting the `render()` function into more granular, overridable functions.\r\n","created_at":"2017-10-17T07:52:20Z","updated_at":"2017-10-26T15:46:14Z","closed_at":null,"merged_at":null,"merge_commit_sha":"166594ae75d0be08eeb9e1ff3dc21626030addef","assignee":null,"assignees":[],"requested_reviewers":[{"login":"agubler","id":1982678,"avatar_url":"https://avatars3.githubusercontent.com/u/1982678?v=4","gravatar_id":"","url":"https://api.github.com/users/agubler","html_url":"https://github.com/agubler","followers_url":"https://api.github.com/users/agubler/followers","following_url":"https://api.github.com/users/agubler/following{/other_user}","gists_url":"https://api.github.com/users/agubler/gists{/gist_id}","starred_url":"https://api.github.com/users/agubler/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/agubler/subscriptions","organizations_url":"https://api.github.com/users/agubler/orgs","repos_url":"https://api.github.com/users/agubler/repos","events_url":"https://api.github.com/users/agubler/events{/privacy}","received_events_url":"https://api.github.com/users/agubler/received_events","type":"User","site_admin":false}],"milestone":{"url":"https://api.github.com/repos/dojo/widgets/milestones/10","html_url":"https://github.com/dojo/widgets/milestone/10","labels_url":"https://api.github.com/repos/dojo/widgets/milestones/10/labels","id":2667368,"number":10,"title":"2017.10","description":"","creator":{"login":"kitsonk","id":1282577,"avatar_url":"https://avatars0.githubusercontent.com/u/1282577?v=4","gravatar_id":"","url":"https://api.github.com/users/kitsonk","html_url":"https://github.com/kitsonk","followers_url":"https://api.github.com/users/kitsonk/followers","following_url":"https://api.github.com/users/kitsonk/following{/other_user}","gists_url":"https://api.github.com/users/kitsonk/gists{/gist_id}","starred_url":"https://api.github.com/users/kitsonk/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kitsonk/subscriptions","organizations_url":"https://api.github.com/users/kitsonk/orgs","repos_url":"https://api.github.com/users/kitsonk/repos","events_url":"https://api.github.com/users/kitsonk/events{/privacy}","received_events_url":"https://api.github.com/users/kitsonk/received_events","type":"User","site_admin":false},"open_issues":37,"closed_issues":28,"state":"open","created_at":"2017-07-28T11:52:10Z","updated_at":"2017-10-26T10:23:36Z","due_on":"2017-10-31T07:00:00Z","closed_at":null},"commits_url":"https://api.github.com/repos/dojo/widgets/pulls/312/commits","review_comments_url":"https://api.github.com/repos/dojo/widgets/pulls/312/comments","review_comment_url":"https://api.github.com/repos/dojo/widgets/pulls/comments{/number}","comments_url":"https://api.github.com/repos/dojo/widgets/issues/312/comments","statuses_url":"https://api.github.com/repos/dojo/widgets/statuses/ed13c75fe72700841bb19ef41c0654cdd7c970d0","head":{"label":"smhigley:listbox","ref":"listbox","sha":"ed13c75fe72700841bb19ef41c0654cdd7c970d0","user":{"login":"smhigley","id":3819570,"avatar_url":"https://avatars1.githubusercontent.com/u/3819570?v=4","gravatar_id":"","url":"https://api.github.com/users/smhigley","html_url":"https://github.com/smhigley","followers_url":"https://api.github.com/users/smhigley/followers","following_url":"https://api.github.com/users/smhigley/following{/other_user}","gists_url":"https://api.github.com/users/smhigley/gists{/gist_id}","starred_url":"https://api.github.com/users/smhigley/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/smhigley/subscriptions","organizations_url":"https://api.github.com/users/smhigley/orgs","repos_url":"https://api.github.com/users/smhigley/repos","events_url":"https://api.github.com/users/smhigley/events{/privacy}","received_events_url":"https://api.github.com/users/smhigley/received_events","type":"User","site_admin":false},"repo":{"id":80783166,"name":"widgets","full_name":"smhigley/widgets","owner":{"login":"smhigley","id":3819570,"avatar_url":"https://avatars1.githubusercontent.com/u/3819570?v=4","gravatar_id":"","url":"https://api.github.com/users/smhigley","html_url":"https://github.com/smhigley","followers_url":"https://api.github.com/users/smhigley/followers","following_url":"https://api.github.com/users/smhigley/following{/other_user}","gists_url":"https://api.github.com/users/smhigley/gists{/gist_id}","starred_url":"https://api.github.com/users/smhigley/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/smhigley/subscriptions","organizations_url":"https://api.github.com/users/smhigley/orgs","repos_url":"https://api.github.com/users/smhigley/repos","events_url":"https://api.github.com/users/smhigley/events{/privacy}","received_events_url":"https://api.github.com/users/smhigley/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/smhigley/widgets","description":":rocket: UI components for dojo2.","fork":true,"url":"https://api.github.com/repos/smhigley/widgets","forks_url":"https://api.github.com/repos/smhigley/widgets/forks","keys_url":"https://api.github.com/repos/smhigley/widgets/keys{/key_id}","collaborators_url":"https://api.github.com/repos/smhigley/widgets/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/smhigley/widgets/teams","hooks_url":"https://api.github.com/repos/smhigley/widgets/hooks","issue_events_url":"https://api.github.com/repos/smhigley/widgets/issues/events{/number}","events_url":"https://api.github.com/repos/smhigley/widgets/events","assignees_url":"https://api.github.com/repos/smhigley/widgets/assignees{/user}","branches_url":"https://api.github.com/repos/smhigley/widgets/branches{/branch}","tags_url":"https://api.github.com/repos/smhigley/widgets/tags","blobs_url":"https://api.github.com/repos/smhigley/widgets/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/smhigley/widgets/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/smhigley/widgets/git/refs{/sha}","trees_url":"https://api.github.com/repos/smhigley/widgets/git/trees{/sha}","statuses_url":"https://api.github.com/repos/smhigley/widgets/statuses/{sha}","languages_url":"https://api.github.com/repos/smhigley/widgets/languages","stargazers_url":"https://api.github.com/repos/smhigley/widgets/stargazers","contributors_url":"https://api.github.com/repos/smhigley/widgets/contributors","subscribers_url":"https://api.github.com/repos/smhigley/widgets/subscribers","subscription_url":"https://api.github.com/repos/smhigley/widgets/subscription","commits_url":"https://api.github.com/repos/smhigley/widgets/commits{/sha}","git_commits_url":"https://api.github.com/repos/smhigley/widgets/git/commits{/sha}","comments_url":"https://api.github.com/repos/smhigley/widgets/comments{/number}","issue_comment_url":"https://api.github.com/repos/smhigley/widgets/issues/comments{/number}","contents_url":"https://api.github.com/repos/smhigley/widgets/contents/{+path}","compare_url":"https://api.github.com/repos/smhigley/widgets/compare/{base}...{head}","merges_url":"https://api.github.com/repos/smhigley/widgets/merges","archive_url":"https://api.github.com/repos/smhigley/widgets/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/smhigley/widgets/downloads","issues_url":"https://api.github.com/repos/smhigley/widgets/issues{/number}","pulls_url":"https://api.github.com/repos/smhigley/widgets/pulls{/number}","milestones_url":"https://api.github.com/repos/smhigley/widgets/milestones{/number}","notifications_url":"https://api.github.com/repos/smhigley/widgets/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/smhigley/widgets/labels{/name}","releases_url":"https://api.github.com/repos/smhigley/widgets/releases{/id}","deployments_url":"https://api.github.com/repos/smhigley/widgets/deployments","created_at":"2017-02-03T00:33:10Z","updated_at":"2017-02-03T00:33:11Z","pushed_at":"2017-10-25T00:16:12Z","git_url":"git://github.com/smhigley/widgets.git","ssh_url":"git@github.com:smhigley/widgets.git","clone_url":"https://github.com/smhigley/widgets.git","svn_url":"https://github.com/smhigley/widgets","homepage":"","size":571,"stargazers_count":0,"watchers_count":0,"language":"TypeScript","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,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"dojo:master","ref":"master","sha":"a5765e10e32a92e5dba80c760133762c17d2a0ad","user":{"login":"dojo","id":86896,"avatar_url":"https://avatars2.githubusercontent.com/u/86896?v=4","gravatar_id":"","url":"https://api.github.com/users/dojo","html_url":"https://github.com/dojo","followers_url":"https://api.github.com/users/dojo/followers","following_url":"https://api.github.com/users/dojo/following{/other_user}","gists_url":"https://api.github.com/users/dojo/gists{/gist_id}","starred_url":"https://api.github.com/users/dojo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dojo/subscriptions","organizations_url":"https://api.github.com/users/dojo/orgs","repos_url":"https://api.github.com/users/dojo/repos","events_url":"https://api.github.com/users/dojo/events{/privacy}","received_events_url":"https://api.github.com/users/dojo/received_events","type":"Organization","site_admin":false},"repo":{"id":79911519,"name":"widgets","full_name":"dojo/widgets","owner":{"login":"dojo","id":86896,"avatar_url":"https://avatars2.githubusercontent.com/u/86896?v=4","gravatar_id":"","url":"https://api.github.com/users/dojo","html_url":"https://github.com/dojo","followers_url":"https://api.github.com/users/dojo/followers","following_url":"https://api.github.com/users/dojo/following{/other_user}","gists_url":"https://api.github.com/users/dojo/gists{/gist_id}","starred_url":"https://api.github.com/users/dojo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dojo/subscriptions","organizations_url":"https://api.github.com/users/dojo/orgs","repos_url":"https://api.github.com/users/dojo/repos","events_url":"https://api.github.com/users/dojo/events{/privacy}","received_events_url":"https://api.github.com/users/dojo/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/dojo/widgets","description":":rocket: Dojo 2 - UI components.","fork":false,"url":"https://api.github.com/repos/dojo/widgets","forks_url":"https://api.github.com/repos/dojo/widgets/forks","keys_url":"https://api.github.com/repos/dojo/widgets/keys{/key_id}","collaborators_url":"https://api.github.com/repos/dojo/widgets/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/dojo/widgets/teams","hooks_url":"https://api.github.com/repos/dojo/widgets/hooks","issue_events_url":"https://api.github.com/repos/dojo/widgets/issues/events{/number}","events_url":"https://api.github.com/repos/dojo/widgets/events","assignees_url":"https://api.github.com/repos/dojo/widgets/assignees{/user}","branches_url":"https://api.github.com/repos/dojo/widgets/branches{/branch}","tags_url":"https://api.github.com/repos/dojo/widgets/tags","blobs_url":"https://api.github.com/repos/dojo/widgets/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/dojo/widgets/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/dojo/widgets/git/refs{/sha}","trees_url":"https://api.github.com/repos/dojo/widgets/git/trees{/sha}","statuses_url":"https://api.github.com/repos/dojo/widgets/statuses/{sha}","languages_url":"https://api.github.com/repos/dojo/widgets/languages","stargazers_url":"https://api.github.com/repos/dojo/widgets/stargazers","contributors_url":"https://api.github.com/repos/dojo/widgets/contributors","subscribers_url":"https://api.github.com/repos/dojo/widgets/subscribers","subscription_url":"https://api.github.com/repos/dojo/widgets/subscription","commits_url":"https://api.github.com/repos/dojo/widgets/commits{/sha}","git_commits_url":"https://api.github.com/repos/dojo/widgets/git/commits{/sha}","comments_url":"https://api.github.com/repos/dojo/widgets/comments{/number}","issue_comment_url":"https://api.github.com/repos/dojo/widgets/issues/comments{/number}","contents_url":"https://api.github.com/repos/dojo/widgets/contents/{+path}","compare_url":"https://api.github.com/repos/dojo/widgets/compare/{base}...{head}","merges_url":"https://api.github.com/repos/dojo/widgets/merges","archive_url":"https://api.github.com/repos/dojo/widgets/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/dojo/widgets/downloads","issues_url":"https://api.github.com/repos/dojo/widgets/issues{/number}","pulls_url":"https://api.github.com/repos/dojo/widgets/pulls{/number}","milestones_url":"https://api.github.com/repos/dojo/widgets/milestones{/number}","notifications_url":"https://api.github.com/repos/dojo/widgets/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/dojo/widgets/labels{/name}","releases_url":"https://api.github.com/repos/dojo/widgets/releases{/id}","deployments_url":"https://api.github.com/repos/dojo/widgets/deployments","created_at":"2017-01-24T12:55:57Z","updated_at":"2017-10-19T13:18:37Z","pushed_at":"2017-10-26T14:27:20Z","git_url":"git://github.com/dojo/widgets.git","ssh_url":"git@github.com:dojo/widgets.git","clone_url":"https://github.com/dojo/widgets.git","svn_url":"https://github.com/dojo/widgets","homepage":"http://dojo.io","size":1249,"stargazers_count":14,"watchers_count":14,"language":"TypeScript","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":17,"mirror_url":null,"archived":false,"open_issues_count":49,"forks":17,"open_issues":49,"watchers":14,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/dojo/widgets/pulls/312"},"html":{"href":"https://github.com/dojo/widgets/pull/312"},"issue":{"href":"https://api.github.com/repos/dojo/widgets/issues/312"},"comments":{"href":"https://api.github.com/repos/dojo/widgets/issues/312/comments"},"review_comments":{"href":"https://api.github.com/repos/dojo/widgets/pulls/312/comments"},"review_comment":{"href":"https://api.github.com/repos/dojo/widgets/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/dojo/widgets/pulls/312/commits"},"statuses":{"href":"https://api.github.com/repos/dojo/widgets/statuses/ed13c75fe72700841bb19ef41c0654cdd7c970d0"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"smhigley"}}