Client: Added clone button for filaments

This commit is contained in:
Donkie
2023-06-25 18:08:46 +02:00
parent 58426b075f
commit e24834f161
5 changed files with 65 additions and 10 deletions

View File

@@ -94,6 +94,7 @@ function App() {
name: "filament", name: "filament",
list: "/filament", list: "/filament",
create: "/filament/create", create: "/filament/create",
clone: "/filament/clone/:id",
edit: "/filament/edit/:id", edit: "/filament/edit/:id",
show: "/filament/show/:id", show: "/filament/show/:id",
meta: { meta: {
@@ -159,7 +160,14 @@ function App() {
</Route> </Route>
<Route path="/filament"> <Route path="/filament">
<Route index element={<FilamentList />} /> <Route index element={<FilamentList />} />
<Route path="create" element={<FilamentCreate />} /> <Route
path="create"
element={<FilamentCreate mode="create" />}
/>
<Route
path="clone/:id"
element={<FilamentCreate mode="clone" />}
/>
<Route path="edit/:id" element={<FilamentEdit />} /> <Route path="edit/:id" element={<FilamentEdit />} />
<Route path="show/:id" element={<FilamentShow />} /> <Route path="show/:id" element={<FilamentShow />} />
</Route> </Route>

View File

@@ -5,8 +5,19 @@ import { Form, Input, Select, InputNumber, ColorPicker } from "antd";
import TextArea from "antd/es/input/TextArea"; import TextArea from "antd/es/input/TextArea";
import { IVendor } from "../vendors/model"; import { IVendor } from "../vendors/model";
export const FilamentCreate: React.FC<IResourceComponentsProps> = () => { interface CreateOrCloneProps {
const { formProps, saveButtonProps } = useForm(); mode: "create" | "clone";
}
export const FilamentCreate: React.FC<
IResourceComponentsProps & CreateOrCloneProps
> = (props) => {
const { formProps, saveButtonProps, formLoading } = useForm();
if (props.mode === "clone" && formProps.initialValues) {
// Fix the filament_id
formProps.initialValues.vendor_id = formProps.initialValues.vendor.id;
}
const { selectProps } = useSelect<IVendor>({ const { selectProps } = useSelect<IVendor>({
resource: "vendor", resource: "vendor",
@@ -14,7 +25,11 @@ export const FilamentCreate: React.FC<IResourceComponentsProps> = () => {
}); });
return ( return (
<Create saveButtonProps={saveButtonProps}> <Create
title={props.mode === "create" ? "Create Filament" : "Clone Filament"}
isLoading={formLoading}
saveButtonProps={saveButtonProps}
>
<Form {...formProps} layout="vertical"> <Form {...formProps} layout="vertical">
<Form.Item <Form.Item
label="Name" label="Name"

View File

@@ -6,6 +6,7 @@ import {
EditButton, EditButton,
ShowButton, ShowButton,
DateField, DateField,
CloneButton,
} from "@refinedev/antd"; } from "@refinedev/antd";
import { Table, Space } from "antd"; import { Table, Space } from "antd";
import { NumberFieldUnit } from "../../components/numberField"; import { NumberFieldUnit } from "../../components/numberField";
@@ -107,8 +108,24 @@ export const FilamentList: React.FC<IResourceComponentsProps> = () => {
dataIndex="actions" dataIndex="actions"
render={(_, record: BaseRecord) => ( render={(_, record: BaseRecord) => (
<Space> <Space>
<EditButton hideText size="small" recordItemId={record.id} /> <EditButton
<ShowButton hideText size="small" recordItemId={record.id} /> hideText
title="Edit"
size="small"
recordItemId={record.id}
/>
<ShowButton
hideText
title="Show"
size="small"
recordItemId={record.id}
/>
<CloneButton
hideText
title="Clone"
size="small"
recordItemId={record.id}
/>
</Space> </Space>
)} )}
/> />

View File

@@ -12,7 +12,7 @@ interface CreateOrCloneProps {
export const SpoolCreate: React.FC< export const SpoolCreate: React.FC<
IResourceComponentsProps & CreateOrCloneProps IResourceComponentsProps & CreateOrCloneProps
> = (props: IResourceComponentsProps & CreateOrCloneProps) => { > = (props) => {
const { formProps, saveButtonProps, formLoading } = useForm(); const { formProps, saveButtonProps, formLoading } = useForm();
if (props.mode === "clone" && formProps.initialValues) { if (props.mode === "clone" && formProps.initialValues) {

View File

@@ -99,9 +99,24 @@ export const SpoolList: React.FC<IResourceComponentsProps> = () => {
dataIndex="actions" dataIndex="actions"
render={(_, record: BaseRecord) => ( render={(_, record: BaseRecord) => (
<Space> <Space>
<EditButton hideText size="small" recordItemId={record.id} /> <EditButton
<ShowButton hideText size="small" recordItemId={record.id} /> hideText
<CloneButton hideText size="small" recordItemId={record.id} /> title="Edit"
size="small"
recordItemId={record.id}
/>
<ShowButton
hideText
title="Show"
size="small"
recordItemId={record.id}
/>
<CloneButton
hideText
title="Clone"
size="small"
recordItemId={record.id}
/>
</Space> </Space>
)} )}
/> />