@keycloakify/keycloak-admin-ui
Version:
Repackaged Keycloak Admin UI
40 lines • 5.53 kB
JavaScript
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
import { HelpItem, KeycloakSelect, SelectVariant, } from "../ui-shared";
import { ActionGroup, Button, FormGroup, PageSection, SelectOption, } from "@patternfly/react-core";
import { useEffect, useState } from "react";
import { Controller, useForm } from "react-hook-form";
import { useTranslation } from "react-i18next";
import { FormAccess } from "../components/form/FormAccess";
import { useServerInfo } from "../context/server-info/ServerInfoProvider";
import { convertToFormValues } from "../util";
export const RealmSettingsThemesTab = ({ realm, save, }) => {
const { t } = useTranslation();
const [loginThemeOpen, setLoginThemeOpen] = useState(false);
const [accountThemeOpen, setAccountThemeOpen] = useState(false);
const [adminUIThemeOpen, setAdminUIThemeOpen] = useState(false);
const [emailThemeOpen, setEmailThemeOpen] = useState(false);
const { control, handleSubmit, setValue } = useForm();
const themeTypes = useServerInfo().themes;
const setupForm = () => {
convertToFormValues(realm, setValue);
};
useEffect(setupForm, []);
return (_jsx(PageSection, { variant: "light", children: _jsxs(FormAccess, { isHorizontal: true, role: "manage-realm", className: "pf-v5-u-mt-lg", onSubmit: handleSubmit(save), children: [_jsx(FormGroup, { label: t("loginTheme"), fieldId: "kc-login-theme", labelIcon: _jsx(HelpItem, { helpText: t("loginThemeHelp"), fieldLabelId: "loginTheme" }), children: _jsx(Controller, { name: "loginTheme", control: control, defaultValue: "", render: ({ field }) => (_jsx(KeycloakSelect, { toggleId: "kc-login-theme", onToggle: () => setLoginThemeOpen(!loginThemeOpen), onSelect: (value) => {
field.onChange(value);
setLoginThemeOpen(false);
}, selections: field.value, variant: SelectVariant.single, isOpen: loginThemeOpen, placeholderText: t("selectATheme"), "data-testid": "select-login-theme", "aria-label": t("selectLoginTheme"), children: themeTypes.login.map((theme, idx) => (_jsx(SelectOption, { selected: theme.name === field.value, value: theme.name, children: theme.name }, `login-theme-${idx}`))) })) }) }), _jsx(FormGroup, { label: t("accountTheme"), fieldId: "kc-account-theme", labelIcon: _jsx(HelpItem, { helpText: t("accountThemeHelp"), fieldLabelId: "accountTheme" }), children: _jsx(Controller, { name: "accountTheme", control: control, defaultValue: "", render: ({ field }) => (_jsx(KeycloakSelect, { toggleId: "kc-account-theme", onToggle: () => setAccountThemeOpen(!accountThemeOpen), onSelect: (value) => {
field.onChange(value);
setAccountThemeOpen(false);
}, selections: field.value, variant: SelectVariant.single, "aria-label": t("selectAccountTheme"), isOpen: accountThemeOpen, placeholderText: t("selectATheme"), "data-testid": "select-account-theme", children: themeTypes.account
.filter((theme) => theme.name !== "base")
.map((theme, idx) => (_jsx(SelectOption, { selected: theme.name === field.value, value: theme.name, children: t(theme.name) }, `account-theme-${idx}`))) })) }) }), _jsx(FormGroup, { label: t("adminTheme"), fieldId: "kc-admin-ui-theme", labelIcon: _jsx(HelpItem, { helpText: t("adminThemeHelp"), fieldLabelId: "adminTheme" }), children: _jsx(Controller, { name: "adminTheme", control: control, defaultValue: "", render: ({ field }) => (_jsx(KeycloakSelect, { toggleId: "kc-admin-ui-theme", onToggle: () => setAdminUIThemeOpen(!adminUIThemeOpen), onSelect: (value) => {
field.onChange(value);
setAdminUIThemeOpen(false);
}, selections: field.value, variant: SelectVariant.single, isOpen: adminUIThemeOpen, placeholderText: t("selectATheme"), "data-testid": "select-admin-theme", "aria-label": t("selectAdminTheme"), children: themeTypes.admin
.filter((theme) => theme.name !== "base")
.map((theme, idx) => (_jsx(SelectOption, { selected: theme.name === field.value, value: theme.name, children: t(theme.name) }, `admin-theme-${idx}`))) })) }) }), _jsx(FormGroup, { label: t("emailTheme"), fieldId: "kc-email-theme", labelIcon: _jsx(HelpItem, { helpText: t("emailThemeHelp"), fieldLabelId: "emailTheme" }), children: _jsx(Controller, { name: "emailTheme", control: control, defaultValue: "", render: ({ field }) => (_jsx(KeycloakSelect, { toggleId: "kc-email-theme", onToggle: () => setEmailThemeOpen(!emailThemeOpen), onSelect: (value) => {
field.onChange(value);
setEmailThemeOpen(false);
}, selections: field.value, variant: SelectVariant.single, isOpen: emailThemeOpen, placeholderText: t("selectATheme"), "data-testid": "select-email-theme", "aria-label": t("selectEmailTheme"), children: themeTypes.email.map((theme, idx) => (_jsx(SelectOption, { selected: theme.name === field.value, value: theme.name, children: t(theme.name) }, `email-theme-${idx}`))) })) }) }), _jsxs(ActionGroup, { children: [_jsx(Button, { variant: "primary", type: "submit", "data-testid": "themes-tab-save", children: t("save") }), _jsx(Button, { variant: "link", onClick: setupForm, children: t("revert") })] })] }) }));
};
//# sourceMappingURL=ThemesTab.js.map