keycloak-scim/src/client-scopes/add/components/ListComponent.tsx
agagancarczyk 56eb774dd3
Profile view update (#1357)
* added routing for viewing client profile

* added add executors form template

* added add executors form template

* add executor: wip

* add executor: wip

* add executor: wip

* add executor: wip

* add executor: wip

* add executor: wip

* add executor: wip

* add executor: wip

* add executor: wip

* added adding excutors to profiles

* added displaying executors - wip

* added displaying executors - wip

* added navigation to client profile edit on executor creation

* replaced table with list for listing executors added

* added support for editing client profile

* added logic making executors with config links only

* added read only values for edit/view client temporarily

* added helpText for added executors listed in executors list

* added helpText for added executors listed in executors list

* added deleting executor from client profile

* fixed deleting client profile and fixed messages for delete modals

* fixed message for delete clinet profile modal

* combined delete dialogs for client profile and executor

* displaying global executors for global profiles, hiding add executor button

* fixed eslint issue

* fixed executors list

* added back button to global profile view/edit view

* fixed test

* added global batche and hid actions dropdown for global profiles

* fixed switch on/off labels

* fixed hide/display items for global and non-global profiles

* added isDirty

* feedback fixes

* feedback fixes

* feedback fixes

* feedback fixes

* feedback fixes

* feedback fix

* small refactor

* added name and removed unused state

* fixed executor creation

* fixed executor creation

* added saving edited client profile

* added saving edited client profile

* improved trash icon styles

* test fix

* Some code suggestions

* Some more code suggestions

* feedback fixes

* feedback fixes

* use find instead of filter

* feedback fixes

* added defaultValues for executors

* removed defaultValues for executors

* final feedback fixes

* minor fixes

Co-authored-by: Agnieszka Gancarczyk <agancarc@redhat.com>
Co-authored-by: Erik Jan de Wit <erikjan.dewit@gmail.com>
Co-authored-by: Jon Koops <jonkoops@gmail.com>
2021-10-26 16:16:19 -04:00

63 lines
1.6 KiB
TypeScript

import React, { useState } from "react";
import { useTranslation } from "react-i18next";
import { Controller, useFormContext } from "react-hook-form";
import {
FormGroup,
Select,
SelectOption,
SelectVariant,
} from "@patternfly/react-core";
import type { ComponentProps } from "./components";
import { HelpItem } from "../../../components/help-enabler/HelpItem";
export const ListComponent = ({
name,
label,
helpText,
defaultValue,
options,
}: ComponentProps) => {
const { t } = useTranslation("client-scopes");
const { control } = useFormContext();
const [open, setOpen] = useState(false);
return (
<FormGroup
label={t(label!)}
labelIcon={
<HelpItem helpText={t(helpText!)} forLabel={t(label!)} forID={name!} />
}
fieldId={name!}
>
<Controller
name={`config.${name?.replaceAll(".", "-")}`}
data-testid={name}
defaultValue={defaultValue || ""}
control={control}
render={({ onChange, value }) => (
<Select
toggleId={name}
onToggle={(toggle) => setOpen(toggle)}
onSelect={(_, value) => {
onChange(value as string);
setOpen(false);
}}
selections={value}
variant={SelectVariant.single}
aria-label={t(label!)}
isOpen={open}
>
{options!.map((option) => (
<SelectOption
selected={option === value}
key={option}
value={option}
/>
))}
</Select>
)}
/>
</FormGroup>
);
};