UNPKG

@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
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