1
0
Fork 0
VaultUI/src/pages/Secrets/SecretTitleElement.ts

56 lines
1.8 KiB
TypeScript
Raw Normal View History

2021-05-16 10:27:21 +01:00
import { PageRouter } from "z-pagerouter";
2021-05-19 10:27:00 +01:00
import { PageState } from "../../PageState";
import { makeElement } from "z-makeelement";
2021-05-16 09:42:43 +01:00
function currentTitleSecretText(state: PageState, suffix = ""): string {
2021-05-20 14:12:12 +01:00
let secretItemText = state.secretItem;
secretItemText += suffix;
if (state.secretVersion !== null) secretItemText += ` (v${state.secretVersion})`;
return secretItemText;
}
export async function SecretTitleElement(router: PageRouter, suffix = ""): Promise<HTMLElement> {
2021-05-16 10:35:35 +01:00
const state = router.state as PageState;
const titleElement = makeElement({
tag: "div",
children: [
makeElement({
tag: "a",
2021-05-20 14:12:12 +01:00
text: state.baseMount + " ",
onclick: async () => {
2021-05-20 14:12:12 +01:00
state.secretPath = [];
state.secretItem = "";
state.secretVersion = null;
2021-05-20 14:12:12 +01:00
if (state.secretMountType.startsWith("kv") || state.secretMountType == "cubbyhole") {
await router.changePage("KEY_VALUE_VIEW");
2021-05-20 14:12:12 +01:00
} else if (state.secretMountType == "totp") {
await router.changePage("TOTP");
2021-05-20 14:12:12 +01:00
} else if (state.secretMountType == "transit") {
await router.changePage("TRANSIT_VIEW");
}
},
}),
2021-05-20 14:12:12 +01:00
...state.secretPath.map((secretPath, index, secretPaths) => {
return makeElement({
tag: "a",
text: secretPath + " ",
onclick: async () => {
2021-05-20 14:12:12 +01:00
state.secretVersion = null;
if (state.secretMountType.startsWith("kv")) {
state.secretPath = secretPaths.slice(0, index + 1);
await router.changePage("KEY_VALUE_VIEW");
}
},
});
}),
makeElement({
tag: "span",
2021-05-20 14:12:12 +01:00
condition: state.secretItem.length != 0,
2021-05-16 09:42:43 +01:00
text: currentTitleSecretText(state, suffix),
}),
],
});
return titleElement;
}