Merge pull request #637 from hashicorp/feature-toggle-secret
feat: 🎸 Add toggle secret feature
This commit is contained in:
5 files changed
+30
-3
No files matched your search
@@ -95,12 +95,14 @@
|
|||||||
p {
|
p {
|
||||||
margin-bottom: 0;
|
margin-bottom: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.rose-table-header-cell {
|
.rose-table-header-cell {
|
||||||
p {
|
p {
|
||||||
color: var(--ui-gray-subtler-1);
|
color: var(--ui-gray-subtler-1);
|
||||||
font-weight: normal;
|
font-weight: normal;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.rose-form-checkbox {
|
.rose-form-checkbox {
|
||||||
margin-bottom: 0;
|
margin-bottom: 0;
|
||||||
|
|
||||||
|
|||||||
@@ -1,9 +1,18 @@
|
|||||||
<div class='hidden-secret'>
|
<div class='hidden-secret'>
|
||||||
|
<Rose::Icon
|
||||||
|
@name={{if this.isHidden 'visibility-show' 'visibility-hide'}}
|
||||||
|
@size='medium'
|
||||||
|
{{on 'click' this.toggleSecretVisibility}}
|
||||||
|
/>
|
||||||
<Copyable
|
<Copyable
|
||||||
@text={{@secret}}
|
@text={{@secret}}
|
||||||
@buttonText={{t 'actions.copy-to-clipboard'}}
|
@buttonText={{t 'actions.copy-to-clipboard'}}
|
||||||
@acknowledgeText={{t 'states.copied'}}
|
@acknowledgeText={{t 'states.copied'}}
|
||||||
>
|
>
|
||||||
<span>{{this.textMask}}</span>
|
{{#if this.isHidden}}
|
||||||
|
{{@secret}}
|
||||||
|
{{else}}
|
||||||
|
{{this.textMask}}
|
||||||
|
{{/if}}
|
||||||
</Copyable>
|
</Copyable>
|
||||||
</div>
|
</div>
|
||||||
@@ -1,5 +1,14 @@
|
|||||||
import Component from '@glimmer/component';
|
import Component from '@glimmer/component';
|
||||||
|
import { action } from '@ember/object';
|
||||||
|
import { tracked } from '@glimmer/tracking';
|
||||||
|
|
||||||
export default class HiddenSecretComponent extends Component {
|
export default class HiddenSecretComponent extends Component {
|
||||||
textMask = '■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■';
|
textMask = '■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■';
|
||||||
|
|
||||||
|
@tracked isHidden = false;
|
||||||
|
|
||||||
|
@action
|
||||||
|
toggleSecretVisibility() {
|
||||||
|
this.isHidden = !this.isHidden;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -480,6 +480,11 @@ $chevron-down: url("data:image/svg+xml;utf-8,<svg viewBox='0 0 24 24' fill='%231
|
|||||||
align-items: center;
|
align-items: center;
|
||||||
color: var(--ui-gray-subtler-2);
|
color: var(--ui-gray-subtler-2);
|
||||||
|
|
||||||
|
.rose-icon {
|
||||||
|
margin-top: sizing.rems(xxxs);
|
||||||
|
margin-right: sizing.rems(s);
|
||||||
|
}
|
||||||
|
|
||||||
.copyable {
|
.copyable {
|
||||||
display: flex;
|
display: flex;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
|||||||
@@ -91,7 +91,7 @@
|
|||||||
<Rose::Table @style='condensed' as |table|>
|
<Rose::Table @style='condensed' as |table|>
|
||||||
<table.header as |header|>
|
<table.header as |header|>
|
||||||
<header.row as |row|>
|
<header.row as |row|>
|
||||||
<row.headerCell>{{t
|
<row.headerCell @shrink={{true}}>{{t
|
||||||
'form.key.label'
|
'form.key.label'
|
||||||
}}</row.headerCell>
|
}}</row.headerCell>
|
||||||
<row.headerCell colspan='2'>{{t
|
<row.headerCell colspan='2'>{{t
|
||||||
@@ -102,7 +102,9 @@
|
|||||||
<table.body as |body|>
|
<table.body as |body|>
|
||||||
{{#each credential.secrets as |secret|}}
|
{{#each credential.secrets as |secret|}}
|
||||||
<body.row as |row|>
|
<body.row as |row|>
|
||||||
<row.headerCell>{{secret.key}}</row.headerCell>
|
<row.headerCell
|
||||||
|
@shrink={{true}}
|
||||||
|
>{{secret.key}}</row.headerCell>
|
||||||
<row.cell colspan='2'>
|
<row.cell colspan='2'>
|
||||||
<HiddenSecret @secret={{secret.value}} />
|
<HiddenSecret @secret={{secret.value}} />
|
||||||
</row.cell>
|
</row.cell>
|
||||||
|
|||||||
Reference in new issue
Block a user