@keycloakify/keycloak-admin-ui
Version:
Repackaged Keycloak Admin UI
84 lines • 4.11 kB
JavaScript
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
import { AlertVariant, Button, ButtonVariant } from "@patternfly/react-core";
import { wrappable } from "@patternfly/react-table";
import { useState } from "react";
import { useTranslation } from "react-i18next";
import { Link, useNavigate } from "react-router-dom";
import { useAdminClient } from "../../admin-client";
import { useAlerts } from "../../ui-shared";
import { useConfirmDialog } from "../../components/confirm-dialog/ConfirmDialog";
import { ListEmptyState } from "../../ui-shared";
import { KeycloakDataTable } from "../../ui-shared";
import { useRealm } from "../../context/realm-context/RealmContext";
import useFormatDate, { FORMAT_DATE_AND_TIME } from "../../utils/useFormatDate";
import { toCreateInitialAccessToken } from "../../clients/routes/CreateInitialAccessToken";
export const InitialAccessTokenList = () => {
const { adminClient } = useAdminClient();
const { t } = useTranslation();
const { addAlert, addError } = useAlerts();
const { realm } = useRealm();
const formatDate = useFormatDate();
const navigate = useNavigate();
const [token, setToken] = useState();
const loader = async () => {
try {
return await adminClient.realms.getClientsInitialAccess({ realm });
}
catch (_a) {
return [];
}
};
const [toggleDeleteDialog, DeleteConfirm] = useConfirmDialog({
titleKey: "tokenDeleteConfirmTitle",
messageKey: t("tokenDeleteConfirm", { id: token === null || token === void 0 ? void 0 : token.id }),
continueButtonLabel: "delete",
continueButtonVariant: ButtonVariant.danger,
onConfirm: async () => {
try {
await adminClient.realms.delClientsInitialAccess({
realm,
id: token.id,
});
addAlert(t("tokenDeleteSuccess"), AlertVariant.success);
setToken(undefined);
}
catch (error) {
addError("tokenDeleteError", error);
}
},
});
return (_jsxs(_Fragment, { children: [_jsx(DeleteConfirm, {}), _jsx(KeycloakDataTable, { ariaLabelKey: "initialAccessToken", searchPlaceholderKey: "searchInitialAccessToken", loader: loader, toolbarItem: _jsx(Button, { component: (props) => (_jsx(Link, { ...props, to: toCreateInitialAccessToken({ realm }) })), children: t("create") }), actions: [
{
title: t("delete"),
onRowClick: (token) => {
setToken(token);
toggleDeleteDialog();
},
},
], columns: [
{
name: "id",
displayKey: "id",
},
{
name: "timestamp",
displayKey: "timestamp",
cellRenderer: (row) => formatDate(new Date(row.timestamp * 1000), FORMAT_DATE_AND_TIME),
},
{
name: "expiration",
displayKey: "expires",
cellRenderer: (row) => formatDate(new Date(row.timestamp * 1000 + row.expiration * 1000), FORMAT_DATE_AND_TIME),
},
{
name: "count",
displayKey: "count",
},
{
name: "remainingCount",
displayKey: "remainingCount",
transforms: [wrappable],
},
], emptyState: _jsx(ListEmptyState, { message: t("noTokens"), instructions: t("noTokensInstructions"), primaryActionText: t("create"), onPrimaryAction: () => navigate(toCreateInitialAccessToken({ realm })) }) }, token === null || token === void 0 ? void 0 : token.id)] }));
};
//# sourceMappingURL=InitialAccessTokenList.js.map