@keycloakify/keycloak-account-ui
Version:
<p align="center"> <img src="https://github.com/user-attachments/assets/e31c4910-7205-441c-9a35-e134b806b3a8"> </p> <p align="center"> <i>Repackaged Keycloak Account UI</i> <br> <br> <a href="https://github.com/keycloakify/keycloak-a
36 lines • 2.21 kB
JavaScript
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
import { Button, Form, Modal } from "@patternfly/react-core";
import { Fragment, useEffect } from "react";
import { FormProvider, useFieldArray, useForm } from "react-hook-form";
import { useTranslation } from "react-i18next";
import { SelectControl, TextControl, useAlerts, useEnvironment, } from "../ui-shared";
import { updatePermissions } from "../api";
export const EditTheResource = ({ resource, permissions, onClose, }) => {
const { t } = useTranslation();
const context = useEnvironment();
const { addAlert, addError } = useAlerts();
const form = useForm();
const { control, reset, handleSubmit } = form;
const { fields } = useFieldArray({
control,
name: "permissions",
});
useEffect(() => reset({ permissions }), []);
const editShares = async ({ permissions }) => {
try {
await Promise.all(permissions.map((permission) => updatePermissions(context, resource._id, [permission])));
addAlert(t("updateSuccess"));
onClose();
}
catch (error) {
addError(t("updateError", { error }).toString());
}
};
return (_jsx(Modal, { title: t("editTheResource", { name: resource.name }), variant: "medium", isOpen: true, onClose: onClose, actions: [
_jsx(Button, { variant: "primary", id: "done", type: "submit", form: "edit-form", children: t("done") }, "confirm"),
], children: _jsx(Form, { id: "edit-form", onSubmit: handleSubmit(editShares), children: _jsx(FormProvider, Object.assign({}, form, { children: fields.map((p, index) => (_jsxs(Fragment, { children: [_jsx(TextControl, { name: `permissions.${index}.username`, label: t("user"), isDisabled: true }), _jsx(SelectControl, { id: `permissions-${p.id}`, name: `permissions.${index}.scopes`, label: "permissions", variant: "typeaheadMulti", controller: { defaultValue: [] }, options: resource.scopes.map(({ name, displayName }) => ({
key: name,
value: displayName || name,
})) })] }, p.id))) })) }) }));
};
//# sourceMappingURL=EditTheResource.js.map