Add all repos

This commit is contained in:
Darren Clarke 2023-02-13 12:41:30 +00:00
parent faa12c60bc
commit 8a91c9b89b
369 changed files with 29047 additions and 28 deletions

View file

@ -0,0 +1,27 @@
import { FC } from "react";
import {
SimpleForm,
TextInput,
BooleanInput,
Create,
CreateProps,
} from "react-admin";
import { useSession } from "next-auth/react";
import { UserRoleInput } from "./shared";
const UserCreate: FC<CreateProps> = (props) => {
const { data: session } = useSession();
return (
<Create {...props} title="Create Users">
<SimpleForm>
<TextInput source="email" />
<TextInput source="name" />
<UserRoleInput session={session} initialValue="NONE" />
<BooleanInput source="isActive" defaultValue={true} />
<TextInput source="createdBy" defaultValue={session.user.name} />
</SimpleForm>
</Create>
);
};
export default UserCreate;

View file

@ -0,0 +1,64 @@
import { makeStyles } from "@material-ui/core/styles";
import {
SimpleForm,
TextInput,
BooleanInput,
DateInput,
Edit,
Toolbar,
SaveButton,
DeleteButton,
EditProps,
useRedirect,
} from "react-admin";
import { useSession } from "next-auth/react";
import { UserRoleInput } from "./shared";
const useStyles = makeStyles((_theme) => ({
defaultToolbar: {
flex: 1,
display: "flex",
justifyContent: "space-between",
},
}));
const UserEditToolbar = (props) => {
const classes = useStyles(props);
const redirect = useRedirect();
return (
<Toolbar className={classes.defaultToolbar} {...props}>
<SaveButton
label="save"
mutationOptions={{ onSuccess: (response) => redirect("/users") }}
/>
<DeleteButton disabled={props.session.user.id === props.record.id} />
</Toolbar>
);
};
const UserTitle = ({ record }: { record?: any }) => {
let title = "";
if (record) title = record.name ? record.name : record.email;
return <span>User {title}</span>;
};
const UserEdit = (props: EditProps) => {
const { data: session } = useSession();
return (
<Edit title={<UserTitle />} {...props}>
<SimpleForm toolbar={<UserEditToolbar session={session} />}>
<TextInput disabled source="id" />
<TextInput source="email" />
<TextInput source="name" />
<UserRoleInput session={session} />
<DateInput source="emailVerified" />
<BooleanInput source="isActive" />
<TextInput source="createdBy" />
</SimpleForm>
</Edit>
);
};
export default UserEdit;

View file

@ -0,0 +1,28 @@
import {
List,
Datagrid,
ImageField,
DateField,
TextField,
EmailField,
BooleanField,
ListProps,
} from "react-admin";
const UserList = (props: ListProps) => (
<List {...props} exporter={false}>
<Datagrid rowClick="edit">
<EmailField source="email" />
<DateField source="emailVerified" />
<TextField source="name" />
<ImageField source="avatar" />
<TextField source="userRole" />
<BooleanField source="isActive" />
<DateField source="createdAt" />
<DateField source="updatedAt" />
<TextField source="createdBy" />
</Datagrid>
</List>
);
export default UserList;

View file

@ -0,0 +1,12 @@
import UserIcon from "@material-ui/icons/People";
import UserList from "./UserList";
import UserEdit from "./UserEdit";
import UserCreate from "./UserCreate";
// eslint-disable-next-line import/no-anonymous-default-export
export default {
list: UserList,
create: UserCreate,
edit: UserEdit,
icon: UserIcon,
};

View file

@ -0,0 +1,14 @@
import { SelectInput } from "react-admin";
export const UserRoleInput = (props) => (
<SelectInput
source="userRole"
choices={[
{ id: "NONE", name: "None" },
{ id: "USER", name: "User" },
{ id: "ADMIN", name: "Admin" },
]}
disabled={props.session.user.id === props.record.id}
{...props}
/>
);