{"action":"created","comment":{"url":"https://api.github.com/repos/civicrm/civihr/pulls/comments/171847395","pull_request_review_id":100774153,"id":171847395,"diff_hunk":"@@ -0,0 +1,42 @@\n+.chr_h-scroll-shadows__master {\n+  overflow: hidden; // this ensures the shadows are hidden behind\n+  position: relative;\n+}\n+\n+.chr_h-scroll-shadows__wrapper {\n+  overflow-x: auto;\n+\n+  &::before,\n+  &::after {\n+    box-shadow: 0 0 10px 1px rgba(48, 40, 40, 0.5);\n+    content: '';\n+    display: block;\n+    height: calc(100% - 10px); // if height is 100% then the shadow will be cut off\n+    opacity: 0; // by default the shadows are invisible\n+    position: absolute;\n+    top: 5px;\n+    transition: opacity 0.2s ease-out;\n+    width: 1px; // in order to make the shadow appear\n+    z-index: 1; // in order to appear on top of the inset content\n+  }\n+\n+  &::before {\n+    // This hides the shadow element underneath the master element\n+    // leaving the actual shadow still visible\n+    left: -1px;\n+  }\n+\n+  &::after {\n+    right: -1px;\n+  }\n+\n+  &.chr_h-scroll-shadows__wrapper--inset-shadow-left::before,\n+  &.chr_h-scroll-shadows__wrapper--inset-shadow-right::after {\n+    opacity: 1;\n+  }\n+\n+  .chr_h-scroll-shadows__content {\n+    display: inline-block; // to appear with :after and :before properly","path":"org.civicrm.bootstrapcivihr/scss/components/outside-namespace/_h-scroll-shadows.scss","position":39,"original_position":39,"commit_id":"c192c670987bf6f154d237e983f43e9094f4f056","original_commit_id":"c192c670987bf6f154d237e983f43e9094f4f056","user":{"login":"igorpavlov","id":3973243,"avatar_url":"https://avatars1.githubusercontent.com/u/3973243?v=4","gravatar_id":"","url":"https://api.github.com/users/igorpavlov","html_url":"https://github.com/igorpavlov","followers_url":"https://api.github.com/users/igorpavlov/followers","following_url":"https://api.github.com/users/igorpavlov/following{/other_user}","gists_url":"https://api.github.com/users/igorpavlov/gists{/gist_id}","starred_url":"https://api.github.com/users/igorpavlov/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/igorpavlov/subscriptions","organizations_url":"https://api.github.com/users/igorpavlov/orgs","repos_url":"https://api.github.com/users/igorpavlov/repos","events_url":"https://api.github.com/users/igorpavlov/events{/privacy}","received_events_url":"https://api.github.com/users/igorpavlov/received_events","type":"User","site_admin":false},"body":"It will collapse the content.","created_at":"2018-03-02T13:32:56Z","updated_at":"2018-03-02T13:32:56Z","html_url":"https://github.com/civicrm/civihr/pull/2512#discussion_r171847395","pull_request_url":"https://api.github.com/repos/civicrm/civihr/pulls/2512","author_association":"COLLABORATOR","_links":{"self":{"href":"https://api.github.com/repos/civicrm/civihr/pulls/comments/171847395"},"html":{"href":"https://github.com/civicrm/civihr/pull/2512#discussion_r171847395"},"pull_request":{"href":"https://api.github.com/repos/civicrm/civihr/pulls/2512"}},"in_reply_to_id":171842179},"pull_request":{"url":"https://api.github.com/repos/civicrm/civihr/pulls/2512","id":172252195,"html_url":"https://github.com/civicrm/civihr/pull/2512","diff_url":"https://github.com/civicrm/civihr/pull/2512.diff","patch_url":"https://github.com/civicrm/civihr/pull/2512.patch","issue_url":"https://api.github.com/repos/civicrm/civihr/issues/2512","number":2512,"state":"open","locked":false,"title":"PCHR-3315: Improve UX for horizontally scrolled blocks","user":{"login":"igorpavlov","id":3973243,"avatar_url":"https://avatars1.githubusercontent.com/u/3973243?v=4","gravatar_id":"","url":"https://api.github.com/users/igorpavlov","html_url":"https://github.com/igorpavlov","followers_url":"https://api.github.com/users/igorpavlov/followers","following_url":"https://api.github.com/users/igorpavlov/following{/other_user}","gists_url":"https://api.github.com/users/igorpavlov/gists{/gist_id}","starred_url":"https://api.github.com/users/igorpavlov/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/igorpavlov/subscriptions","organizations_url":"https://api.github.com/users/igorpavlov/orgs","repos_url":"https://api.github.com/users/igorpavlov/repos","events_url":"https://api.github.com/users/igorpavlov/events{/privacy}","received_events_url":"https://api.github.com/users/igorpavlov/received_events","type":"User","site_admin":false},"body":"## Overview\r\nThe problem is that horizontally scrolled blocks do not provide enough visual information for users that they can actually be scrolled. This PR adds a directive that can be used for any content that has more than 100% width of its parent element. The directive dynamically adds shadows to the content's edges, visually representing that there is a hidden content that can be seen by scrolling horizontally. The shadows respond to scrolling, resizing and/or DOM population inside the content. If you scroll to one of the edges, the shadow on that edge disappears. If the content's is less or equal to 100% of its parent element, all shadows disappear.\r\n\r\n**Directive usage**\r\n\r\n```html\r\n<div style='width: 100px'>\r\n  <div style='width: 300px' horizontal-scroll-shadows>Wider content</div>\r\n                            <!-- ^ -->\r\n</div>\r\n```\r\n\r\n## Before\r\nYou have no idea if you can scroll the table horizontally.\r\n![1](https://user-images.githubusercontent.com/3973243/36850690-5a8a5410-1d5f-11e8-831c-ceb5514aa12c.gif)\r\n![11](https://user-images.githubusercontent.com/3973243/36850698-5e8c26d8-1d5f-11e8-970e-819b4ef32297.gif)\r\n\r\n## After\r\n\r\nThe shadow tells you there is something hidden and you should scroll.\r\n\r\n### Admin\r\n![2](https://user-images.githubusercontent.com/3973243/36851732-d3c054b8-1d61-11e8-94b0-43fc76dfe160.gif)\r\n### SSP\r\n![22](https://user-images.githubusercontent.com/3973243/36851735-d78df3b6-1d61-11e8-851e-81189d903a07.gif)\r\n### SSP iPhone\r\n![222](https://user-images.githubusercontent.com/3973243/36852709-54049736-1d64-11e8-89d2-489bb113ce81.gif)\r\n\r\n\r\n## Technical Details\r\n\r\n### The directive\r\n\r\n```js\r\n/* eslint-env amd */\r\n/* globals MutationObserver */\r\n\r\ndefine([...], function (angular, directives) {\r\n  directives.directive('horizontalScrollShadows', [function () {\r\n    return {\r\n      restrict: 'A', // use directive via attribute\r\n      controller: horizontalScrollShadowsController\r\n    };\r\n  }]);\r\n\r\n  horizontalScrollShadowsController.$inject = ['$element', '$scope', '$window'];\r\n\r\n  function horizontalScrollShadowsController ($element, $scope, $window) {\r\n    var content, wrapper;\r\n\r\n    (function init () {\r\n      wrapContents(); // wraps the content that you set the attribute to, to support the shadows\r\n      initToggleShadowsHandlers();\r\n      toggleShadows();\r\n    }());\r\n\r\n    /**\r\n     * Makes shadow toggle on the wrapper element scrolling,\r\n     * or DOM changes inside content element, or window resize\r\n     */\r\n    function initToggleShadowsHandlers () {\r\n      wrapper.on('scroll', toggleShadows); // listens to scroll\r\n      angular.element($window).on('resize', toggleShadows); // listens to window resize\r\n      // that part is tricky. It seems there is no way to nicely track the width of an element\r\n      // 1. Listening to `resize` on an element won't work, it only works for $window.\r\n      // 2. Watching `elem.style.width` won't help, width always be empty unless changed via JS or CSS directly\r\n      // 3. Watching `elem.style` is exhaustive and also throws an exception since style is not just a list of properties, it also contains circular connections that break watch of course.\r\n      // 4. Watching `elem.clientWidth` works, but not totally. It fails to watch some essential changes, especially when the content becomes larger than wrapper.\r\n      // So we use MutationObserver that checks if the content DOM was modified, for example, during load\r\n      (new MutationObserver(toggleShadows)).observe(content[0], { subtree: true, childList: true });\r\n      // and in some cases clientWidth is triggered\r\n      $scope.$watch(function () {\r\n        return wrapper[0].clientWidth;\r\n      }, toggleShadows);\r\n      $scope.$watch(function () {\r\n        return content[0].clientWidth;\r\n      }, toggleShadows);\r\n    }\r\n\r\n    /**\r\n     * Toggles shadows depending on the scroll position\r\n     */\r\n    function toggleShadows () {\r\n      var scroll = wrapper.scrollLeft();\r\n      var contentWidth = content.width();\r\n      var wrapperWidth = wrapper.width();\r\n\r\n      if (contentWidth <= wrapperWidth) {\r\n        wrapper.removeClass('insetShadowLeft insetShadowRight');\r\n\r\n        return;\r\n      }\r\n\r\n      wrapper[scroll > 0 ? 'addClass' : 'removeClass']('insetShadowLeft');\r\n      wrapper[scroll < contentWidth - wrapperWidth ? 'addClass' : 'removeClass']('insetShadowRight');\r\n    }\r\n\r\n    /**\r\n     * Wraps original contents to make an environment for inset shadows\r\n     */\r\n    function wrapContents () {\r\n      $element.wrap(angular.element(\r\n        '<div class=\"horizontal-scroll-shadows-content\"></div>'));\r\n      content = $element.parent();\r\n      content.wrap(angular.element(\r\n        '<div class=\"horizontal-scroll-shadows-wrapper\"></div>'));\r\n      wrapper = content.parent();\r\n      wrapper.wrap(angular.element(\r\n        '<div class=\"horizontal-scroll-shadows-master\"></div>'));\r\n    }\r\n  }\r\n});\r\n```\r\n\r\n```css\r\n.horizontal-scroll-shadows-master {\r\n  overflow: hidden; // this ensures the shadows are hidden behind\r\n  position: relative;\r\n}\r\n\r\n.horizontal-scroll-shadows-wrapper {\r\n  overflow-x: auto;\r\n\r\n  &::before,\r\n  &::after {\r\n    box-shadow: 0 0 10px 1px rgba(48, 40, 40, 0.5);\r\n    content: '';\r\n    display: block;\r\n    height: calc(100% - 10px); // if height is 100% then the shadow will be cut off\r\n    opacity: 0; // by default the shadows are invisible\r\n    position: absolute;\r\n    top: 5px;\r\n    transition: opacity 0.2s ease-out;\r\n    width: 1px; // in order to make the shadow appear\r\n    z-index: 1; // in order to appear on top of the inset content\r\n  }\r\n\r\n  &::before {\r\n    left: -1px; // This hides the actual object leaving the shadow still visible\r\n  }\r\n\r\n  &::after {\r\n    right: -1px;\r\n  }\r\n\r\n  &.insetShadowLeft::before,\r\n  &.insetShadowRight::after {\r\n    opacity: 1;\r\n  }\r\n\r\n  .horizontal-scroll-shadows-content {\r\n    display: inline-block; // to appear with :after and :before properly\r\n    min-width: 100%; // otherwise it will shrink the content with less than 100% width\r\n  }\r\n}\r\n```\r\n\r\n```html\r\n<div horizontal-scroll-shadows class=\"chr_leave-report__table-container\">\r\n  <section class=\"panel panel-default\">\r\n    ...\r\n```\r\n\r\n## Comments\r\nIndentation was fixed in Karma configuration file.\r\nThe support table for mutation observer is here https://caniuse.com/#feat=mutationobserver and it matches CiviHR requirements.\r\n\r\n----\r\n\r\n✅ Manual Tests (desktop browser: Chrome, Safari, Firefox) - passed\r\n✅ Manual Tests (mobile browser: iOS Safari) - passed\r\n✅ Jasmine Tests - amended and passed\r\n✅ JS distributive files - included\r\n✅ Backstop tests - passed (had to manually change the viewport to mobile in SSP)\r\n✅ CSS distributive files - included\r\n⏹ PHP Unit Tests - not needed\r\n","created_at":"2018-03-01T14:31:10Z","updated_at":"2018-03-02T13:32:56Z","closed_at":null,"merged_at":null,"merge_commit_sha":"e4d0ff2cf75dc3419579d71bbb54f885f1cd1e72","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/civicrm/civihr/pulls/2512/commits","review_comments_url":"https://api.github.com/repos/civicrm/civihr/pulls/2512/comments","review_comment_url":"https://api.github.com/repos/civicrm/civihr/pulls/comments{/number}","comments_url":"https://api.github.com/repos/civicrm/civihr/issues/2512/comments","statuses_url":"https://api.github.com/repos/civicrm/civihr/statuses/c192c670987bf6f154d237e983f43e9094f4f056","head":{"label":"civicrm:PCHR-3315-improve-UX-for-horizontally-scrolled-blocks","ref":"PCHR-3315-improve-UX-for-horizontally-scrolled-blocks","sha":"c192c670987bf6f154d237e983f43e9094f4f056","user":{"login":"civicrm","id":136373,"avatar_url":"https://avatars2.githubusercontent.com/u/136373?v=4","gravatar_id":"","url":"https://api.github.com/users/civicrm","html_url":"https://github.com/civicrm","followers_url":"https://api.github.com/users/civicrm/followers","following_url":"https://api.github.com/users/civicrm/following{/other_user}","gists_url":"https://api.github.com/users/civicrm/gists{/gist_id}","starred_url":"https://api.github.com/users/civicrm/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/civicrm/subscriptions","organizations_url":"https://api.github.com/users/civicrm/orgs","repos_url":"https://api.github.com/users/civicrm/repos","events_url":"https://api.github.com/users/civicrm/events{/privacy}","received_events_url":"https://api.github.com/users/civicrm/received_events","type":"Organization","site_admin":false},"repo":{"id":10086903,"name":"civihr","full_name":"civicrm/civihr","owner":{"login":"civicrm","id":136373,"avatar_url":"https://avatars2.githubusercontent.com/u/136373?v=4","gravatar_id":"","url":"https://api.github.com/users/civicrm","html_url":"https://github.com/civicrm","followers_url":"https://api.github.com/users/civicrm/followers","following_url":"https://api.github.com/users/civicrm/following{/other_user}","gists_url":"https://api.github.com/users/civicrm/gists{/gist_id}","starred_url":"https://api.github.com/users/civicrm/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/civicrm/subscriptions","organizations_url":"https://api.github.com/users/civicrm/orgs","repos_url":"https://api.github.com/users/civicrm/repos","events_url":"https://api.github.com/users/civicrm/events{/privacy}","received_events_url":"https://api.github.com/users/civicrm/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/civicrm/civihr","description":"CiviHR","fork":false,"url":"https://api.github.com/repos/civicrm/civihr","forks_url":"https://api.github.com/repos/civicrm/civihr/forks","keys_url":"https://api.github.com/repos/civicrm/civihr/keys{/key_id}","collaborators_url":"https://api.github.com/repos/civicrm/civihr/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/civicrm/civihr/teams","hooks_url":"https://api.github.com/repos/civicrm/civihr/hooks","issue_events_url":"https://api.github.com/repos/civicrm/civihr/issues/events{/number}","events_url":"https://api.github.com/repos/civicrm/civihr/events","assignees_url":"https://api.github.com/repos/civicrm/civihr/assignees{/user}","branches_url":"https://api.github.com/repos/civicrm/civihr/branches{/branch}","tags_url":"https://api.github.com/repos/civicrm/civihr/tags","blobs_url":"https://api.github.com/repos/civicrm/civihr/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/civicrm/civihr/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/civicrm/civihr/git/refs{/sha}","trees_url":"https://api.github.com/repos/civicrm/civihr/git/trees{/sha}","statuses_url":"https://api.github.com/repos/civicrm/civihr/statuses/{sha}","languages_url":"https://api.github.com/repos/civicrm/civihr/languages","stargazers_url":"https://api.github.com/repos/civicrm/civihr/stargazers","contributors_url":"https://api.github.com/repos/civicrm/civihr/contributors","subscribers_url":"https://api.github.com/repos/civicrm/civihr/subscribers","subscription_url":"https://api.github.com/repos/civicrm/civihr/subscription","commits_url":"https://api.github.com/repos/civicrm/civihr/commits{/sha}","git_commits_url":"https://api.github.com/repos/civicrm/civihr/git/commits{/sha}","comments_url":"https://api.github.com/repos/civicrm/civihr/comments{/number}","issue_comment_url":"https://api.github.com/repos/civicrm/civihr/issues/comments{/number}","contents_url":"https://api.github.com/repos/civicrm/civihr/contents/{+path}","compare_url":"https://api.github.com/repos/civicrm/civihr/compare/{base}...{head}","merges_url":"https://api.github.com/repos/civicrm/civihr/merges","archive_url":"https://api.github.com/repos/civicrm/civihr/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/civicrm/civihr/downloads","issues_url":"https://api.github.com/repos/civicrm/civihr/issues{/number}","pulls_url":"https://api.github.com/repos/civicrm/civihr/pulls{/number}","milestones_url":"https://api.github.com/repos/civicrm/civihr/milestones{/number}","notifications_url":"https://api.github.com/repos/civicrm/civihr/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/civicrm/civihr/labels{/name}","releases_url":"https://api.github.com/repos/civicrm/civihr/releases{/id}","deployments_url":"https://api.github.com/repos/civicrm/civihr/deployments","created_at":"2013-05-15T20:06:06Z","updated_at":"2018-02-07T06:48:22Z","pushed_at":"2018-03-02T12:55:07Z","git_url":"git://github.com/civicrm/civihr.git","ssh_url":"git@github.com:civicrm/civihr.git","clone_url":"https://github.com/civicrm/civihr.git","svn_url":"https://github.com/civicrm/civihr","homepage":null,"size":61826,"stargazers_count":26,"watchers_count":26,"language":"PHP","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":38,"mirror_url":null,"archived":false,"open_issues_count":14,"license":null,"forks":38,"open_issues":14,"watchers":26,"default_branch":"staging"}},"base":{"label":"civicrm:staging","ref":"staging","sha":"5877a0159c3979c996c6e8ea867b4a11da6b93c0","user":{"login":"civicrm","id":136373,"avatar_url":"https://avatars2.githubusercontent.com/u/136373?v=4","gravatar_id":"","url":"https://api.github.com/users/civicrm","html_url":"https://github.com/civicrm","followers_url":"https://api.github.com/users/civicrm/followers","following_url":"https://api.github.com/users/civicrm/following{/other_user}","gists_url":"https://api.github.com/users/civicrm/gists{/gist_id}","starred_url":"https://api.github.com/users/civicrm/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/civicrm/subscriptions","organizations_url":"https://api.github.com/users/civicrm/orgs","repos_url":"https://api.github.com/users/civicrm/repos","events_url":"https://api.github.com/users/civicrm/events{/privacy}","received_events_url":"https://api.github.com/users/civicrm/received_events","type":"Organization","site_admin":false},"repo":{"id":10086903,"name":"civihr","full_name":"civicrm/civihr","owner":{"login":"civicrm","id":136373,"avatar_url":"https://avatars2.githubusercontent.com/u/136373?v=4","gravatar_id":"","url":"https://api.github.com/users/civicrm","html_url":"https://github.com/civicrm","followers_url":"https://api.github.com/users/civicrm/followers","following_url":"https://api.github.com/users/civicrm/following{/other_user}","gists_url":"https://api.github.com/users/civicrm/gists{/gist_id}","starred_url":"https://api.github.com/users/civicrm/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/civicrm/subscriptions","organizations_url":"https://api.github.com/users/civicrm/orgs","repos_url":"https://api.github.com/users/civicrm/repos","events_url":"https://api.github.com/users/civicrm/events{/privacy}","received_events_url":"https://api.github.com/users/civicrm/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/civicrm/civihr","description":"CiviHR","fork":false,"url":"https://api.github.com/repos/civicrm/civihr","forks_url":"https://api.github.com/repos/civicrm/civihr/forks","keys_url":"https://api.github.com/repos/civicrm/civihr/keys{/key_id}","collaborators_url":"https://api.github.com/repos/civicrm/civihr/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/civicrm/civihr/teams","hooks_url":"https://api.github.com/repos/civicrm/civihr/hooks","issue_events_url":"https://api.github.com/repos/civicrm/civihr/issues/events{/number}","events_url":"https://api.github.com/repos/civicrm/civihr/events","assignees_url":"https://api.github.com/repos/civicrm/civihr/assignees{/user}","branches_url":"https://api.github.com/repos/civicrm/civihr/branches{/branch}","tags_url":"https://api.github.com/repos/civicrm/civihr/tags","blobs_url":"https://api.github.com/repos/civicrm/civihr/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/civicrm/civihr/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/civicrm/civihr/git/refs{/sha}","trees_url":"https://api.github.com/repos/civicrm/civihr/git/trees{/sha}","statuses_url":"https://api.github.com/repos/civicrm/civihr/statuses/{sha}","languages_url":"https://api.github.com/repos/civicrm/civihr/languages","stargazers_url":"https://api.github.com/repos/civicrm/civihr/stargazers","contributors_url":"https://api.github.com/repos/civicrm/civihr/contributors","subscribers_url":"https://api.github.com/repos/civicrm/civihr/subscribers","subscription_url":"https://api.github.com/repos/civicrm/civihr/subscription","commits_url":"https://api.github.com/repos/civicrm/civihr/commits{/sha}","git_commits_url":"https://api.github.com/repos/civicrm/civihr/git/commits{/sha}","comments_url":"https://api.github.com/repos/civicrm/civihr/comments{/number}","issue_comment_url":"https://api.github.com/repos/civicrm/civihr/issues/comments{/number}","contents_url":"https://api.github.com/repos/civicrm/civihr/contents/{+path}","compare_url":"https://api.github.com/repos/civicrm/civihr/compare/{base}...{head}","merges_url":"https://api.github.com/repos/civicrm/civihr/merges","archive_url":"https://api.github.com/repos/civicrm/civihr/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/civicrm/civihr/downloads","issues_url":"https://api.github.com/repos/civicrm/civihr/issues{/number}","pulls_url":"https://api.github.com/repos/civicrm/civihr/pulls{/number}","milestones_url":"https://api.github.com/repos/civicrm/civihr/milestones{/number}","notifications_url":"https://api.github.com/repos/civicrm/civihr/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/civicrm/civihr/labels{/name}","releases_url":"https://api.github.com/repos/civicrm/civihr/releases{/id}","deployments_url":"https://api.github.com/repos/civicrm/civihr/deployments","created_at":"2013-05-15T20:06:06Z","updated_at":"2018-02-07T06:48:22Z","pushed_at":"2018-03-02T12:55:07Z","git_url":"git://github.com/civicrm/civihr.git","ssh_url":"git@github.com:civicrm/civihr.git","clone_url":"https://github.com/civicrm/civihr.git","svn_url":"https://github.com/civicrm/civihr","homepage":null,"size":61826,"stargazers_count":26,"watchers_count":26,"language":"PHP","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":38,"mirror_url":null,"archived":false,"open_issues_count":14,"license":null,"forks":38,"open_issues":14,"watchers":26,"default_branch":"staging"}},"_links":{"self":{"href":"https://api.github.com/repos/civicrm/civihr/pulls/2512"},"html":{"href":"https://github.com/civicrm/civihr/pull/2512"},"issue":{"href":"https://api.github.com/repos/civicrm/civihr/issues/2512"},"comments":{"href":"https://api.github.com/repos/civicrm/civihr/issues/2512/comments"},"review_comments":{"href":"https://api.github.com/repos/civicrm/civihr/pulls/2512/comments"},"review_comment":{"href":"https://api.github.com/repos/civicrm/civihr/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/civicrm/civihr/pulls/2512/commits"},"statuses":{"href":"https://api.github.com/repos/civicrm/civihr/statuses/c192c670987bf6f154d237e983f43e9094f4f056"}},"author_association":"COLLABORATOR"}}
{"actor":{"display_login":"igorpavlov"}}