mirror of
https://github.com/portainer/portainer.git
synced 2025-07-24 07:49:41 +02:00
refactor(app): move react components to react codebase [EE-3179] (#6971)
This commit is contained in:
parent
212400c283
commit
18252ab854
346 changed files with 642 additions and 644 deletions
29
app/react/components/UsersSelector/UsersSelector.mocks.ts
Normal file
29
app/react/components/UsersSelector/UsersSelector.mocks.ts
Normal file
|
@ -0,0 +1,29 @@
|
|||
import { UserViewModel } from '@/portainer/models/user';
|
||||
|
||||
export function createMockUser(id: number, username: string): UserViewModel {
|
||||
return {
|
||||
Id: id,
|
||||
Username: username,
|
||||
Role: 2,
|
||||
UserTheme: '',
|
||||
EndpointAuthorizations: {},
|
||||
PortainerAuthorizations: {
|
||||
PortainerDockerHubInspect: true,
|
||||
PortainerEndpointGroupInspect: true,
|
||||
PortainerEndpointGroupList: true,
|
||||
PortainerEndpointInspect: true,
|
||||
PortainerEndpointList: true,
|
||||
PortainerMOTD: true,
|
||||
PortainerRoleList: true,
|
||||
PortainerTeamList: true,
|
||||
PortainerTemplateInspect: true,
|
||||
PortainerTemplateList: true,
|
||||
PortainerUserInspect: true,
|
||||
PortainerUserList: true,
|
||||
PortainerUserMemberships: true,
|
||||
},
|
||||
RoleName: 'user',
|
||||
Checked: false,
|
||||
AuthenticationMethod: '',
|
||||
};
|
||||
}
|
29
app/react/components/UsersSelector/UsersSelector.stories.tsx
Normal file
29
app/react/components/UsersSelector/UsersSelector.stories.tsx
Normal file
|
@ -0,0 +1,29 @@
|
|||
import { Meta } from '@storybook/react';
|
||||
import { useState } from 'react';
|
||||
|
||||
import { UsersSelector } from './UsersSelector';
|
||||
import { createMockUser } from './UsersSelector.mocks';
|
||||
|
||||
const meta: Meta = {
|
||||
title: 'Components/UsersSelector',
|
||||
component: UsersSelector,
|
||||
};
|
||||
|
||||
export default meta;
|
||||
|
||||
export { Example };
|
||||
|
||||
function Example() {
|
||||
const [selectedUsers, setSelectedUsers] = useState([1]);
|
||||
|
||||
const users = [createMockUser(1, 'user1'), createMockUser(2, 'user2')];
|
||||
|
||||
return (
|
||||
<UsersSelector
|
||||
value={selectedUsers}
|
||||
onChange={setSelectedUsers}
|
||||
users={users}
|
||||
placeholder="Select one or more users"
|
||||
/>
|
||||
);
|
||||
}
|
41
app/react/components/UsersSelector/UsersSelector.tsx
Normal file
41
app/react/components/UsersSelector/UsersSelector.tsx
Normal file
|
@ -0,0 +1,41 @@
|
|||
import { User, UserId } from '@/portainer/users/types';
|
||||
|
||||
import { Select } from '@@/form-components/ReactSelect';
|
||||
|
||||
interface Props {
|
||||
name?: string;
|
||||
value: UserId[];
|
||||
onChange(value: UserId[]): void;
|
||||
users: User[];
|
||||
dataCy?: string;
|
||||
inputId?: string;
|
||||
placeholder?: string;
|
||||
}
|
||||
|
||||
export function UsersSelector({
|
||||
name,
|
||||
value,
|
||||
onChange,
|
||||
users,
|
||||
dataCy,
|
||||
inputId,
|
||||
placeholder,
|
||||
}: Props) {
|
||||
return (
|
||||
<Select
|
||||
isMulti
|
||||
name={name}
|
||||
getOptionLabel={(user) => user.Username}
|
||||
getOptionValue={(user) => `${user.Id}`}
|
||||
options={users}
|
||||
value={users.filter((user) => value.includes(user.Id))}
|
||||
closeMenuOnSelect={false}
|
||||
onChange={(selectedUsers) =>
|
||||
onChange(selectedUsers.map((user) => user.Id))
|
||||
}
|
||||
data-cy={dataCy}
|
||||
inputId={inputId}
|
||||
placeholder={placeholder}
|
||||
/>
|
||||
);
|
||||
}
|
1
app/react/components/UsersSelector/index.ts
Normal file
1
app/react/components/UsersSelector/index.ts
Normal file
|
@ -0,0 +1 @@
|
|||
export { UsersSelector } from './UsersSelector';
|
Loading…
Add table
Add a link
Reference in a new issue