UI ember engines (#6718)

Adds replication engine and core in-repo addon
This commit is contained in:
Matthew Irish 2019-05-13 14:05:25 -05:00 committed by GitHub
parent 377064c521
commit 6d273dc368
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
478 changed files with 2526 additions and 1554 deletions

View File

@ -1,4 +1,6 @@
<meta name="vault/config/environment" content="%7B%22modulePrefix%22%3A%22vault%22%2C%22environment%22%3A%22development%22%2C%22rootURL%22%3A%22/ui/%22%2C%22locationType%22%3A%22auto%22%2C%22EmberENV%22%3A%7B%22FEATURES%22%3A%7B%7D%2C%22EXTEND_PROTOTYPES%22%3A%7B%22Date%22%3Afalse%7D%7D%2C%22APP%22%3A%7B%22POLLING_URLS%22%3A%5B%22sys/health%22%2C%22sys/replication/status%22%2C%22sys/seal-status%22%5D%2C%22NAMESPACE_ROOT_URLS%22%3A%5B%22sys/health%22%2C%22sys/seal-status%22%2C%22sys/license/features%22%5D%2C%22DEFAULT_PAGE_SIZE%22%3A15%2C%22LOG_TRANSITIONS%22%3Atrue%7D%2C%22flashMessageDefaults%22%3A%7B%22timeout%22%3A7000%2C%22sticky%22%3Afalse%2C%22preventDuplicates%22%3Atrue%7D%2C%22contentSecurityPolicyHeader%22%3A%22Content-Security-Policy%22%2C%22contentSecurityPolicyMeta%22%3Atrue%2C%22contentSecurityPolicy%22%3A%7B%22connect-src%22%3A%5B%22%27self%27%22%5D%2C%22img-src%22%3A%5B%22%27self%27%22%2C%22data%3A%22%5D%2C%22form-action%22%3A%5B%22%27none%27%22%5D%2C%22script-src%22%3A%5B%22%27self%27%22%5D%2C%22style-src%22%3A%5B%22%27unsafe-inline%27%22%2C%22%27self%27%22%5D%2C%22default-src%22%3A%5B%22%27none%27%22%5D%2C%22font-src%22%3A%5B%22%27self%27%22%5D%2C%22media-src%22%3A%5B%22%27self%27%22%5D%7D%2C%22emberData%22%3A%7B%22enableRecordDataRFCBuild%22%3Afalse%7D%2C%22exportApplicationGlobal%22%3Atrue%7D" /> <meta name="vault/config/environment" content="%7B%22modulePrefix%22%3A%22vault%22%2C%22environment%22%3A%22development%22%2C%22rootURL%22%3A%22/ui/%22%2C%22locationType%22%3A%22auto%22%2C%22EmberENV%22%3A%7B%22FEATURES%22%3A%7B%7D%2C%22EXTEND_PROTOTYPES%22%3A%7B%22Date%22%3Afalse%7D%7D%2C%22APP%22%3A%7B%22POLLING_URLS%22%3A%5B%22sys/health%22%2C%22sys/replication/status%22%2C%22sys/seal-status%22%5D%2C%22NAMESPACE_ROOT_URLS%22%3A%5B%22sys/health%22%2C%22sys/seal-status%22%2C%22sys/license/features%22%5D%2C%22DEFAULT_PAGE_SIZE%22%3A15%2C%22LOG_TRANSITIONS%22%3Atrue%7D%2C%22flashMessageDefaults%22%3A%7B%22timeout%22%3A7000%2C%22sticky%22%3Afalse%7D%2C%22contentSecurityPolicyHeader%22%3A%22Content-Security-Policy%22%2C%22contentSecurityPolicyMeta%22%3Atrue%2C%22contentSecurityPolicy%22%3A%7B%22connect-src%22%3A%5B%22%27self%27%22%5D%2C%22img-src%22%3A%5B%22%27self%27%22%2C%22data%3A%22%5D%2C%22form-action%22%3A%5B%22%27none%27%22%5D%2C%22script-src%22%3A%5B%22%27self%27%22%5D%2C%22style-src%22%3A%5B%22%27unsafe-inline%27%22%2C%22%27self%27%22%5D%2C%22default-src%22%3A%5B%22%27none%27%22%5D%2C%22font-src%22%3A%5B%22%27self%27%22%5D%2C%22media-src%22%3A%5B%22%27self%27%22%5D%7D%2C%22emberData%22%3A%7B%22enableRecordDataRFCBuild%22%3Afalse%7D%2C%22exportApplicationGlobal%22%3Atrue%7D" />
<meta name="replication/config/environment" content="%7B%22modulePrefix%22%3A%22replication%22%2C%22environment%22%3A%22development%22%7D" />
<meta name="vault/config/asset-manifest" content="%7B%22bundles%22%3A%7B%22replication%22%3A%7B%22assets%22%3A%5B%7B%22uri%22%3A%22/ui/engines-dist/replication/assets/engine-vendor.js%22%2C%22type%22%3A%22js%22%7D%2C%7B%22uri%22%3A%22/ui/engines-dist/replication/assets/engine.js%22%2C%22type%22%3A%22js%22%7D%5D%7D%7D%7D" />
<link rel="stylesheet" href="/assets/vendor.css" /> <link rel="stylesheet" href="/assets/vendor.css" />
<link rel="stylesheet" href="/assets/vault.css" /> <link rel="stylesheet" href="/assets/vault.css" />
<link rel="icon" href="/favicon.png" /> <link rel="icon" href="/favicon.png" />

View File

@ -8,10 +8,27 @@ defineModifier();
let App; let App;
/* eslint-disable ember/avoid-leaking-state-in-ember-objects */
App = Application.extend({ App = Application.extend({
modulePrefix: config.modulePrefix, modulePrefix: config.modulePrefix,
podModulePrefix: config.podModulePrefix, podModulePrefix: config.podModulePrefix,
Resolver, Resolver,
engines: {
replication: {
dependencies: {
services: [
'auth',
'flash-messages',
'namespace',
'replication-mode',
'router',
'store',
'version',
'wizard',
],
},
},
},
}); });
loadInitializers(App, config.modulePrefix); loadInitializers(App, config.modulePrefix);

View File

@ -3,7 +3,7 @@ import { computed } from '@ember/object';
import hbs from 'htmlbars-inline-precompile'; import hbs from 'htmlbars-inline-precompile';
export default Component.extend({ export default Component.extend({
layout: hbs`{{#if hasBlock}} {{yield}} {{else}} {{actionText}} {{/if}}`, layout: hbs`{{#if (has-block)}} {{yield}} {{else}} {{actionText}} {{/if}}`,
tagName: 'a', tagName: 'a',
role: 'button', role: 'button',
attributeBindings: ['role', 'download', 'href'], attributeBindings: ['role', 'download', 'href'],

View File

@ -1,6 +0,0 @@
import OuterHTML from './outer-html';
export default OuterHTML.extend({
title: null,
message: null,
});

View File

@ -1,84 +0,0 @@
import { camelize } from '@ember/string';
import Component from '@ember/component';
import { computed } from '@ember/object';
import hbs from 'htmlbars-inline-precompile';
/**
* @module ICon
* `ICon` components are glyphs used to indicate important information.
*
* @example
* ```js
* <ICon @glyph="cancel-square-outline" />
* ```
* @param glyph=null {String} - The glyph type.
*
*/
export const GLYPHS_WITH_SVG_TAG = [
'cancel-square-outline',
'cancel-square-fill',
'check-circle-fill',
'check-plain',
'checkmark-circled-outline',
'close-circled-outline',
'console',
'control-lock',
'docs',
'download',
'edition-enterprise',
'edition-oss',
'false',
'file',
'folder',
'hidden',
'information-reversed',
'learn',
'neutral-circled-outline',
'perf-replication',
'person',
'plus-plain',
'role',
'status-indicator',
'stopwatch',
'tour',
'true',
'upload',
'video',
'visible',
];
export default Component.extend({
layout: hbs`
{{#if excludeSVG}}
{{partial partialName}}
{{else}}
<svg aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="{{size}}" height="{{size}}" viewBox="0 0 512 512">
{{partial partialName}}
</svg>
{{/if}}
`,
tagName: 'span',
excludeIconClass: false,
classNameBindings: ['excludeIconClass::icon'],
classNames: ['has-current-color-fill'],
attributeBindings: ['aria-label', 'aria-hidden'],
glyph: null,
excludeSVG: computed('glyph', function() {
let glyph = this.get('glyph');
return glyph.startsWith('enable/') || GLYPHS_WITH_SVG_TAG.includes(glyph);
}),
size: computed('glyph', function() {
return this.get('glyph').startsWith('enable/') ? 48 : 12;
}),
partialName: computed('glyph', function() {
const glyph = this.get('glyph');
return `svg/icons/${camelize(glyph)}`;
}),
});

View File

@ -1,34 +0,0 @@
import { typeOf } from '@ember/utils';
import { computed } from '@ember/object';
import { or } from '@ember/object/computed';
import Component from '@ember/component';
export default Component.extend({
'data-test-component': 'info-table-row',
classNames: ['info-table-row'],
isVisible: or('alwaysRender', 'value'),
/*
* @param boolean
* indicates if the component content should be always be rendered.
* when false, the value of `value` will be used to determine if the component should render
*/
alwaysRender: false,
/*
* @param string
* the display name for the value
*
*/
label: null,
/*
*
* the value of the data passed in - by default the content of the component will only show if there is a value
*/
value: null,
valueIsBoolean: computed('value', function() {
return typeOf(this.get('value')) === 'boolean';
}),
});

View File

@ -1,5 +0,0 @@
import Component from '@ember/component';
export default Component.extend({
tagName: 'span',
});

View File

@ -1,50 +0,0 @@
import { alias } from '@ember/object/computed';
import Component from '@ember/component';
import hbs from 'htmlbars-inline-precompile';
export default Component.extend({
key: null,
mode: null,
path: null,
actionClass: null,
title: alias('key.keyWithoutParent'),
layout: hbs`
<div class="consul-show-header connected">
{{#secret-link
mode="list"
secret=key.parentKey
class="back-button"
}}
{{i-con glyph="chevron-left" size=11}}
Secrets
{{/secret-link}}
<div class="actions {{actionClass}}">
{{yield}}
</div>
<div class="item-name">
{{#if (eq mode "create") }}
Create a secret at
<code>
{{#if showPrefix}}
{{! need this to prevent a shift in the layout before we transition when saving }}
{{#if key.isCreating}}
{{key.initialParentKey}}
{{else}}
{{key.parentKey}}
{{/if}}
{{/if}}
</code>
{{/if}}
{{#if (eq mode "edit") }}
Edit
{{/if}}
<code>{{title}}</code>
</div>
</div>`,
});

View File

@ -18,7 +18,7 @@ export default Component.extend({
glyphName: computed('type', function() { glyphName: computed('type', function() {
const glyphs = { const glyphs = {
cluster: 'status-indicator', cluster: 'status-indicator',
user: 'person', user: 'user-square-outline',
}; };
return glyphs[this.type]; return glyphs[this.type];
}), }),

View File

@ -1,3 +0,0 @@
import OuterHTML from './outer-html';
export default OuterHTML.extend({});

View File

@ -1,6 +0,0 @@
import OuterHTML from './outer-html';
export default OuterHTML.extend({
classNames: ['toolbar'],
tagName: 'nav',
});

View File

@ -1,3 +0,0 @@
import ReplicationController from '../../../replication';
export default ReplicationController.extend();

View File

@ -1,3 +0,0 @@
import ReplicationController from '../../../replication';
export default ReplicationController.extend();

View File

@ -1 +0,0 @@
export { default } from '../../../replication';

View File

@ -1,7 +0,0 @@
import { helper as buildHelper } from '@ember/component/helper';
export function includes([haystack, needle]) {
return haystack.includes(needle);
}
export default buildHelper(includes);

View File

@ -1,17 +0,0 @@
import { helper as buildHelper } from '@ember/component/helper';
import { isNone, typeOf } from '@ember/utils';
export function reduceToArray(params) {
return params.reduce(function(result, param) {
if (isNone(param)) {
return result;
}
if (typeOf(param) === 'array') {
return result.concat(param);
} else {
return result.concat([param]);
}
}, []);
}
export default buildHelper(reduceToArray);

View File

@ -0,0 +1,13 @@
import config from '../config/environment';
export function initialize(/* application */) {
// attach mount hooks to the environment config
// context will be the router DSL
config.addRootMounts = function() {
this.mount('replication');
};
}
export default {
initialize,
};

View File

@ -13,6 +13,7 @@ export { INIT, UNSEAL, AUTH, CLUSTER, DR_REPLICATION_SECONDARY };
export default Mixin.create({ export default Mixin.create({
auth: service(), auth: service(),
store: service(),
transitionToTargetRoute(transition) { transitionToTargetRoute(transition) {
const targetRoute = this.targetRouteName(transition); const targetRoute = this.targetRouteName(transition);
@ -28,7 +29,7 @@ export default Mixin.create({
}, },
clusterModel() { clusterModel() {
return this.modelFor(CLUSTER); return this.modelFor(CLUSTER) || this.store.peekRecord('cluster', 'vault');
}, },
authToken() { authToken() {

View File

@ -70,7 +70,7 @@ export default DS.Model.extend({
}), }),
stateGlyph(state) { stateGlyph(state) {
const glyph = 'checkmark-circled-outline'; const glyph = 'check-circled-outline';
const glyphs = { const glyphs = {
'stream-wals': 'android-sync', 'stream-wals': 'android-sync',

View File

@ -114,22 +114,9 @@ Router.map(function() {
this.route('edit', { path: '/:policy_name/edit' }); this.route('edit', { path: '/:policy_name/edit' });
}); });
this.route('replication-dr-promote'); this.route('replication-dr-promote');
this.route('replication', function() { if (config.addRootMounts) {
this.route('index', { path: '/' }); config.addRootMounts.call(this);
this.route('mode', { path: '/:replication_mode' }, function() { }
//details
this.route('index', { path: '/' });
this.route('manage');
this.route('secondaries', function() {
this.route('add', { path: '/add' });
this.route('revoke', { path: '/revoke' });
this.route('config-show', { path: '/config/show/:secondary_id' });
this.route('config-edit', { path: '/config/edit/:secondary_id' });
this.route('config-create', { path: '/config/create/:secondary_id' });
});
});
});
this.route('not-found', { path: '/*path' }); this.route('not-found', { path: '/*path' });
}); });
this.route('not-found', { path: '/*path' }); this.route('not-found', { path: '/*path' });

View File

@ -1,13 +0,0 @@
import { inject as service } from '@ember/service';
import Route from '@ember/routing/route';
export default Route.extend({
replicationMode: service(),
beforeModel() {
const replicationMode = this.paramsFor('vault.cluster.replication.mode').replication_mode;
this.get('replicationMode').setMode(replicationMode);
},
model() {
return this.modelFor('vault.cluster.replication.mode');
},
});

View File

@ -106,7 +106,7 @@
margin-left: calc(#{$console-spacing} - 0.33rem); margin-left: calc(#{$console-spacing} - 0.33rem);
position: relative; position: relative;
.icon { .hs-icon {
position: absolute; position: absolute;
left: 0; left: 0;
top: 0; top: 0;

View File

@ -1,10 +1,24 @@
.env-banner { .env-banner {
&, align-self: center;
&:not(:last-child):not(:last-child) { border-radius: 3rem;
background: linear-gradient(135deg, $blue, $purple);
animation: env-banner-color-rotate 8s infinite linear alternate;
color: $white;
margin-top: -20px;
.hs-icon {
margin: 0; margin: 0;
} }
.level-item { .notification {
padding: $size-10 $size-8; background-color: transparent;
line-height: 1.66;
padding: 0 $spacing-s;
}
}
@keyframes env-banner-color-rotate {
100% {
filter: hue-rotate(105deg);
} }
} }

View File

@ -0,0 +1,37 @@
.hs-icon {
flex: 0 0 auto;
display: inline-flex;
justify-content: center;
align-items: flex-start;
vertical-align: middle;
width: 16px;
min-width: fit-content;
margin: 2px 4px;
}
.hs-icon svg {
fill: currentColor;
flex: 1 1 0;
}
.hs-icon-button-right {
margin-left: 0.25rem;
margin-right: -0.5rem;
align-items: center;
}
.hs-icon-s {
width: 12px;
}
.hs-icon-l {
width: 20px;
}
.hs-icon-xl {
width: 28px;
}
.hs-icon-xxl {
width: 32px;
}

View File

@ -27,9 +27,15 @@
} }
} }
.icon { .hs-icon {
margin-right: 0.25rem; margin-right: 0.25rem;
} }
.icon-true {
color: $green-500;
}
.icon-false {
color: $ui-gray-300;
}
} }
.info-table-row:not(.is-mobile) .column { .info-table-row:not(.is-mobile) .column {

View File

@ -0,0 +1,5 @@
.search-icon {
position: absolute;
top: 6px;
left: 2px;
}

View File

@ -122,3 +122,9 @@
animation: drop-fade-above 0.15s; animation: drop-fade-above 0.15s;
} }
} }
.search-select .search-icon {
position: absolute;
width: 20px;
top: 5px;
}

View File

@ -50,18 +50,6 @@
.ember-basic-dropdown-content--above.tool-tip { .ember-basic-dropdown-content--above.tool-tip {
margin-top: -2px; margin-top: -2px;
} }
.tool-tip-trigger {
border: none;
border-radius: 20px;
height: 18px;
width: 18px;
outline: none;
box-shadow: none;
cursor: pointer;
padding: 0;
color: $grey-dark;
margin-left: 8px;
}
.b-checkbox .tool-tip-trigger { .b-checkbox .tool-tip-trigger {
position: relative; position: relative;

View File

@ -70,7 +70,7 @@
.wizard-header { .wizard-header {
border-bottom: $light-border; border-bottom: $light-border;
padding: 0 $size-4 $size-8 2rem; padding: 0 $size-4 $size-8 0;
margin: $size-4 0; margin: $size-4 0;
position: relative; position: relative;
@ -78,12 +78,6 @@
margin-top: 0; margin-top: 0;
padding-top: 0; padding-top: 0;
} }
.title .icon {
left: 0;
position: absolute;
top: 0;
}
} }
.wizard-dismiss-menu { .wizard-dismiss-menu {
@ -117,10 +111,6 @@
.title { .title {
color: $white; color: $white;
.icon {
top: -0.1rem;
}
} }
.wizard-header { .wizard-header {
@ -154,12 +144,6 @@
} }
} }
.wizard-section .title .icon {
height: auto;
margin-right: $size-11;
width: auto;
}
.wizard-section:last-of-type { .wizard-section:last-of-type {
margin-bottom: $size-5; margin-bottom: $size-5;
} }
@ -236,6 +220,7 @@
transform: translate(-50%, -50%); transform: translate(-50%, -50%);
width: $wizard-progress-check-size; width: $wizard-progress-check-size;
z-index: 10; z-index: 10;
margin: 0 !important;
} }
.feature-progress-container .feature-check { .feature-progress-container .feature-check {
@ -258,10 +243,10 @@
} }
} }
.incomplete-check svg { .incomplete-check {
fill: $ui-gray-200; color: $ui-gray-200;
} }
.completed-check svg { .completed-check {
fill: $green; color: $green;
} }

View File

@ -66,6 +66,7 @@
@import './components/masked-input'; @import './components/masked-input';
@import './components/namespace-picker'; @import './components/namespace-picker';
@import './components/namespace-reminder'; @import './components/namespace-reminder';
@import './components/navigate-input';
@import './components/page-header'; @import './components/page-header';
@import './components/popup-menu'; @import './components/popup-menu';
@import './components/radial-progress'; @import './components/radial-progress';
@ -83,3 +84,6 @@
@import './components/upgrade-overlay'; @import './components/upgrade-overlay';
@import './components/ui-wizard'; @import './components/ui-wizard';
@import './components/vault-loading'; @import './components/vault-loading';
// bulma-free-zone
@import './components/hs-icon';

View File

@ -158,20 +158,17 @@ $button-box-shadow-standard: 0 3px 1px 0 rgba($black, 0.12);
.has-text-info & { .has-text-info & {
font-weight: $font-weight-semibold; font-weight: $font-weight-semibold;
.icon {
vertical-align: middle;
}
} }
&.tool-tip-trigger { &.tool-tip-trigger {
color: $black; color: $grey-dark;
min-width: auto; min-width: auto;
padding: 0;
} }
&.has-icon-left, &.has-icon-left,
&.has-icon-right { &.has-icon-right {
.icon { .hs-icon {
height: 16px; height: 16px;
min-width: auto; min-width: auto;
width: 16px; width: 16px;
@ -179,7 +176,7 @@ $button-box-shadow-standard: 0 3px 1px 0 rgba($black, 0.12);
} }
&.has-icon-left { &.has-icon-left {
.icon { .hs-icon {
&, &,
&:first-child:last-child { &:first-child:last-child {
position: relative; position: relative;
@ -189,7 +186,7 @@ $button-box-shadow-standard: 0 3px 1px 0 rgba($black, 0.12);
} }
&.has-icon-right { &.has-icon-right {
.icon { .hs-icon {
&, &,
&:first-child:last-child { &:first-child:last-child {
margin-left: $spacing-xxs; margin-left: $spacing-xxs;

View File

@ -101,8 +101,7 @@
display: flex; display: flex;
margin: 0 0 $spacing-l; margin: 0 0 $spacing-l;
.icon { .hs-icon {
flex: 0;
margin: 0 $spacing-xxs 0 0; margin: 0 $spacing-xxs 0 0;
min-width: fit-content; min-width: fit-content;
} }

View File

@ -159,7 +159,6 @@
font-size: 1rem; font-size: 1rem;
height: auto; height: auto;
justify-content: flex-start; justify-content: flex-start;
padding: 0 $spacing-xxs;
text-align: left; text-align: left;
width: 100%; width: 100%;

View File

@ -1,8 +0,0 @@
<ICon
@glyph="{{this.alertType.glyph}}"
@class="{{this.alertType.glyphClass}}"
@size="16"
/>
<p class="{{this.textClass}}">
{{@message}}
</p>

View File

@ -1,11 +1,18 @@
<div class="message {{type.class}}"> <div class="message {{type.class}}">
<div class="columns is-mobile is-variable is-1"> <div class="columns is-mobile is-variable is-1">
<div class="column is-narrow message-icon"> <div class="column is-narrow message-icon">
<ICon @glyph="{{type.glyph}}" @size="20" @excludeIconClass={{true}} /> <Icon
aria-hidden="true"
class="hs-icon-l"
@glyph="{{type.glyph}}"
/>
</div> </div>
<div class="column"> <div class="column">
<button type="button" class="close-button" {{action close}}> <button type="button" class="close-button" {{action close}}>
<ICon @excludeIconClass={{true}} @glyph="close" @aria-label="Close" /> <Icon
@glyph="cancel-plain"
@aria-label="Close"
/>
</button> </button>
<div class="message-title"> <div class="message-title">
{{type.text}} {{type.text}}

View File

@ -1,7 +1,7 @@
<div class="auth-form"> <div class="auth-form">
{{#if showLoading}} {{#if showLoading}}
<div class="vault-loader"> <div class="vault-loader">
{{partial 'svg/vault-loading'}} <VaultLogoSpinner />
</div> </div>
{{/if}} {{/if}}
{{#if hasMethodsWithPath}} {{#if hasMethodsWithPath}}

View File

@ -2,12 +2,12 @@
{{#if isRunning}} {{#if isRunning}}
<div class="control console-spinner is-loading"></div> <div class="control console-spinner is-loading"></div>
{{else}} {{else}}
{{i-con glyph="chevron-right" size=12 }} <Chevron />
{{/if}} {{/if}}
<input onkeyup={{action 'handleKeyUp'}} value={{value}} autocomplete="off" spellcheck="false" /> <input onkeyup={{action 'handleKeyUp'}} value={{value}} autocomplete="off" spellcheck="false" />
{{#tool-tip horizontalPosition="auto-right" verticalPosition=(if isFullscreen "above" "below") as |d|}} {{#tool-tip horizontalPosition="auto-right" verticalPosition=(if isFullscreen "above" "below") as |d|}}
{{#d.trigger tagName="button" type="button" class=(concat "button is-compact" (if isFullscreen " active")) click=(action "fullscreen") data-test-tool-tip-trigger=true}} {{#d.trigger tagName="button" type="button" class=(concat "button is-compact" (if isFullscreen " active")) click=(action "fullscreen") data-test-tool-tip-trigger=true}}
{{i-con glyph=(if isFullscreen "fullscreen-close" "fullscreen-open") aria-hidden="true" size=16}} <Icon class="hs-icon-l" @glyph={{if isFullscreen "expand-less" "expand-more"}} aria-label={{if isFullscreen "Minimize" "Maximize"}} />
{{/d.trigger}} {{/d.trigger}}
{{#d.content class="tool-tip"}} {{#d.content class="tool-tip"}}
<div class="box"> <div class="box">

View File

@ -1 +1,2 @@
<pre class="console-ui-command">{{i-con glyph="chevron-right" size=12}}{{content}}</pre> {{!-- using Icon here instead of Chevron because two nested tagless components results in a rendered line break between the tags breaking the layout in the <pre> --}}
<pre class="console-ui-command"><Icon @glyph="chevron-right" aria-hidden="true" />{{content}}</pre>

View File

@ -1,5 +1,5 @@
{{! template-lint-disable no-triple-curlies}} {{! template-lint-disable no-triple-curlies}}
<div class="console-ui-alert has-text-danger"> <div class="console-ui-alert has-text-danger">
{{i-con glyph="close-circled" aria-hidden="true" size=12}} <Icon @glyph="cancel-circle-fill" aria-hidden="true" />
<pre>{{{content}}}</pre> <pre>{{{content}}}</pre>
</div> </div>

View File

@ -1,4 +1,4 @@
<div class="console-ui-alert has-text-danger"> <div class="console-ui-alert has-text-danger">
{{i-con glyph="close-circled" aria-hidden="true" size=12}} <Icon @glyph="cancel-circle-fill" aria-hidden="true" />
<pre>{{content}}</pre> <pre>{{content}}</pre>
</div> </div>

View File

@ -1,5 +1,5 @@
<div class="console-ui-alert has-text-grey"> <div class="console-ui-alert has-text-grey">
{{i-con glyph="information-circled" aria-hidden="true" size=12}} <Icon @glyph="info-circle-fill" aria-hidden="true" />
<pre>Usage: vault &lt;command&gt; [args] <pre>Usage: vault &lt;command&gt; [args]
Commands: Commands:

View File

@ -1,4 +1,4 @@
<div class="console-ui-alert has-text-success"> <div class="console-ui-alert has-text-success">
{{i-con glyph="checkmark-circled" aria-hidden="true" size=12}} <Icon @glyph="check-circle-fill" aria-hidden="true" />
<pre>{{content}}</pre> <pre>{{content}}</pre>
</div> </div>

View File

@ -1,5 +1,5 @@
<button type="button" class="button is-ghost console-close-button" aria-label="close console" {{action "closeConsole"}}> <button type="button" class="button is-ghost console-close-button" {{action "closeConsole"}}>
<ICon @glyph="close" @size=16 /> <Icon @glyph="cancel-plain" aria-label="Close console" />
</button> </button>
<div class="console-ui-panel-content"> <div class="console-ui-panel-content">
<div class="content"> <div class="content">

View File

@ -1,6 +1,6 @@
{{#if (and controlGroupResponse.token controlGroupResponse.uiParams.url)}} {{#if (and controlGroupResponse.token controlGroupResponse.uiParams.url)}}
<div class="control-group-success" data-test-navigate-message> <div class="control-group-success" data-test-navigate-message>
You have been granted access to <code>{{model.requestPath}}</code>. Be careful, you can only access this data once. You have been granted access to <code>{{model.requestPath}}</code>. Be careful, you can only access this data once.
If you need access again in the future you will need to get authorized again. If you need access again in the future you will need to get authorized again.
<div class="box is-shadowless is-fullwidth is-marginless has-slim-padding"> <div class="box is-shadowless is-fullwidth is-marginless has-slim-padding">
<button data-test-navigate-button type="button" class="button is-primary" {{action (perform markAndNavigate)}}>Visit</button> <button data-test-navigate-button type="button" class="button is-primary" {{action (perform markAndNavigate)}}>Visit</button>
@ -26,7 +26,7 @@
</div> </div>
<div class="field is-grouped box is-fullwidth is-bottomless"> <div class="field is-grouped box is-fullwidth is-bottomless">
{{#link-to 'vault.cluster.access.control-groups' class="button"}} {{#link-to 'vault.cluster.access.control-groups' class="button"}}
<ICon @glyph="chevron-left" @size=10 /> Back <Chevron @direction="left" /> Back
{{/link-to}} {{/link-to}}
</div> </div>
{{else}} {{else}}

View File

@ -2,7 +2,7 @@
<MessageError @model={{model}} /> <MessageError @model={{model}} />
<div class="control-group-header {{if isSuccess 'is-success'}}"> <div class="control-group-header {{if isSuccess 'is-success'}}">
<p> <p>
<ICon @glyph={{if isSuccess "checkmark-circled" "control-lock"}} @size={{16}} /> <Icon @glyph={{if isSuccess "check-circle-fill" "lock-closed"}} />
<strong data-test-banner-prefix>{{bannerPrefix}}</strong> <strong data-test-banner-prefix>{{bannerPrefix}}</strong>
<span data-test-banner-text>{{bannerText}}</span> <span data-test-banner-text>{{bannerText}}</span>
</p> </p>
@ -42,7 +42,7 @@
<div class="authorizations" data-test-authorizations> <div class="authorizations" data-test-authorizations>
{{#if (gt model.authorizations.length 0)}} {{#if (gt model.authorizations.length 0)}}
<span class="has-text-success"> <span class="has-text-success">
<ICon @glyph="checkmark-circled-outline" @size={{16}} /> <Icon @glyph="check-circle-outline" />
</span> </span>
Already approved by Already approved by
{{#each model.authorizations as |authorization index|}} {{#each model.authorizations as |authorization index|}}
@ -54,7 +54,7 @@
{{/each}} {{/each}}
{{else}} {{else}}
<span class="has-text-grey"> <span class="has-text-grey">
<ICon @glyph="checkmark-circled-outline" @size={{16}} /> <Icon @glyph="check-circle-outline" />
</span> </span>
Awaiting authorization. Awaiting authorization.
{{/if}} {{/if}}
@ -74,7 +74,7 @@
{{#if model.canAuthorize}} {{#if model.canAuthorize}}
{{#if (or model.approved currentUserHasAuthorized)}} {{#if (or model.approved currentUserHasAuthorized)}}
{{#link-to 'vault.cluster.access.control-groups'class="button" data-test-back-link=true}} {{#link-to 'vault.cluster.access.control-groups'class="button" data-test-back-link=true}}
<ICon @glyph="chevron-left" @size=10 /> Back <Chevron @direction="left" /> Back
{{/link-to}} {{/link-to}}
{{else}} {{else}}
<button <button

View File

@ -1,4 +1,4 @@
{{#if icon}} {{#if icon}}
<ICon @glyph={{icon}} @size=12 /> <Icon @glyph={{icon}} />
{{/if}} {{/if}}
{{edition}} {{edition}}

View File

@ -1,5 +1,5 @@
<span class={{class}}> <span class={{class}}>
{{#if hasBlock}} {{#if (has-block)}}
{{yield}} {{yield}}
{{else}} {{else}}
{{text}} {{text}}

View File

@ -2,11 +2,11 @@
<T.trigger data-test-tooltip-trigger tabindex=false> <T.trigger data-test-tooltip-trigger tabindex=false>
<CopyButton <CopyButton
data-test-hover-copy-button data-test-hover-copy-button
class="copy-button button is-compact is-transparent"
@clipboardText={{copyValue}} @clipboardText={{copyValue}}
@class="copy-button button is-compact is-transparent"
@success={{action (mut tooltipText) "Copied!"}} @success={{action (mut tooltipText) "Copied!"}}
> >
<ICon @glyph="copy" aria-hidden="true" @size=16 /> <Icon @glyph="copy-action" aria-label="Copy" />
</CopyButton> </CopyButton>
</T.trigger> </T.trigger>
<T.content @class="tool-tip"> <T.content @class="tool-tip">

View File

@ -9,11 +9,10 @@
<div class="column is-10"> <div class="column is-10">
{{#link-to "vault.cluster.access.identity.aliases.show" item.id "details" {{#link-to "vault.cluster.access.identity.aliases.show" item.id "details"
class="has-text-black has-text-weight-semibold" class="has-text-black has-text-weight-semibold"
}}{{i-con }}<Icon
glyph='role' @glyph="user-square-outline"
size=14 class="has-text-grey-light"
class="has-text-grey-light" /><span class="has-text-weight-semibold">{{item.name}}</span>{{/link-to}}
}}<span class="has-text-weight-semibold">{{item.name}}</span>{{/link-to}}
<div class="has-text-grey"> <div class="has-text-grey">
{{item.id}} {{item.id}}
</div> </div>

View File

@ -2,11 +2,11 @@
{{#each model.directGroupIds as |gid|}} {{#each model.directGroupIds as |gid|}}
{{#link-to "vault.cluster.access.identity.show" "groups" gid "details" {{#link-to "vault.cluster.access.identity.show" "groups" gid "details"
class="list-item-row" class="list-item-row"
}}{{i-con }}<Icon
glyph='folder' @glyph="folder-outline"
size=14
class="has-text-grey-light" class="has-text-grey-light"
}}{{gid}}{{/link-to}} />{{gid}}
{{/link-to}}
{{/each}} {{/each}}
{{#each model.inheritedGroupIds as |gid|}} {{#each model.inheritedGroupIds as |gid|}}
{{#linked-block {{#linked-block
@ -15,11 +15,10 @@
}} }}
{{#link-to "vault.cluster.access.identity.show" "groups" gid "details" {{#link-to "vault.cluster.access.identity.show" "groups" gid "details"
class="has-text-black" class="has-text-black"
}}{{i-con }}<Icon
glyph='folder' @glyph="folder-outline"
size=14
class="has-text-grey-light" class="has-text-grey-light"
}}{{gid}} />{{gid}}
{{/link-to}} {{/link-to}}
<span class="tag has-text-grey is-size-8">inherited</span> <span class="tag has-text-grey is-size-8">inherited</span>
{{/linked-block}} {{/linked-block}}

View File

@ -9,13 +9,12 @@
}} }}
<div class="columns is-mobile"> <div class="columns is-mobile">
<div class="column is-10"> <div class="column is-10">
{{#link-to "vault.cluster.access.identity.show" "groups" gid "details" {{#link-to "vault.cluster.access.identity.show" "groups" gid "details"
class="is-block has-text-black has-text-weight-semibold" class="is-block has-text-black has-text-weight-semibold"
}}{{i-con }}<Icon
glyph='folder' @glyph="folder-outline"
size=14
class="has-text-grey-light" class="has-text-grey-light"
}}{{gid}}{{/link-to}} />{{gid}}{{/link-to}}
</div> </div>
<div class="column has-text-right"> <div class="column has-text-right">
{{#if model.canEdit}} {{#if model.canEdit}}
@ -37,11 +36,10 @@
<div class="column is-10"> <div class="column is-10">
{{#link-to "vault.cluster.access.identity.show" "entities" gid "details" {{#link-to "vault.cluster.access.identity.show" "entities" gid "details"
class="is-block has-text-black has-text-weight-semibold" class="is-block has-text-black has-text-weight-semibold"
}}{{i-con }}<Icon
glyph='role' @glyph="user-square-outline"
size=14 class="has-text-grey-light"
class="has-text-grey-light" />{{gid}}{{/link-to}}
}}{{gid}}{{/link-to}}
</div> </div>
<div class="column has-text-right"> <div class="column has-text-right">
{{#if model.canEdit}} {{#if model.canEdit}}

View File

@ -11,11 +11,11 @@
<div class="column is-10"> <div class="column is-10">
{{#link-to "vault.cluster.access.identity.show" "groups" gid "details" {{#link-to "vault.cluster.access.identity.show" "groups" gid "details"
class="is-block has-text-black has-text-weight-semibold" class="is-block has-text-black has-text-weight-semibold"
}}{{i-con }}<Icon
glyph='folder' @glyph="folder-outline"
size=14
class="has-text-grey-light" class="has-text-grey-light"
}}{{gid}}{{/link-to}} />{{gid}}
{{/link-to}}
</div> </div>
<div class="column has-text-right"> <div class="column has-text-right">
</div> </div>

View File

@ -1,11 +1,9 @@
{{#tool-tip as |d|}} {{#tool-tip as |d|}}
{{#d.trigger tagName="button" type="button" class=(concat "tool-tip-trigger button") data-test-tool-tip-trigger=true}} {{#d.trigger tagName="button" type="button" class="tool-tip-trigger button is-ghost is-compact" data-test-tool-tip-trigger=true}}
{{i-con glyph="information-reversed" <Icon @glyph="info-circle-outline"
class="auto-width" class="auto-width"
size=16
aria-label="help" aria-label="help"
excludeIconClass=true />
}}
{{/d.trigger}} {{/d.trigger}}
{{#d.content class="tool-tip"}} {{#d.content class="tool-tip"}}
<div class="box"> <div class="box">

View File

@ -44,7 +44,7 @@
aria-label="Delete row" aria-label="Delete row"
data-test-kv-delete-row data-test-kv-delete-row
> >
{{i-con size=22 glyph='trash-a' excludeIconClass=true class="is-large has-text-grey-light"}} <Icon @glyph="trash" class="hs-icon-l" />
</button> </button>
{{/if}} {{/if}}
</div> </div>

View File

@ -71,10 +71,10 @@
{{#each featuresInfo as |info|}} {{#each featuresInfo as |info|}}
{{#info-table-row label=info.name value=(if info.active "Active" "Not Active") data-test-feature-row="data-test-feature-row"}} {{#info-table-row label=info.name value=(if info.active "Active" "Not Active") data-test-feature-row="data-test-feature-row"}}
{{#if info.active}} {{#if info.active}}
<ICon @size=28 @glyph="true" /> <span data-test-feature-status>Active {{#if info.count}}&mdash; <Icon @glyph="check-circle-outline" class="hs-icon-l icon-true" aria-hidden="true" /> <span data-test-feature-status>Active {{#if info.count}}&mdash;
{{info.count}} standby nodes allotted{{/if}}</span> {{info.count}} standby nodes allotted{{/if}}</span>
{{else}} {{else}}
<ICon @size=28 @glyph="false" /> <span data-test-feature-status>Not Active</span> <Icon @glyph="cancel-circle-outline" class="hs-icon-l icon-false" aria-hidden="true" /> <span data-test-feature-status>Not Active</span>
{{/if}} {{/if}}
{{/info-table-row}} {{/info-table-row}}
{{/each}} {{/each}}

View File

@ -8,14 +8,14 @@
) )
class="pagination-previous" class="pagination-previous"
}} }}
{{i-con glyph="chevron-left" size=10}} <Chevron @direction="left"/>
<span class="pagination-previous-label"> <span class="pagination-previous-label">
Previous Previous
</span> </span>
{{/link-to}} {{/link-to}}
{{else}} {{else}}
<button type="button" disabled=true class="pagination-previous is-invisible" aria-hidden=true> <button type="button" disabled=true class="pagination-previous is-invisible" aria-hidden=true>
{{i-con glyph="chevron-left" size=10}} <Chevron @direction="left" />
<span class="pagination-previous-label"> <span class="pagination-previous-label">
Previous Previous
</span> </span>
@ -32,14 +32,14 @@
<span class="pagination-next-label"> <span class="pagination-next-label">
Next Next
</span> </span>
{{i-con glyph="chevron-right" size=11}} <Chevron />
{{/link-to}} {{/link-to}}
{{else}} {{else}}
<button type="button" disabled=true class="pagination-next is-invisible" aria-hidden=true> <button type="button" disabled=true class="pagination-next is-invisible" aria-hidden=true>
<span class="pagination-next-label"> <span class="pagination-next-label">
Next Next
</span> </span>
{{i-con glyph="chevron-right" size=11}} <Chevron />
</button> </button>
{{/if}} {{/if}}
{{#if segmentLinks }} {{#if segmentLinks }}

View File

@ -18,14 +18,14 @@
{{#if allowCopy}} {{#if allowCopy}}
<CopyButton <CopyButton
@clipboardText={{value}} @clipboardText={{value}}
@class="copy-button button {{if displayOnly "is-compact"}}"
@success={{success}} @success={{success}}
class="copy-button button {{if displayOnly "is-compact"}}"
data-test-copy-button data-test-copy-button
> >
<ICon @glyph="copy" aria-hidden="true" @size=16 /> <Icon @glyph="copy-action" aria-hidden="Copy value" />
</CopyButton> </CopyButton>
{{/if}} {{/if}}
<button {{action "toggleMask"}} class="{{if (eq value "") "has-text-grey"}} masked-input-toggle button {{if displayOnly "is-compact"}}" data-test-button> <button {{action "toggleMask"}} class="{{if (eq value "") "has-text-grey"}} masked-input-toggle button {{if displayOnly "is-compact"}}" data-test-button>
{{i-con glyph=(if shouldObscure "hidden" "visible") aria-hidden="true" size=16}} <Icon @glyph={{if shouldObscure "visibility-hide" "visibility-show"}} aria-hidden="true" />
</button> </button>
</div> </div>

View File

@ -9,12 +9,12 @@
</ul> </ul>
<div class="menu-toggle"> <div class="menu-toggle">
{{#if isActive}} {{#if isActive}}
<button type="button" class="button is-ghost" aria-label="close menu" {{action "closeMenu"}}> <button type="button" class="button is-ghost" {{action "closeMenu"}}>
{{i-con glyph="close" size=16}} <Icon @glyph="cancel-plain" aria-label="Close menu" />
</button> </button>
{{else}} {{else}}
<button type="button" class="button is-ghost has-text-grey-light" aria-label="open menu" {{action "openMenu"}}> <button type="button" class="button is-ghost has-text-grey-light" {{action "openMenu"}}>
<ICon @glyph="more-vertical" @size=16 /> <Icon @glyph="more-vertical" aria-label="Open menu" />
</button> </button>
{{/if}} {{/if}}
</div> </div>

View File

@ -3,10 +3,9 @@
<h1 class="title is-3" data-test-mount-form-header="true"> <h1 class="title is-3" data-test-mount-form-header="true">
{{#if showEnable}} {{#if showEnable}}
{{#with (find-by "type" mountModel.type mountTypes) as |typeInfo|}} {{#with (find-by "type" mountModel.type mountTypes) as |typeInfo|}}
<ICon <Icon
@size="24" @glyph={{or typeInfo.glyph typeInfo.type}}
@glyph={{concat "enable/" (or typeInfo.glyph typeInfo.type)}} class="has-text-grey-light hs-icon-l"
@class="has-text-grey-light"
/> />
{{#if (eq mountType "auth")}} {{#if (eq mountType "auth")}}
@ -56,11 +55,9 @@
data-test-mount-type-radio data-test-mount-type-radio
data-test-mount-type={{type.type}} data-test-mount-type={{type.type}}
> >
<ICon <Icon
@size="36" @glyph={{or type.glyph type.type}}
@excludeIconClass={{true}} class="has-text-grey-light hs-icon-xl"
@glyph={{concat "enable/" (or type.glyph type.type)}}
@class="has-text-grey-light"
/> />
{{type.displayName}} {{type.displayName}}

View File

@ -1,14 +1,16 @@
{{#link-to "vault.cluster.secrets" (query-params namespace=normalizedNamespace) {{#link-to "vault.cluster.secrets" (query-params namespace=normalizedNamespace)
class=(concat "is-block " class) class=(concat "is-block " class)
}} }}
{{#if hasBlock}} {{#if (has-block)}}
{{yield}} {{yield}}
{{else}} {{else}}
<div class="level is-mobile"> <div class="level is-mobile">
<span class="level-left">{{namespaceDisplay}}</span> <span class="level-left">{{namespaceDisplay}}</span>
<button type="button" class="button is-ghost icon level-right"> <span class="level-right">
<ICon @glyph="chevron-right" @size="12" @class="has-text-grey" /> <button type="button" class="button is-ghost icon">
</button> <Chevron @isButton={{true}} class="has-text-grey" />
</button>
</span>
</div> </div>
{{/if}} {{/if}}
{{/link-to}} {{/link-to}}

View File

@ -16,11 +16,9 @@
{{else}} {{else}}
<span class="namespace-name is-hidden-tablet">/ (Root)</span> <span class="namespace-name is-hidden-tablet">/ (Root)</span>
{{/if}} {{/if}}
<ICon <Chevron
@glyph="chevron-down" @direction="down"
@size=8
@class="has-text-white auto-width is-status-chevron" @class="has-text-white auto-width is-status-chevron"
aria-hidden="true"
/> />
</D.trigger> </D.trigger>
<D.content @class="namespace-picker-content"> <D.content @class="namespace-picker-content">
@ -28,11 +26,9 @@
<div class="level-left"> <div class="level-left">
{{#if (not isUserRootNamespace)}} {{#if (not isUserRootNamespace)}}
<NamespaceLink @targetNamespace={{or (object-at (dec 2 menuLeaves.length) lastMenuLeaves) auth.authData.userRootNamespace}} @class="namespace-link button is-ghost icon"> <NamespaceLink @targetNamespace={{or (object-at (dec 2 menuLeaves.length) lastMenuLeaves) auth.authData.userRootNamespace}} @class="namespace-link button is-ghost icon">
<ICon <Chevron
@glyph="chevron-left" @direction="left"
@size=12
@class="has-text-info" @class="has-text-info"
aria-hidden="true"
/> />
</NamespaceLink> </NamespaceLink>
{{/if}} {{/if}}
@ -49,7 +45,9 @@
<h5 class="list-header">Current namespace</h5> <h5 class="list-header">Current namespace</h5>
<div class="level is-mobile namespace-link"> <div class="level is-mobile namespace-link">
<span class="level-left">{{if namespacePath (concat namespacePath "/") "root"}}</span> <span class="level-left">{{if namespacePath (concat namespacePath "/") "root"}}</span>
<ICon @glyph="checkmark-circled-outline" @size="16" @class="has-text-success level-right" /> <span class="level-right">
<Icon @glyph="check-circle-outline" class="has-text-success" />
</span>
</div> </div>
</header> </header>
<div class="namespace-list {{if isAnimating "animated-list"}}"> <div class="namespace-list {{if isAnimating "animated-list"}}">

View File

@ -5,7 +5,7 @@
{{#unless navDrawerOpen}} {{#unless navDrawerOpen}}
<button class="navbar-drawer-toggle is-hidden-tablet" {{action "toggleNavDrawer"}}> <button class="navbar-drawer-toggle is-hidden-tablet" {{action "toggleNavDrawer"}}>
<ICon @glyph="more-vertical" @size="16" /> Menu <Icon @glyph="more-vertical" /> Menu
</button> </button>
{{/unless}} {{/unless}}
@ -29,7 +29,7 @@
{{#if navDrawerOpen}} {{#if navDrawerOpen}}
<button class=" navbar-drawer-toggle is-hidden-tablet" type="button" {{action "toggleNavDrawer" false}}> <button class=" navbar-drawer-toggle is-hidden-tablet" type="button" {{action "toggleNavDrawer" false}}>
<ICon @glyph="close" @size="16" /> <Icon @glyph="cancel-plain" />
</button> </button>
{{/if}} {{/if}}
</div> </div>

View File

@ -1,5 +1,5 @@
<div class="field"> <div class="field">
<p class="control has-icons-left has-icons-right"> <p class="control has-icons-left">
<input <input
class="filter input" class="filter input"
disabled={{disabled}} disabled={{disabled}}
@ -13,7 +13,6 @@
onfocus={{action "setFilterFocused" true}} onfocus={{action "setFilterFocused" true}}
onblur={{action "setFilterFocused" false}} onblur={{action "setFilterFocused" false}}
/> />
<Icon @glyph="search" class="search-icon has-text-grey-light hs-icon-l" />
{{i-con glyph="ios-search-strong" class="is-left has-text-grey-light" size=20}}
</p> </p>
</div> </div>

View File

@ -48,7 +48,7 @@
<input class="file-input" type="file" onchange={{action "pickedFile"}} data-test-pgp-file-input=true> <input class="file-input" type="file" onchange={{action "pickedFile"}} data-test-pgp-file-input=true>
<span class="file-cta is-fullwidth"> <span class="file-cta is-fullwidth">
<span class="file-icon has-text-grey-dark"> <span class="file-icon has-text-grey-dark">
{{i-con glyph="document" size=16}} <Icon @glyph="file-outline" />
</span> </span>
<span class="file-label has-text-grey-dark" data-test-pgp-file-input-label=true> <span class="file-label has-text-grey-dark" data-test-pgp-file-input-label=true>
{{#if key.fileName}} {{#if key.fileName}}
@ -59,7 +59,10 @@
</span> </span>
{{#if key.fileName}} {{#if key.fileName}}
<button type="button" class="file-delete-button" {{action 'clearKey'}} data-test-pgp-clear=true> <button type="button" class="file-delete-button" {{action 'clearKey'}} data-test-pgp-clear=true>
{{i-con glyph="close" size=16}} <Icon
@glyph="cancel-plain"
@aria-label="Close"
/>
</button> </button>
{{/if}} {{/if}}
</span> </span>

View File

@ -1,5 +0,0 @@
{{message-error errors=errors}}
{{#if loading}}
{{else}}
{{partial (concat 'partials/replication/' selectedAction)}}
{{/if}}

View File

@ -1 +0,0 @@
{{partial partialName}}

View File

@ -1,24 +0,0 @@
{{#if (not version.hasDRReplication)}}
{{upgrade-page title="Replication"}}
{{else if (or cluster.allReplicationDisabled cluster.replicationAttrs.replicationDisabled)}}
{{partial 'partials/replication/enable'}}
{{else if showModeSummary}}
{{partial 'partials/replication/mode-summary'}}
{{else}}
{{#if (eq replicationAttrs.mode 'initializing')}}
The cluster is initializing replication. This may take some time.
{{else}}
{{info-table-row label="Mode" value=replicationAttrs.mode}}
{{info-table-row label="Replication set" value=replicationAttrs.clusterId}}
{{info-table-row label="Secondary ID" value=replicationAttrs.secondaryId}}
{{info-table-row label="State" value=replicationAttrs.state}}
{{info-table-row label="Primary cluster address" value=replicationAttrs.primaryClusterAddr}}
{{info-table-row label="Replication state" value=replicationAttrs.replicationState}}
{{info-table-row label="Last WAL entry" value=replicationAttrs.lastWAL}}
{{info-table-row label="Last Remote WAL entry" value=replicationAttrs.lastRemoteWAL}}
{{info-table-row label="Merkle root index" value=replicationAttrs.merkleRoot}}
{{#if replicationAttrs.syncProgress}}
{{info-table-row label="Sync progress" value=(concat replicationAttrs.syncProgress.progress '/' replicationAttrs.syncProgress.total)}}
{{/if}}
{{/if}}
{{/if}}

View File

@ -1,6 +1,6 @@
<div class="field"> <div class="field">
<p class="control has-icons-left has-icons-right"> <p class="control has-icons-left has-icons-right">
<span class="input has-text-grey-light">Search</span> <span class="input has-text-grey-light">Search</span>
{{i-con glyph="ios-search-strong" class="is-left has-text-grey-light" size=16}} <Icon @glyph="search" class="search-icon has-text-grey-light" aria-hidden="true" />
</p> </p>
</div> </div>

View File

@ -49,7 +49,7 @@
data-test-selected-list-button="delete" data-test-selected-list-button="delete"
{{action "discardSelection" selected}} {{action "discardSelection" selected}}
> >
{{i-con size=16 glyph="trash-a" excludeIconClass=true}} <Icon @glyph="trash" />
</button> </button>
</div> </div>
</li> </li>

View File

@ -91,11 +91,9 @@
{{action @editActions.deleteRow secret.name}} {{action @editActions.deleteRow secret.name}}
aria-label="Delete row" aria-label="Delete row"
> >
<ICon <Icon
@size="22" @glyph="trash"
@glyph="trash-a" class="hs-icon-l has-text-grey-light"
@excludeIconClass={{true}}
class="is-large has-text-grey-light"
/> />
</button> </button>
{{/if}} {{/if}}

View File

@ -56,8 +56,7 @@
@class={{concat "popup-menu-trigger toolbar-link" (if D.isOpen " is-active")}} @class={{concat "popup-menu-trigger toolbar-link" (if D.isOpen " is-active")}}
@tagName="button" @tagName="button"
> >
History History <Chevron @direction="down" @isButton={{true}} />
<ICon @glyph="chevron-down" @size="12" />
</D.trigger> </D.trigger>
<D.content @class="popup-menu-content "> <D.content @class="popup-menu-content ">
<nav class="box menu"> <nav class="box menu">
@ -79,9 +78,9 @@
<LinkTo class="link" @params={{array (query-params version=secretVersion.version)}}> <LinkTo class="link" @params={{array (query-params version=secretVersion.version)}}>
Version {{secretVersion.version}} Version {{secretVersion.version}}
{{#if (eq secretVersion.version this.model.currentVersion)}} {{#if (eq secretVersion.version this.model.currentVersion)}}
<ICon @glyph="checkmark-circled-outline" @excludeIconClass={{true}} @size="13" @class="has-text-success is-pulled-right" /> <Icon @glyph="check-circle-outline" class="has-text-success is-pulled-right" />
{{else if secretVersion.deleted}} {{else if secretVersion.deleted}}
<ICon @glyph="cancel-square-outline" @size="13" @excludeIconClass={{true}} @class="has-text-grey is-pulled-right" /> <Icon @glyph="cancel-square-outline" class="has-text-grey is-pulled-right" />
{{/if}} {{/if}}
</LinkTo> </LinkTo>
</li> </li>
@ -105,7 +104,7 @@
data-test-secret-delete="true" data-test-secret-delete="true"
> >
Delete secret Delete secret
<ICon @glyph="chevron-right" @size="12" /> <Chevron @isButton={{true}} />
</ConfirmAction> </ConfirmAction>
{{/if}} {{/if}}
@ -125,7 +124,7 @@
@tagName="button" @tagName="button"
> >
Copy secret Copy secret
<ICon @glyph="chevron-down" @size="12" /> <Chevron @direction="down" @isButton={{true}} />
</D.trigger> </D.trigger>
<D.content @class="popup-menu-content is-wide"> <D.content @class="popup-menu-content is-wide">
<nav class="box menu"> <nav class="box menu">

View File

@ -16,7 +16,7 @@
</p.top> </p.top>
<p.levelLeft> <p.levelLeft>
<h1 class="title is-3"> <h1 class="title is-3">
{{i-con glyph=(or (concat "enable/" model.engineType) "enable/secrets") size=24 class="has-text-grey-light"}} <Icon @glyph={{or model.engineType "secrets"}} class="hs-icon-xl has-text-grey-light" />
{{model.id}} {{model.id}}
{{#if (eq model.options.version 2)}} {{#if (eq model.options.version 2)}}
<span class="tag"> <span class="tag">

View File

@ -10,16 +10,16 @@
@tagName="button" @tagName="button"
> >
{{#if useDefaultTrigger}} {{#if useDefaultTrigger}}
<ICon aria-label="More options" @glyph="more" @size="16" @class="has-text-black auto-width" /> <Icon aria-label="More options" @glyph="more-horizontal" class="has-text-black auto-width" />
{{else}} {{else}}
Version {{this.version.version}} Version {{this.version.version}}
<ICon @glyph="chevron-down" @size="12" /> <Chevron @direction="down" @isButton={{true}} />
{{/if}} {{/if}}
</D.trigger> </D.trigger>
<D.content @class="popup-menu-content "> <D.content @class="popup-menu-content ">
<nav class="box menu"> <nav class="box menu">
<ul class="menu-list"> <ul class="menu-list">
{{#if hasBlock}} {{#if (has-block)}}
{{yield}} {{yield}}
{{/if}} {{/if}}
{{#if this.version.destroyed}} {{#if this.version.destroyed}}

View File

@ -131,7 +131,7 @@
</div> </div>
{{/if}} {{/if}}
<div class="box is-shadowless is-marginless no-padding-top is-fullwidth" data-test-form-text> <div class="box is-shadowless is-marginless no-padding-top is-fullwidth" data-test-form-text>
{{#if hasBlock}} {{#if (has-block)}}
{{yield}} {{yield}}
{{else if formText}} {{else if formText}}
{{formText}} {{formText}}

View File

@ -1,10 +1,10 @@
{{#basic-dropdown-hover horizontalPosition="auto-left" verticalPosition="below" renderInPlace=media.isMobile as |d|}} {{#basic-dropdown-hover horizontalPosition="auto-left" verticalPosition="below" renderInPlace=media.isMobile as |d|}}
{{#d.trigger tagName=(if (eq type "replication") "span" "button") class=(if (eq type "replication") "" "button is-transparent")}} {{#d.trigger tagName=(if (eq type "replication") "span" "button") class=(if (eq type "replication") "" "button is-transparent")}}
<ICon @glyph={{glyphName}} @size=24 @aria-label={{ariaLabel}} /> <Icon @glyph={{glyphName}} class="hs-icon-l" @aria-label={{ariaLabel}} />
<div class="status-menu-label"> <div class="status-menu-label">
{{label}} {{label}}
</div> </div>
<ICon @glyph="chevron-down" @size=8 @aria-hidden="true" @class="has-text-white is-status-chevron"/> <Chevron @direction="down" class="has-text-white is-status-chevron"/>
{{/d.trigger}} {{/d.trigger}}
{{#d.content class=(concat "status-menu-content status-menu-content-" type)}} {{#d.content class=(concat "status-menu-content status-menu-content-" type)}}
{{partial partialName}} {{partial partialName}}

View File

@ -40,12 +40,7 @@
data-test-string-list-button="delete" data-test-string-list-button="delete"
{{action "removeInput" index}} {{action "removeInput" index}}
> >
{{i-con <Icon @glyph="trash" class="hs-icon-l" />
size=22
glyph="trash-a"
excludeIconClass=true
class="is-large has-text-grey-light"
}}
</button> </button>
{{/if}} {{/if}}
</div> </div>

View File

@ -45,7 +45,7 @@
<label class="file-label"> <label class="file-label">
<input class="file-input" type="file" onchange={{action "pickedFile"}} data-test-text-file-input=true> <input class="file-input" type="file" onchange={{action "pickedFile"}} data-test-text-file-input=true>
<span class="file-cta button"> <span class="file-cta button">
{{i-con glyph="upload" class="has-light-grey-text" size=16}} <Icon @glyph="upload" class="has-light-grey-text" />
Choose a file… Choose a file…
</span> </span>
<span class="file-name has-text-grey-dark" data-test-text-file-input-label=true> <span class="file-name has-text-grey-dark" data-test-text-file-input-label=true>
@ -57,7 +57,7 @@
</span> </span>
{{#if file.fileName}} {{#if file.fileName}}
<button type="button" class="file-delete-button" {{action 'clearFile'}} data-test-text-clear=true> <button type="button" class="file-delete-button" {{action 'clearFile'}} data-test-text-clear=true>
<ICon @glyph="close-circled-outline" @size=16 /> <Icon @glyph="cancel-circle-outline" />
</button> </button>
{{/if}} {{/if}}
</label> </label>

View File

@ -1,5 +0,0 @@
{{#if isOpen}}
{{i-con glyph='chevron-up' exludeIconClass=true}}&nbsp; {{openLabel}}
{{else}}
{{i-con glyph='chevron-down' exludeIconClass=true}}&nbsp; {{closedLabel}}
{{/if}}

View File

@ -1,2 +1,2 @@
{{@actionText}} {{@actionText}}
<ICon @glyph="chevron-right" @size=11 /> <Chevron @isButton={{true}} />

View File

@ -1,5 +1,5 @@
<SecretLink <SecretLink
class="toolbar-link" @class="toolbar-link"
@mode={{mode}} @mode={{mode}}
@secret={{secret}} @secret={{secret}}
@replace={{replace}} @replace={{replace}}
@ -14,5 +14,5 @@
@data-test-transit-key-actions-link={{data-test-transit-key-actions-link}} @data-test-transit-key-actions-link={{data-test-transit-key-actions-link}}
> >
{{yield}} {{yield}}
<ICon @glyph={{glyph}} @size=12 /> <Icon @glyph={{glyph}} />
</SecretLink> </SecretLink>

View File

@ -1,3 +0,0 @@
<div class="toolbar-scroller">
{{yield}}
</div>

View File

@ -103,7 +103,7 @@
id="bits" id="bits"
onchange={{action (mut bits) value="target.value"}} onchange={{action (mut bits) value="target.value"}}
> >
{{#each (reduce-to-array 128 256 512) as |bitOption|}} {{#each (array 128 256 512) as |bitOption|}}
<option selected={{eq bits bitOption}} value={{bitOption}}> <option selected={{eq bits bitOption}} value={{bitOption}}>
<code>{{bitOption}}</code> <code>{{bitOption}}</code>
</option> </option>

View File

@ -1,7 +1,7 @@
<form {{action 'doSubmit' <form {{action 'doSubmit'
(hash param=(reduce-to-array exportKeyType (if exportVersion exportKeyVersion))) (hash param=(compact (array exportKeyType (if exportVersion exportKeyVersion))))
(hash wrapTTL=wrapTTL) (hash wrapTTL=wrapTTL)
on="submit" }} on="submit" }}
> >
{{#if (or keys wrappedToken) }} {{#if (or keys wrappedToken) }}
<div class="box is-sideless is-fullwidth is-marginless"> <div class="box is-sideless is-fullwidth is-marginless">

View File

@ -6,7 +6,7 @@
<div class="columns is-centered"> <div class="columns is-centered">
<div class="column is-half has-text-centered"> <div class="column is-half has-text-centered">
<p class="box is-shadowless {{if valid 'has-text-success' 'has-text-danger'}}" data-test-transit-verify="true"> <p class="box is-shadowless {{if valid 'has-text-success' 'has-text-danger'}}" data-test-transit-verify="true">
{{i-con glyph=(if valid 'checkmark' 'close') }} <Icon @glyph={{if valid "check-plain" "cancel-plain"}} />
The input is <b>{{if valid 'valid' 'not valid'}}</b> for the given {{if signature 'signature' 'hmac'}}. The input is <b>{{if valid 'valid' 'not valid'}}</b> for the given {{if signature 'signature' 'hmac'}}.
</p> </p>
</div> </div>
@ -55,7 +55,7 @@
name="verification" name="verification"
id="verification" id="verification"
onchange={{queue onchange={{queue
(action (mut verification) value="target.value") (action (mut verification) value="target.value")
(action "clearParams" (array "hmac" "signature")) (action "clearParams" (array "hmac" "signature"))
}} }}
> >

View File

@ -10,7 +10,7 @@
data-test-transit-key-rotate=true data-test-transit-key-rotate=true
}} }}
Rotate encryption key Rotate encryption key
<ICon @glyph="chevron-right" @size=12 /> <Chevron @isButton={{true}} />
{{/confirm-action}} {{/confirm-action}}
{{/if}} {{/if}}
{{else}} {{else}}

View File

@ -1,7 +0,0 @@
<button class="link {{linkClass}}" {{action "openOverlay"}}>
{{yield}}
</button>
{{#maybe-in-element modalContainer false}}
{{partial "partials/upgrade-overlay"}}
{{/maybe-in-element}}

View File

@ -13,7 +13,7 @@
</PopupMenu> </PopupMenu>
{{/unless}} {{/unless}}
<h1 class="title is-5"> <h1 class="title is-5">
<ICon @glyph={{glyph}} @size="21" /> {{headerText}} <Icon @glyph={{glyph}} class="hs-icon-l"/> {{headerText}}
</h1> </h1>
{{#if showProgress}} {{#if showProgress}}
<ToolTip @verticalPosition="below" as |T|> <ToolTip @verticalPosition="below" as |T|>

View File

@ -5,7 +5,7 @@
<span class="feature-progress" style={{bar.style}} {{! template-lint-disable }}></span> <span class="feature-progress" style={{bar.style}} {{! template-lint-disable }}></span>
</span> </span>
{{#if bar.showIcon}} {{#if bar.showIcon}}
<ICon class="feature-check {{if bar.completed 'completed-check' 'incomplete-check'}}" @glyph="check-circle-fill" @size="16" @excludeIconClass={{true}}/> <Icon class="feature-check {{if bar.completed 'completed-check' 'incomplete-check'}}" @glyph="check-circle-fill" />
{{/if}} {{/if}}
</div> </div>
{{/each}} {{/each}}

View File

@ -1,7 +1,7 @@
<div class="wizard-section {{class}}"> <div class="wizard-section {{class}}">
<h2 class="title is-6"> <h2 class="title is-6">
{{#if headerIcon}} {{#if headerIcon}}
<ICon @glyph={{headerIcon}} @size=24 /> <Icon @glyph={{headerIcon}} class="hs-icon-l" aria-hidden="true" />
{{/if}} {{/if}}
{{headerText}} {{headerText}}
</h2> </h2>
@ -14,7 +14,7 @@
{{/if}} {{/if}}
{{#if docText}} {{#if docText}}
<DocLink @path={{docPath}}> <DocLink @path={{docPath}}>
<ICon @glyph='learn' @size=16 /> {{docText}} <Icon @glyph="learn" aria-hidden="true" /> {{docText}}
</DocLink> </DocLink>
{{/if}} {{/if}}
</div> </div>

View File

@ -1,6 +1,6 @@
<WizardSection <WizardSection
@headerText="Active Directory" @headerText="Active Directory"
@headerIcon="enable/azure" @headerIcon="azure"
@docText="Docs: Active Directory Secrets" @docText="Docs: Active Directory Secrets"
@docPath="/docs/secrets/ad/index.html" @docPath="/docs/secrets/ad/index.html"
> >

View File

@ -1,6 +1,6 @@
<WizardSection <WizardSection
@headerText="AliCloud" @headerText="AliCloud"
@headerIcon="enable/alicloud" @headerIcon="alicloud"
@docText="Docs: Google Cloud Secrets" @docText="Docs: Google Cloud Secrets"
@docPath="/docs/secrets/alicloud/index.html" @docPath="/docs/secrets/alicloud/index.html"
> >

View File

@ -1,6 +1,6 @@
<WizardSection <WizardSection
@headerText="AliCloud" @headerText="AliCloud"
@headerIcon="enable/alicloud" @headerIcon="alicloud"
@docText="Docs: AliCloud Authentication" @docText="Docs: AliCloud Authentication"
@docPath="/docs/auth/alicloud.html" @docPath="/docs/auth/alicloud.html"
> >

View File

@ -1,6 +1,6 @@
<WizardSection <WizardSection
@headerText="AppRole" @headerText="AppRole"
@headerIcon="enable/approle" @headerIcon="approle"
@docText="Docs: AppRole Authentication" @docText="Docs: AppRole Authentication"
@docPath="/docs/auth/approle.html" @docPath="/docs/auth/approle.html"
> >

View File

@ -11,10 +11,10 @@
@headerText="Want to start again or move on?" @headerText="Want to start again or move on?"
@class="wizard-details" @class="wizard-details"
> >
<button type="button" class="button next-feature-step" {{action onReset}}> <button type="button" class="button next-feature-step" {{action onReset}}>
Enable another Auth Method <ICon @glyph="loop" @size=13 /> Enable another Auth Method <Icon @glyph="loop" class="hs-icon-button-right" />
</button> </button>
<button type="button" class="button next-feature-step" {{action onAdvance}}> <button type="button" class="button next-feature-step" {{action onAdvance}}>
{{nextFeature}} <ICon @glyph="chevron-right" @size=10 /> {{nextFeature}} <Chevron @isButton={{true}} />
</button> </button>
</WizardSection> </WizardSection>

View File

@ -1,6 +1,6 @@
<WizardSection <WizardSection
@headerText="AWS" @headerText="AWS"
@headerIcon="enable/aws" @headerIcon="aws"
@docText="Docs: AWS Secrets" @docText="Docs: AWS Secrets"
@docPath="/docs/secrets/aws/index.html" @docPath="/docs/secrets/aws/index.html"
> >

View File

@ -1,6 +1,6 @@
<WizardSection <WizardSection
@headerText="AWS" @headerText="AWS"
@headerIcon="enable/aws" @headerIcon="aws"
@docText="Docs: AWS Authentication" @docText="Docs: AWS Authentication"
@docPath="/docs/auth/aws.html" @docPath="/docs/auth/aws.html"
> >

View File

@ -1,6 +1,6 @@
<WizardSection <WizardSection
@headerText="Azure" @headerText="Azure"
@headerIcon="enable/azure" @headerIcon="azure"
@docText="Docs: Azure Secrets" @docText="Docs: Azure Secrets"
@docPath="/docs/secrets/azure/index.html" @docPath="/docs/secrets/azure/index.html"
> >

View File

@ -1,6 +1,6 @@
<WizardSection <WizardSection
@headerText="Azure" @headerText="Azure"
@headerIcon="enable/azure" @headerIcon="azure"
@docText="Docs: Azure Authentication" @docText="Docs: Azure Authentication"
@docPath="/docs/auth/azure.html" @docPath="/docs/auth/azure.html"
> >

View File

@ -1,6 +1,6 @@
<WizardSection <WizardSection
@headerText="TLS Certificates" @headerText="TLS Certificates"
@headerIcon="enable/cert" @headerIcon="cert"
@docText="Docs: TLS Certificates Authentication" @docText="Docs: TLS Certificates Authentication"
@docPath="/docs/auth/cert.html" @docPath="/docs/auth/cert.html"
> >

View File

@ -1,6 +1,6 @@
<WizardSection <WizardSection
@headerText="Consul" @headerText="Consul"
@headerIcon="enable/consul" @headerIcon="consul"
@docText="Docs: Consul Secrets" @docText="Docs: Consul Secrets"
@docPath="/docs/secrets/consul/index.html" @docPath="/docs/secrets/consul/index.html"
> >

Some files were not shown because too many files have changed in this diff Show More