mirror of
https://github.com/grafana/grafana.git
synced 2025-07-31 10:22:10 +08:00

* Add RolePickerDrawer * Add RoiePickerBadges * Add RolePickerSelect * Replace RolePicker in OrgUsersTable * Replace RolePicker in ServiceAccountCreatePage * Add RolePickerDrawer test * Add tests * Add i18n texts * Update RolePickerBadges
38 lines
1007 B
TypeScript
38 lines
1007 B
TypeScript
import { useState } from 'react';
|
|
import { Controller, useFormContext } from 'react-hook-form';
|
|
|
|
import { toOption } from '@grafana/data';
|
|
import { MultiSelect } from '@grafana/ui';
|
|
|
|
import { RolePickerDrawer } from './RolePickerDrawer';
|
|
|
|
export interface Props {}
|
|
|
|
export const RolePickerSelect = ({}: Props) => {
|
|
const [isDrawerOpen, setIsDrawerOpen] = useState(false);
|
|
const { control } = useFormContext();
|
|
|
|
const toggleDrawer = () => setIsDrawerOpen(!isDrawerOpen);
|
|
|
|
return (
|
|
<>
|
|
<Controller
|
|
name="role-collection"
|
|
control={control}
|
|
render={({ field: { ref, value, ...field } }) => (
|
|
<MultiSelect
|
|
{...field}
|
|
onOpenMenu={toggleDrawer}
|
|
onChange={() => {
|
|
// TODO cannnot remove basic roles
|
|
// TODO open drawer instead
|
|
}}
|
|
value={value?.map(toOption)}
|
|
/>
|
|
)}
|
|
/>
|
|
{isDrawerOpen && <RolePickerDrawer onClose={toggleDrawer} />}
|
|
</>
|
|
);
|
|
};
|