@keycloakify/keycloak-admin-ui
Version:
Repackaged Keycloak Admin UI
55 lines • 4.05 kB
JavaScript
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
import { Button, ButtonVariant, Divider, Text, TextVariants, } from "@patternfly/react-core";
import { PlusCircleIcon } from "@patternfly/react-icons";
import { Table, Tbody, Td, Th, Thead, Tr } from "@patternfly/react-table";
import { useEffect, useState } from "react";
import { useFormContext, useWatch } from "react-hook-form";
import { useTranslation } from "react-i18next";
import { useConfirmDialog } from "../../../components/confirm-dialog/ConfirmDialog";
import useToggle from "../../../utils/useToggle";
import { AddValidatorDialog } from "../../../realm-settings/user-profile/attribute/AddValidatorDialog";
import "../../realm-settings-section.css";
export const AttributeValidations = () => {
const { t } = useTranslation();
const [addValidatorModalOpen, toggleModal] = useToggle();
const [validatorToDelete, setValidatorToDelete] = useState();
const { setValue, control, register, getValues } = useFormContext();
const validators = useWatch({
name: "validations",
control,
defaultValue: [],
});
useEffect(() => {
register("validations");
}, [register]);
const [toggleDeleteDialog, DeleteConfirm] = useConfirmDialog({
titleKey: t("deleteValidatorConfirmTitle"),
messageKey: t("deleteValidatorConfirmMsg", {
validatorName: validatorToDelete,
}),
continueButtonLabel: "delete",
continueButtonVariant: ButtonVariant.danger,
onConfirm: async () => {
const updatedValidators = validators.filter((validator) => validator.key !== validatorToDelete);
setValue("validations", [...updatedValidators]);
},
});
return (_jsxs(_Fragment, { children: [addValidatorModalOpen && (_jsx(AddValidatorDialog, { selectedValidators: validators, onConfirm: (newValidator) => {
const annotations = getValues("annotations");
if (newValidator.id === "options" &&
!annotations.find((a) => a.key === "inputType")) {
setValue("annotations", [
...annotations,
{ key: "inputType", value: "select" },
]);
}
setValue("validations", [
...validators,
{ key: newValidator.id, value: newValidator.config },
]);
}, toggleDialog: toggleModal })), _jsx(DeleteConfirm, {}), _jsxs("div", { className: "kc-attributes-validations", children: [_jsx(Button, { id: "addValidator", onClick: () => toggleModal(), variant: "link", "data-testid": "addValidator", className: "kc--attributes-validations--add-validation-button", icon: _jsx(PlusCircleIcon, {}), children: t("addValidator") }), _jsx(Divider, {}), validators.length !== 0 ? (_jsxs(Table, { children: [_jsx(Thead, { children: _jsxs(Tr, { children: [_jsx(Th, { children: t("validatorColNames.colName") }), _jsx(Th, { children: t("validatorColNames.colConfig") }), _jsx(Th, { "aria-hidden": "true" })] }) }), _jsx(Tbody, { children: validators.map((validator) => (_jsxs(Tr, { children: [_jsx(Td, { dataLabel: t("validatorColNames.colName"), children: validator.key }), _jsx(Td, { dataLabel: t("validatorColNames.colConfig"), children: JSON.stringify(validator.value) }), _jsx(Td, { className: "kc--attributes-validations--action-cell", children: _jsx(Button, { variant: "link", "data-testid": "deleteValidator", onClick: () => {
toggleDeleteDialog();
setValidatorToDelete(validator.key);
}, children: t("delete") }, "validator") })] }, validator.key))) })] })) : (_jsx(Text, { className: "kc-emptyValidators", component: TextVariants.p, children: t("emptyValidators") }))] })] }));
};
//# sourceMappingURL=AttributeValidations.js.map