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 927b68d7b8
commit 0ccc8467ec
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

@ -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

@ -11,11 +11,10 @@
<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">
<Chevron @isButton={{true}} class="has-text-grey" />
</button> </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,5 +1,5 @@
<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" }}
> >

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>

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

@ -12,9 +12,9 @@
@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