5c2a08de6d
* Update browserslist * Add browserslistrc * ember-cli-update --to 3.26, fix conflicts * Run codemodes that start with ember-* * More codemods - before cp* * More codemods (curly data-test-*) * WIP ember-basic-dropdown template errors * updates ember-basic-dropdown and related deps to fix build issues * updates basic dropdown instances to new version API * updates more deps -- ember-template-lint is working again * runs no-implicit-this codemod * creates and runs no-quoteless-attributes codemod * runs angle brackets codemod * updates lint:hbs globs to only touch hbs files * removes yield only templates * creates and runs deprecated args transform * supresses lint error for invokeAction on LinkTo component * resolves remaining ambiguous path lint errors * resolves simple-unless lint errors * adds warnings for deprecated tagName arg on LinkTo components * adds warnings for remaining curly component invocation * updates global template lint rules * resolves remaining template lint errors * disables some ember specfic lint rules that target pre octane patterns * js lint fix run * resolves remaining js lint errors * fixes test run * adds npm-run-all dep * fixes test attribute issues * fixes console acceptance tests * fixes tests * adds yield only wizard/tutorial-active template * fixes more tests * attempts to fix more flaky tests * removes commented out settled in transit test * updates deprecations workflow and adds initializer to filter by version * updates flaky policies acl old test * updates to flaky transit test * bumps ember deps down to LTS version * runs linters after main merge * fixes client count tests after bad merge conflict fixes * fixes client count history test * more updates to lint config * another round of hbs lint fixes after extending stylistic rule * updates lint-staged commands * removes indent eslint rule since it seems to break things * fixes bad attribute in transform-edit-form template * test fixes * fixes enterprise tests * adds changelog * removes deprecated ember-concurrency-test-waiters dep and adds @ember/test-waiters * flaky test fix Co-authored-by: hashishaw <cshaw@hashicorp.com>
97 lines
2.4 KiB
JavaScript
97 lines
2.4 KiB
JavaScript
import { computed } from '@ember/object';
|
|
import Component from '@ember/component';
|
|
import utils from 'vault/lib/key-utils';
|
|
import layout from '../templates/components/key-value-header';
|
|
import { encodePath } from 'vault/utils/path-encoding-helpers';
|
|
|
|
export default Component.extend({
|
|
layout,
|
|
tagName: 'nav',
|
|
classNames: 'key-value-header breadcrumb',
|
|
ariaLabel: 'breadcrumbs',
|
|
attributeBindings: ['ariaLabel:aria-label', 'aria-hidden'],
|
|
|
|
baseKey: null,
|
|
path: null,
|
|
showCurrent: true,
|
|
linkToPaths: true,
|
|
|
|
stripTrailingSlash(str) {
|
|
return str[str.length - 1] === '/' ? str.slice(0, -1) : str;
|
|
},
|
|
|
|
currentPath: computed('mode', 'path', 'showCurrent', function () {
|
|
const mode = this.mode;
|
|
const path = this.path;
|
|
const showCurrent = this.showCurrent;
|
|
if (!mode || showCurrent === false) {
|
|
return path;
|
|
}
|
|
return `vault.cluster.secrets.backend.${mode}`;
|
|
}),
|
|
secretPath: computed(
|
|
'baseKey',
|
|
'baseKey.{display,id}',
|
|
'currentPath',
|
|
'path',
|
|
'root',
|
|
'showCurrent',
|
|
function () {
|
|
let crumbs = [];
|
|
const root = this.root;
|
|
const baseKey = this.baseKey?.display || this.baseKey?.id;
|
|
const baseKeyModel = encodePath(this.baseKey?.id);
|
|
|
|
if (root) {
|
|
crumbs.push(root);
|
|
}
|
|
|
|
if (!baseKey) {
|
|
return crumbs;
|
|
}
|
|
|
|
const path = this.path;
|
|
const currentPath = this.currentPath;
|
|
const showCurrent = this.showCurrent;
|
|
const ancestors = utils.ancestorKeysForKey(baseKey);
|
|
const parts = utils.keyPartsForKey(baseKey);
|
|
if (ancestors.length === 0) {
|
|
crumbs.push({
|
|
label: baseKey,
|
|
text: this.stripTrailingSlash(baseKey),
|
|
path: currentPath,
|
|
model: baseKeyModel,
|
|
});
|
|
|
|
if (!showCurrent) {
|
|
crumbs.pop();
|
|
}
|
|
|
|
return crumbs;
|
|
}
|
|
|
|
ancestors.forEach((ancestor, index) => {
|
|
crumbs.push({
|
|
label: parts[index],
|
|
text: this.stripTrailingSlash(parts[index]),
|
|
path: path,
|
|
model: ancestor,
|
|
});
|
|
});
|
|
|
|
crumbs.push({
|
|
label: utils.keyWithoutParentKey(baseKey),
|
|
text: this.stripTrailingSlash(utils.keyWithoutParentKey(baseKey)),
|
|
path: currentPath,
|
|
model: baseKeyModel,
|
|
});
|
|
|
|
if (!showCurrent) {
|
|
crumbs.pop();
|
|
}
|
|
|
|
return crumbs;
|
|
}
|
|
),
|
|
});
|