open-vault/ui/lib/core/addon/components/key-value-header.js
Jordan Reimer 5c2a08de6d
Ember Upgrade to 3.24 (#13443)
* 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>
2021-12-16 20:44:29 -07:00

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;
}
),
});