{"action":"created","comment":{"url":"https://api.github.com/repos/hashicorp/vault/pulls/comments/284853629","pull_request_review_id":238581144,"id":284853629,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDI4NDg1MzYyOQ==","diff_hunk":"@@ -14,50 +14,77 @@ import hbs from 'htmlbars-inline-precompile';\n  *  </ConfirmAction>\n  * ```\n  *\n- * @property {Func} onConfirmAction=null - The action to take upon confirming.\n- * @property {String} [confirmMessage=Are you sure you want to do this?] - The message to display upon confirming.\n+ * @property {Func} [onConfirmAction=null] - The action to take upon confirming.\n+ * @property {String} [confirmTitle=Delete this?] - The title to display when confirming.\n+ * @property {String} [confirmMessage=Are you sure you want to do this?] - The message to display when confirming.\n  * @property {String} [confirmButtonText=Delete] - The confirm button text.\n  * @property {String} [cancelButtonText=Cancel] - The cancel button text.\n+ * @property {String} [disabledTitle=Can't delete this yet] - The title to display when the button is disabled.\n  * @property {String} [disabledMessage=Complete the form to complete this action] - The message to display when the button is disabled.\n  *\n  */\n \n export default Component.extend({\n-  tagName: 'span',\n   classNames: ['confirm-action'],\n   layout: hbs`\n-    {{#if showConfirm ~}}\n-      <span class={{containerClasses}}>\n-        <span class={{concat 'confirm-action-text ' messageClasses}}>{{if disabled disabledMessage confirmMessage}}</span>\n-        <button {{action 'onConfirm'}} disabled={{disabled}} class={{confirmButtonClasses}} type=\"button\" data-test-confirm-button=true>{{confirmButtonText}}</button>\n-        <button {{action 'toggleConfirm'}} type=\"button\" class={{cancelButtonClasses}} data-test-confirm-cancel-button=true>{{cancelButtonText}}</button>\n-      </span>\n-    {{else}}\n-      <button\n-        class={{buttonClasses}}\n+    {{#basic-dropdown class=\"popup-menu\" horizontalPosition=horizontalPosition verticalPosition=verticalPosition onOpen=(action \"toggleConfirm\") onClose=(action \"toggleConfirm\") as |d|}}\n+      {{#d.trigger\n+        tagName=\"button\"\n         type=\"button\"\n-        disabled={{disabled}}\n-        data-test-confirm-action-trigger=true\n-        {{action 'toggleConfirm'}}\n-      >\n+        class=(concat buttonClasses \" popup-menu-trigger\" (if d.isOpen \" is-active\"))\n+        disabled=disabled\n+        data-test-confirm-action-trigger=\"true\"\n+      }}\n         {{yield}}\n-      </button>\n-    {{~/if}}\n+        {{#if (eq buttonClasses 'toolbar-link')}}\n+          <Icon @glyph=\"chevron-{{if showConfirm 'up' 'down'}}\" />\n+        {{/if}}\n+      {{/d.trigger}}\n+      {{#d.content class=(concat \"popup-menu-content\")}}\n+        <div class=\"box confirm-action-message\">","path":"ui/lib/core/addon/components/confirm-action.js","position":49,"original_position":49,"commit_id":"c28d76b21bb293ea6ec56264bcca067aa554dfcd","original_commit_id":"c28d76b21bb293ea6ec56264bcca067aa554dfcd","user":{"login":"joshuaogle","id":111194,"node_id":"MDQ6VXNlcjExMTE5NA==","avatar_url":"https://avatars0.githubusercontent.com/u/111194?v=4","gravatar_id":"","url":"https://api.github.com/users/joshuaogle","html_url":"https://github.com/joshuaogle","followers_url":"https://api.github.com/users/joshuaogle/followers","following_url":"https://api.github.com/users/joshuaogle/following{/other_user}","gists_url":"https://api.github.com/users/joshuaogle/gists{/gist_id}","starred_url":"https://api.github.com/users/joshuaogle/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/joshuaogle/subscriptions","organizations_url":"https://api.github.com/users/joshuaogle/orgs","repos_url":"https://api.github.com/users/joshuaogle/repos","events_url":"https://api.github.com/users/joshuaogle/events{/privacy}","received_events_url":"https://api.github.com/users/joshuaogle/received_events","type":"User","site_admin":false},"body":"I thought about it, but yeah the styling doesn't match. Any small change in the styling (like padding) of Alerts would be felt much more here, so I figured this was better.","created_at":"2019-05-16T19:01:31Z","updated_at":"2019-05-16T19:01:32Z","html_url":"https://github.com/hashicorp/vault/pull/6741#discussion_r284853629","pull_request_url":"https://api.github.com/repos/hashicorp/vault/pulls/6741","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/hashicorp/vault/pulls/comments/284853629"},"html":{"href":"https://github.com/hashicorp/vault/pull/6741#discussion_r284853629"},"pull_request":{"href":"https://api.github.com/repos/hashicorp/vault/pulls/6741"}},"in_reply_to_id":284847165},"pull_request":{"url":"https://api.github.com/repos/hashicorp/vault/pulls/6741","id":279232574,"node_id":"MDExOlB1bGxSZXF1ZXN0Mjc5MjMyNTc0","html_url":"https://github.com/hashicorp/vault/pull/6741","diff_url":"https://github.com/hashicorp/vault/pull/6741.diff","patch_url":"https://github.com/hashicorp/vault/pull/6741.patch","issue_url":"https://api.github.com/repos/hashicorp/vault/issues/6741","number":6741,"state":"open","locked":false,"title":"UI: Confirm Action as a popover","user":{"login":"joshuaogle","id":111194,"node_id":"MDQ6VXNlcjExMTE5NA==","avatar_url":"https://avatars0.githubusercontent.com/u/111194?v=4","gravatar_id":"","url":"https://api.github.com/users/joshuaogle","html_url":"https://github.com/joshuaogle","followers_url":"https://api.github.com/users/joshuaogle/followers","following_url":"https://api.github.com/users/joshuaogle/following{/other_user}","gists_url":"https://api.github.com/users/joshuaogle/gists{/gist_id}","starred_url":"https://api.github.com/users/joshuaogle/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/joshuaogle/subscriptions","organizations_url":"https://api.github.com/users/joshuaogle/orgs","repos_url":"https://api.github.com/users/joshuaogle/repos","events_url":"https://api.github.com/users/joshuaogle/events{/privacy}","received_events_url":"https://api.github.com/users/joshuaogle/received_events","type":"User","site_admin":false},"body":"## Background\r\n\r\nVault stores a lot of sensitive data, so it is generally good to warn a user when an action that they take might have serious consequences. We do this in the UI by giving the user some context around this action and having them confirm that they are sure.\r\n\r\nPrior to Vault v1.2, this design was extremely simple, and appeared when the user clicks on a \"Delete\" button (or \"Revoke\", or anything similar) on [a list row](https://user-images.githubusercontent.com/111194/57798630-6b97ce80-770a-11e9-9c95-00e614d7d0e8.png) or [anywhere else, such as a \"show\" page](https://user-images.githubusercontent.com/111194/57798644-7488a000-770a-11e9-9def-172695d4565c.png)\r\n\r\n### Along come Toolbars\r\nIn Vault v1.2, we are introducing the concept of Toolbars to the UI. The Toolbar gives us a consistent way to present page-level actions, including ones that may require confirmation. Unfortunately, the old design for these confirmations [doesn't work well with the limited space](https://user-images.githubusercontent.com/111194/57798718-9c780380-770a-11e9-9d3e-8c4ac79895fe.png), so in the HashiCorp Design System we have created a more consistent and clear way to confirm these actions with users, called \"Confirm Popovers\".\r\n\r\nThis PR includes the new design for this component, which also gave us an opportunity to write new copy making the actions even clearer to the user. The default popover and copy looks like this:\r\n\r\n![confirmdelete](https://user-images.githubusercontent.com/111194/57802992-83745000-7714-11e9-85b5-6712f2403684.gif)\r\n\r\nWherever we have clearer context we can provide the user, they would be more customized, like this:\r\n![image](https://user-images.githubusercontent.com/111194/57803110-d221ea00-7714-11e9-844c-49c918c907cb.png)\r\n\r\n_Note:_ We plan to utilize a \"sliding menu\" similar to the Namespace Picker for use in dropdown menus, but because the default solution in this PR is still very usable, we will tackle that later.\r\n","created_at":"2019-05-15T19:28:09Z","updated_at":"2019-05-16T19:01:32Z","closed_at":null,"merged_at":null,"merge_commit_sha":"cc84f9da44c5ad8a3ebfa9b6775833623fb79944","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/hashicorp/vault/pulls/6741/commits","review_comments_url":"https://api.github.com/repos/hashicorp/vault/pulls/6741/comments","review_comment_url":"https://api.github.com/repos/hashicorp/vault/pulls/comments{/number}","comments_url":"https://api.github.com/repos/hashicorp/vault/issues/6741/comments","statuses_url":"https://api.github.com/repos/hashicorp/vault/statuses/c28d76b21bb293ea6ec56264bcca067aa554dfcd","head":{"label":"hashicorp:ui-confirm-action-popover","ref":"ui-confirm-action-popover","sha":"c28d76b21bb293ea6ec56264bcca067aa554dfcd","user":{"login":"hashicorp","id":761456,"node_id":"MDEyOk9yZ2FuaXphdGlvbjc2MTQ1Ng==","avatar_url":"https://avatars2.githubusercontent.com/u/761456?v=4","gravatar_id":"","url":"https://api.github.com/users/hashicorp","html_url":"https://github.com/hashicorp","followers_url":"https://api.github.com/users/hashicorp/followers","following_url":"https://api.github.com/users/hashicorp/following{/other_user}","gists_url":"https://api.github.com/users/hashicorp/gists{/gist_id}","starred_url":"https://api.github.com/users/hashicorp/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hashicorp/subscriptions","organizations_url":"https://api.github.com/users/hashicorp/orgs","repos_url":"https://api.github.com/users/hashicorp/repos","events_url":"https://api.github.com/users/hashicorp/events{/privacy}","received_events_url":"https://api.github.com/users/hashicorp/received_events","type":"Organization","site_admin":false},"repo":{"id":31288958,"node_id":"MDEwOlJlcG9zaXRvcnkzMTI4ODk1OA==","name":"vault","full_name":"hashicorp/vault","private":false,"owner":{"login":"hashicorp","id":761456,"node_id":"MDEyOk9yZ2FuaXphdGlvbjc2MTQ1Ng==","avatar_url":"https://avatars2.githubusercontent.com/u/761456?v=4","gravatar_id":"","url":"https://api.github.com/users/hashicorp","html_url":"https://github.com/hashicorp","followers_url":"https://api.github.com/users/hashicorp/followers","following_url":"https://api.github.com/users/hashicorp/following{/other_user}","gists_url":"https://api.github.com/users/hashicorp/gists{/gist_id}","starred_url":"https://api.github.com/users/hashicorp/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hashicorp/subscriptions","organizations_url":"https://api.github.com/users/hashicorp/orgs","repos_url":"https://api.github.com/users/hashicorp/repos","events_url":"https://api.github.com/users/hashicorp/events{/privacy}","received_events_url":"https://api.github.com/users/hashicorp/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/hashicorp/vault","description":"A tool for secrets management, encryption as a service, and privileged access management","fork":false,"url":"https://api.github.com/repos/hashicorp/vault","forks_url":"https://api.github.com/repos/hashicorp/vault/forks","keys_url":"https://api.github.com/repos/hashicorp/vault/keys{/key_id}","collaborators_url":"https://api.github.com/repos/hashicorp/vault/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/hashicorp/vault/teams","hooks_url":"https://api.github.com/repos/hashicorp/vault/hooks","issue_events_url":"https://api.github.com/repos/hashicorp/vault/issues/events{/number}","events_url":"https://api.github.com/repos/hashicorp/vault/events","assignees_url":"https://api.github.com/repos/hashicorp/vault/assignees{/user}","branches_url":"https://api.github.com/repos/hashicorp/vault/branches{/branch}","tags_url":"https://api.github.com/repos/hashicorp/vault/tags","blobs_url":"https://api.github.com/repos/hashicorp/vault/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/hashicorp/vault/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/hashicorp/vault/git/refs{/sha}","trees_url":"https://api.github.com/repos/hashicorp/vault/git/trees{/sha}","statuses_url":"https://api.github.com/repos/hashicorp/vault/statuses/{sha}","languages_url":"https://api.github.com/repos/hashicorp/vault/languages","stargazers_url":"https://api.github.com/repos/hashicorp/vault/stargazers","contributors_url":"https://api.github.com/repos/hashicorp/vault/contributors","subscribers_url":"https://api.github.com/repos/hashicorp/vault/subscribers","subscription_url":"https://api.github.com/repos/hashicorp/vault/subscription","commits_url":"https://api.github.com/repos/hashicorp/vault/commits{/sha}","git_commits_url":"https://api.github.com/repos/hashicorp/vault/git/commits{/sha}","comments_url":"https://api.github.com/repos/hashicorp/vault/comments{/number}","issue_comment_url":"https://api.github.com/repos/hashicorp/vault/issues/comments{/number}","contents_url":"https://api.github.com/repos/hashicorp/vault/contents/{+path}","compare_url":"https://api.github.com/repos/hashicorp/vault/compare/{base}...{head}","merges_url":"https://api.github.com/repos/hashicorp/vault/merges","archive_url":"https://api.github.com/repos/hashicorp/vault/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/hashicorp/vault/downloads","issues_url":"https://api.github.com/repos/hashicorp/vault/issues{/number}","pulls_url":"https://api.github.com/repos/hashicorp/vault/pulls{/number}","milestones_url":"https://api.github.com/repos/hashicorp/vault/milestones{/number}","notifications_url":"https://api.github.com/repos/hashicorp/vault/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/hashicorp/vault/labels{/name}","releases_url":"https://api.github.com/repos/hashicorp/vault/releases{/id}","deployments_url":"https://api.github.com/repos/hashicorp/vault/deployments","created_at":"2015-02-25T00:15:59Z","updated_at":"2019-05-16T16:16:16Z","pushed_at":"2019-05-16T18:08:48Z","git_url":"git://github.com/hashicorp/vault.git","ssh_url":"git@github.com:hashicorp/vault.git","clone_url":"https://github.com/hashicorp/vault.git","svn_url":"https://github.com/hashicorp/vault","homepage":"https://www.vaultproject.io/","size":82055,"stargazers_count":12488,"watchers_count":12488,"language":"Go","has_issues":true,"has_projects":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":1895,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":435,"license":{"key":"mpl-2.0","name":"Mozilla Public License 2.0","spdx_id":"MPL-2.0","url":"https://api.github.com/licenses/mpl-2.0","node_id":"MDc6TGljZW5zZTE0"},"forks":1895,"open_issues":435,"watchers":12488,"default_branch":"master"}},"base":{"label":"hashicorp:master","ref":"master","sha":"593c065216f7f7b028850f7953c7ba19533e2692","user":{"login":"hashicorp","id":761456,"node_id":"MDEyOk9yZ2FuaXphdGlvbjc2MTQ1Ng==","avatar_url":"https://avatars2.githubusercontent.com/u/761456?v=4","gravatar_id":"","url":"https://api.github.com/users/hashicorp","html_url":"https://github.com/hashicorp","followers_url":"https://api.github.com/users/hashicorp/followers","following_url":"https://api.github.com/users/hashicorp/following{/other_user}","gists_url":"https://api.github.com/users/hashicorp/gists{/gist_id}","starred_url":"https://api.github.com/users/hashicorp/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hashicorp/subscriptions","organizations_url":"https://api.github.com/users/hashicorp/orgs","repos_url":"https://api.github.com/users/hashicorp/repos","events_url":"https://api.github.com/users/hashicorp/events{/privacy}","received_events_url":"https://api.github.com/users/hashicorp/received_events","type":"Organization","site_admin":false},"repo":{"id":31288958,"node_id":"MDEwOlJlcG9zaXRvcnkzMTI4ODk1OA==","name":"vault","full_name":"hashicorp/vault","private":false,"owner":{"login":"hashicorp","id":761456,"node_id":"MDEyOk9yZ2FuaXphdGlvbjc2MTQ1Ng==","avatar_url":"https://avatars2.githubusercontent.com/u/761456?v=4","gravatar_id":"","url":"https://api.github.com/users/hashicorp","html_url":"https://github.com/hashicorp","followers_url":"https://api.github.com/users/hashicorp/followers","following_url":"https://api.github.com/users/hashicorp/following{/other_user}","gists_url":"https://api.github.com/users/hashicorp/gists{/gist_id}","starred_url":"https://api.github.com/users/hashicorp/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hashicorp/subscriptions","organizations_url":"https://api.github.com/users/hashicorp/orgs","repos_url":"https://api.github.com/users/hashicorp/repos","events_url":"https://api.github.com/users/hashicorp/events{/privacy}","received_events_url":"https://api.github.com/users/hashicorp/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/hashicorp/vault","description":"A tool for secrets management, encryption as a service, and privileged access management","fork":false,"url":"https://api.github.com/repos/hashicorp/vault","forks_url":"https://api.github.com/repos/hashicorp/vault/forks","keys_url":"https://api.github.com/repos/hashicorp/vault/keys{/key_id}","collaborators_url":"https://api.github.com/repos/hashicorp/vault/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/hashicorp/vault/teams","hooks_url":"https://api.github.com/repos/hashicorp/vault/hooks","issue_events_url":"https://api.github.com/repos/hashicorp/vault/issues/events{/number}","events_url":"https://api.github.com/repos/hashicorp/vault/events","assignees_url":"https://api.github.com/repos/hashicorp/vault/assignees{/user}","branches_url":"https://api.github.com/repos/hashicorp/vault/branches{/branch}","tags_url":"https://api.github.com/repos/hashicorp/vault/tags","blobs_url":"https://api.github.com/repos/hashicorp/vault/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/hashicorp/vault/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/hashicorp/vault/git/refs{/sha}","trees_url":"https://api.github.com/repos/hashicorp/vault/git/trees{/sha}","statuses_url":"https://api.github.com/repos/hashicorp/vault/statuses/{sha}","languages_url":"https://api.github.com/repos/hashicorp/vault/languages","stargazers_url":"https://api.github.com/repos/hashicorp/vault/stargazers","contributors_url":"https://api.github.com/repos/hashicorp/vault/contributors","subscribers_url":"https://api.github.com/repos/hashicorp/vault/subscribers","subscription_url":"https://api.github.com/repos/hashicorp/vault/subscription","commits_url":"https://api.github.com/repos/hashicorp/vault/commits{/sha}","git_commits_url":"https://api.github.com/repos/hashicorp/vault/git/commits{/sha}","comments_url":"https://api.github.com/repos/hashicorp/vault/comments{/number}","issue_comment_url":"https://api.github.com/repos/hashicorp/vault/issues/comments{/number}","contents_url":"https://api.github.com/repos/hashicorp/vault/contents/{+path}","compare_url":"https://api.github.com/repos/hashicorp/vault/compare/{base}...{head}","merges_url":"https://api.github.com/repos/hashicorp/vault/merges","archive_url":"https://api.github.com/repos/hashicorp/vault/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/hashicorp/vault/downloads","issues_url":"https://api.github.com/repos/hashicorp/vault/issues{/number}","pulls_url":"https://api.github.com/repos/hashicorp/vault/pulls{/number}","milestones_url":"https://api.github.com/repos/hashicorp/vault/milestones{/number}","notifications_url":"https://api.github.com/repos/hashicorp/vault/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/hashicorp/vault/labels{/name}","releases_url":"https://api.github.com/repos/hashicorp/vault/releases{/id}","deployments_url":"https://api.github.com/repos/hashicorp/vault/deployments","created_at":"2015-02-25T00:15:59Z","updated_at":"2019-05-16T16:16:16Z","pushed_at":"2019-05-16T18:08:48Z","git_url":"git://github.com/hashicorp/vault.git","ssh_url":"git@github.com:hashicorp/vault.git","clone_url":"https://github.com/hashicorp/vault.git","svn_url":"https://github.com/hashicorp/vault","homepage":"https://www.vaultproject.io/","size":82055,"stargazers_count":12488,"watchers_count":12488,"language":"Go","has_issues":true,"has_projects":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":1895,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":435,"license":{"key":"mpl-2.0","name":"Mozilla Public License 2.0","spdx_id":"MPL-2.0","url":"https://api.github.com/licenses/mpl-2.0","node_id":"MDc6TGljZW5zZTE0"},"forks":1895,"open_issues":435,"watchers":12488,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/hashicorp/vault/pulls/6741"},"html":{"href":"https://github.com/hashicorp/vault/pull/6741"},"issue":{"href":"https://api.github.com/repos/hashicorp/vault/issues/6741"},"comments":{"href":"https://api.github.com/repos/hashicorp/vault/issues/6741/comments"},"review_comments":{"href":"https://api.github.com/repos/hashicorp/vault/pulls/6741/comments"},"review_comment":{"href":"https://api.github.com/repos/hashicorp/vault/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/hashicorp/vault/pulls/6741/commits"},"statuses":{"href":"https://api.github.com/repos/hashicorp/vault/statuses/c28d76b21bb293ea6ec56264bcca067aa554dfcd"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"joshuaogle"}}