@keycloakify/keycloak-admin-ui
Version:
Repackaged Keycloak Admin UI
44 lines • 2.67 kB
JavaScript
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
import { Tab, TabTitleText } from "@patternfly/react-core";
import { useState } from "react";
import { useTranslation } from "react-i18next";
import { useFetch } from "../../ui-shared";
import { useAdminClient } from "../../admin-client";
import { KeycloakSpinner } from "../../ui-shared";
import { RoutableTabs, useRoutableTab, } from "../../components/routable-tabs/RoutableTabs";
import { useRealm } from "../../context/realm-context/RealmContext";
import { KEY_PROVIDER_TYPE } from "../../util";
import { toKeysTab } from "../../realm-settings/routes/KeysTab";
import { KeysListTab } from "../../realm-settings/keys/KeysListTab";
import { KeysProvidersTab } from "../../realm-settings/keys/KeysProvidersTab";
const sortByPriority = (components) => {
const sortedComponents = [...components].sort((a, b) => {
var _a, _b;
const priorityA = Number((_a = a.config) === null || _a === void 0 ? void 0 : _a.priority);
const priorityB = Number((_b = b.config) === null || _b === void 0 ? void 0 : _b.priority);
return ((!isNaN(priorityB) ? priorityB : 0) - (!isNaN(priorityA) ? priorityA : 0));
});
return sortedComponents;
};
export const KeysTab = () => {
const { adminClient } = useAdminClient();
const { t } = useTranslation();
const { realm: realmName } = useRealm();
const [realmComponents, setRealmComponents] = useState();
const [key, setKey] = useState(0);
const refresh = () => {
setKey(key + 1);
};
useFetch(() => adminClient.components.find({
type: KEY_PROVIDER_TYPE,
realm: realmName,
}), (components) => setRealmComponents(sortByPriority(components)), [key]);
const useTab = (tab) => useRoutableTab(toKeysTab({ realm: realmName, tab }));
const listTab = useTab("list");
const providersTab = useTab("providers");
if (!realmComponents) {
return _jsx(KeycloakSpinner, {});
}
return (_jsxs(RoutableTabs, { mountOnEnter: true, unmountOnExit: true, defaultLocation: toKeysTab({ realm: realmName, tab: "list" }), children: [_jsx(Tab, { id: "keysList", "data-testid": "rs-keys-list-tab", "aria-label": "keys-list-subtab", title: _jsx(TabTitleText, { children: t("keysList") }), ...listTab, children: _jsx(KeysListTab, { realmComponents: realmComponents }) }), _jsx(Tab, { id: "providers", "data-testid": "rs-providers-tab", "aria-label": "rs-providers-tab", title: _jsx(TabTitleText, { children: t("providers") }), ...providersTab, children: _jsx(KeysProvidersTab, { realmComponents: realmComponents, refresh: refresh }) })] }));
};
//# sourceMappingURL=KeysTab.js.map