feat: prettier
This commit is contained in:
@@ -1,12 +1,12 @@
|
||||
import {CRUDTableProps} from "../../../../types/CRUDTable.tsx";
|
||||
import {DealSummary, ShippingWarehouseSchema} from "../../../../client";
|
||||
import {FC} from "react";
|
||||
import {BaseTable} from "../../../../components/BaseTable/BaseTable.tsx";
|
||||
import { CRUDTableProps } from "../../../../types/CRUDTable.tsx";
|
||||
import { DealSummary, ShippingWarehouseSchema } from "../../../../client";
|
||||
import { FC } from "react";
|
||||
import { BaseTable } from "../../../../components/BaseTable/BaseTable.tsx";
|
||||
import useShippingWarehouseTableColumns from "./columns.tsx";
|
||||
import {ActionIcon, Flex, Text, Tooltip} from "@mantine/core";
|
||||
import {IconEdit, IconTrash} from "@tabler/icons-react";
|
||||
import {MRT_TableOptions} from "mantine-react-table";
|
||||
import {modals} from "@mantine/modals";
|
||||
import { ActionIcon, Flex, Text, Tooltip } from "@mantine/core";
|
||||
import { IconEdit, IconTrash } from "@tabler/icons-react";
|
||||
import { MRT_TableOptions } from "mantine-react-table";
|
||||
import { modals } from "@mantine/modals";
|
||||
|
||||
type RestProps = {
|
||||
summaries: DealSummary[];
|
||||
@@ -14,70 +14,76 @@ type RestProps = {
|
||||
type Props = CRUDTableProps<ShippingWarehouseSchema> & RestProps;
|
||||
|
||||
const ShippingWarehouseTable: FC<Props> = ({
|
||||
onChange,
|
||||
onDelete,
|
||||
items,
|
||||
summaries
|
||||
}) => {
|
||||
onChange,
|
||||
onDelete,
|
||||
items,
|
||||
summaries,
|
||||
}) => {
|
||||
const columns = useShippingWarehouseTableColumns();
|
||||
|
||||
const onEditClick = (element: ShippingWarehouseSchema) => {
|
||||
if (!onChange) return;
|
||||
modals.openContextModal({
|
||||
modal: "shippingWarehouseForm",
|
||||
title: 'Редактирование склада отгрузки',
|
||||
title: "Редактирование склада отгрузки",
|
||||
withCloseButton: false,
|
||||
innerProps: {
|
||||
element,
|
||||
onChange,
|
||||
summaries: summaries.filter(s => s.shipmentWarehouseId === element.id).slice(0, 5)
|
||||
summaries: summaries
|
||||
.filter(s => s.shipmentWarehouseId === element.id)
|
||||
.slice(0, 5),
|
||||
},
|
||||
size: "xl"
|
||||
})
|
||||
}
|
||||
size: "xl",
|
||||
});
|
||||
};
|
||||
const onDeleteClick = (element: ShippingWarehouseSchema) => {
|
||||
if (!onDelete) return;
|
||||
modals.openConfirmModal({
|
||||
title: 'Удаление склада отгрузки',
|
||||
title: "Удаление склада отгрузки",
|
||||
children: (
|
||||
<Text size="sm">
|
||||
Вы уверены что хотите удалить склад отгрузки {element.name}
|
||||
</Text>
|
||||
),
|
||||
labels: {confirm: 'Да', cancel: "Нет"},
|
||||
confirmProps: {color: 'red'},
|
||||
labels: { confirm: "Да", cancel: "Нет" },
|
||||
confirmProps: { color: "red" },
|
||||
onConfirm: () => {
|
||||
onDelete(element);
|
||||
}
|
||||
},
|
||||
});
|
||||
}
|
||||
};
|
||||
return (
|
||||
<BaseTable
|
||||
data={items}
|
||||
columns={columns}
|
||||
restProps={{
|
||||
enableColumnActions: false,
|
||||
enableSorting: false,
|
||||
enableRowActions: true,
|
||||
renderRowActions: ({row}) => (
|
||||
<Flex gap="md">
|
||||
<Tooltip label="Редактировать">
|
||||
<ActionIcon
|
||||
onClick={() => onEditClick(row.original)}
|
||||
variant={"default"}>
|
||||
<IconEdit/>
|
||||
</ActionIcon>
|
||||
</Tooltip>
|
||||
<Tooltip label="Удалить">
|
||||
<ActionIcon onClick={() => onDeleteClick(row.original)} variant={"default"}>
|
||||
<IconTrash/>
|
||||
</ActionIcon>
|
||||
</Tooltip>
|
||||
</Flex>
|
||||
)
|
||||
} as MRT_TableOptions<ShippingWarehouseSchema>}
|
||||
restProps={
|
||||
{
|
||||
enableColumnActions: false,
|
||||
enableSorting: false,
|
||||
enableRowActions: true,
|
||||
renderRowActions: ({ row }) => (
|
||||
<Flex gap="md">
|
||||
<Tooltip label="Редактировать">
|
||||
<ActionIcon
|
||||
onClick={() => onEditClick(row.original)}
|
||||
variant={"default"}>
|
||||
<IconEdit />
|
||||
</ActionIcon>
|
||||
</Tooltip>
|
||||
<Tooltip label="Удалить">
|
||||
<ActionIcon
|
||||
onClick={() => onDeleteClick(row.original)}
|
||||
variant={"default"}>
|
||||
<IconTrash />
|
||||
</ActionIcon>
|
||||
</Tooltip>
|
||||
</Flex>
|
||||
),
|
||||
} as MRT_TableOptions<ShippingWarehouseSchema>
|
||||
}
|
||||
/>
|
||||
)
|
||||
}
|
||||
);
|
||||
};
|
||||
|
||||
export default ShippingWarehouseTable;
|
||||
export default ShippingWarehouseTable;
|
||||
|
||||
@@ -1,18 +1,21 @@
|
||||
import {useMemo} from "react";
|
||||
import {MRT_ColumnDef} from "mantine-react-table";
|
||||
import {ShippingWarehouseSchema} from "../../../../client";
|
||||
import { useMemo } from "react";
|
||||
import { MRT_ColumnDef } from "mantine-react-table";
|
||||
import { ShippingWarehouseSchema } from "../../../../client";
|
||||
|
||||
const useShippingWarehouseTableColumns = () => {
|
||||
return useMemo<MRT_ColumnDef<ShippingWarehouseSchema>[]>(() => [
|
||||
{
|
||||
accessorKey:"id",
|
||||
header:"ID"
|
||||
},
|
||||
{
|
||||
accessorKey:"name",
|
||||
header:"Название"
|
||||
}
|
||||
], []);
|
||||
}
|
||||
return useMemo<MRT_ColumnDef<ShippingWarehouseSchema>[]>(
|
||||
() => [
|
||||
{
|
||||
accessorKey: "id",
|
||||
header: "ID",
|
||||
},
|
||||
{
|
||||
accessorKey: "name",
|
||||
header: "Название",
|
||||
},
|
||||
],
|
||||
[]
|
||||
);
|
||||
};
|
||||
|
||||
export default useShippingWarehouseTableColumns;
|
||||
export default useShippingWarehouseTableColumns;
|
||||
|
||||
@@ -1 +1 @@
|
||||
export {ShippingWarehousesPage} from './ui/ShippingWarehousesPage.tsx';
|
||||
export { ShippingWarehousesPage } from "./ui/ShippingWarehousesPage.tsx";
|
||||
|
||||
@@ -1,39 +1,40 @@
|
||||
import BaseFormModal, {CreateEditFormProps} from "../../ClientsPage/modals/BaseFormModal/BaseFormModal.tsx";
|
||||
import {DealSummary, ShippingWarehouseSchema} from "../../../client";
|
||||
import {ContextModalProps} from "@mantine/modals";
|
||||
import {useForm} from "@mantine/form";
|
||||
import {Input, TextInput} from "@mantine/core";
|
||||
import BaseFormModal, {
|
||||
CreateEditFormProps,
|
||||
} from "../../ClientsPage/modals/BaseFormModal/BaseFormModal.tsx";
|
||||
import { DealSummary, ShippingWarehouseSchema } from "../../../client";
|
||||
import { ContextModalProps } from "@mantine/modals";
|
||||
import { useForm } from "@mantine/form";
|
||||
import { Input, TextInput } from "@mantine/core";
|
||||
import DealsTable from "../../DealsPage/components/DealsTable/DealsTable.tsx";
|
||||
import {DealPageContextProvider} from "../../LeadsPage/contexts/DealPageContext.tsx";
|
||||
import { DealPageContextProvider } from "../../LeadsPage/contexts/DealPageContext.tsx";
|
||||
import DealEditDrawer from "../../LeadsPage/drawers/DealEditDrawer/DealEditDrawer.tsx";
|
||||
|
||||
type RestProps = {
|
||||
summaries: DealSummary[];
|
||||
}
|
||||
};
|
||||
type Props = CreateEditFormProps<ShippingWarehouseSchema> & RestProps;
|
||||
const ShippingWarehouseForm = ({
|
||||
context,
|
||||
innerProps,
|
||||
id
|
||||
}: ContextModalProps<Props>) => {
|
||||
|
||||
const isEditing = 'onChange' in innerProps;
|
||||
context,
|
||||
innerProps,
|
||||
id,
|
||||
}: ContextModalProps<Props>) => {
|
||||
const isEditing = "onChange" in innerProps;
|
||||
|
||||
const form = useForm<ShippingWarehouseSchema>({
|
||||
initialValues: isEditing ? innerProps.element : {
|
||||
id: -1,
|
||||
name: ""
|
||||
}
|
||||
initialValues: isEditing
|
||||
? innerProps.element
|
||||
: {
|
||||
id: -1,
|
||||
name: "",
|
||||
},
|
||||
});
|
||||
return (
|
||||
<DealPageContextProvider>
|
||||
|
||||
<BaseFormModal
|
||||
{...innerProps}
|
||||
closeOnSubmit
|
||||
form={form}
|
||||
onClose={() => context.closeContextModal(id)}
|
||||
>
|
||||
onClose={() => context.closeContextModal(id)}>
|
||||
<BaseFormModal.Body>
|
||||
<>
|
||||
<TextInput
|
||||
@@ -41,24 +42,22 @@ const ShippingWarehouseForm = ({
|
||||
placeholder={"Введите название склада отгрузки"}
|
||||
{...form.getInputProps("name")}
|
||||
/>
|
||||
{isEditing &&
|
||||
{isEditing && (
|
||||
<Input.Wrapper
|
||||
label={"Последние 5 сделок"}
|
||||
error={form.getInputProps("phoneNumber").error}
|
||||
>
|
||||
error={form.getInputProps("phoneNumber").error}>
|
||||
<DealsTable
|
||||
viewOnly={true}
|
||||
items={innerProps.summaries}/>
|
||||
items={innerProps.summaries}
|
||||
/>
|
||||
</Input.Wrapper>
|
||||
}
|
||||
)}
|
||||
</>
|
||||
</BaseFormModal.Body>
|
||||
</BaseFormModal>
|
||||
<DealEditDrawer
|
||||
/>
|
||||
|
||||
<DealEditDrawer />
|
||||
</DealPageContextProvider>
|
||||
)
|
||||
}
|
||||
);
|
||||
};
|
||||
|
||||
export default ShippingWarehouseForm;
|
||||
export default ShippingWarehouseForm;
|
||||
|
||||
@@ -9,7 +9,6 @@
|
||||
padding: rem(5);
|
||||
gap: rem(10);
|
||||
display: flex;
|
||||
|
||||
}
|
||||
|
||||
.top-panel-last-item {
|
||||
|
||||
@@ -1,91 +1,84 @@
|
||||
import styles from "../../ServicesPage/ui/ServicesPage.module.css";
|
||||
import PageBlock from "../../../components/PageBlock/PageBlock.tsx";
|
||||
import ShippingWarehousesTable from "../components/ShippingWarehousesTable/ShippingWarehousesTable.tsx";
|
||||
import useShippingWarehousesList
|
||||
from "../../../components/Selects/ShippingWarehouseAutocomplete/hooks/useShippingWarehousesList.tsx";
|
||||
import {Button} from "@mantine/core";
|
||||
import {modals} from "@mantine/modals";
|
||||
import {useCRUD} from "../../../hooks/useCRUD.tsx";
|
||||
import {ShippingWarehouseSchema, ShippingWarehouseService} from "../../../client";
|
||||
import {notifications} from "../../../shared/lib/notifications.ts";
|
||||
import {useDealSummariesFull} from "../../LeadsPage/hooks/useDealSummaries.tsx";
|
||||
import useShippingWarehousesList from "../../../components/Selects/ShippingWarehouseAutocomplete/hooks/useShippingWarehousesList.tsx";
|
||||
import { Button } from "@mantine/core";
|
||||
import { modals } from "@mantine/modals";
|
||||
import { useCRUD } from "../../../hooks/useCRUD.tsx";
|
||||
import {
|
||||
ShippingWarehouseSchema,
|
||||
ShippingWarehouseService,
|
||||
} from "../../../client";
|
||||
import { notifications } from "../../../shared/lib/notifications.ts";
|
||||
import { useDealSummariesFull } from "../../LeadsPage/hooks/useDealSummaries.tsx";
|
||||
|
||||
export const ShippingWarehousesPage = () => {
|
||||
const {shippingWarehouses, refetch} = useShippingWarehousesList();
|
||||
const {objects: summaries} = useDealSummariesFull();
|
||||
const { shippingWarehouses, refetch } = useShippingWarehousesList();
|
||||
const { objects: summaries } = useDealSummariesFull();
|
||||
const crud = useCRUD<ShippingWarehouseSchema>({
|
||||
onChange: (element) => {
|
||||
ShippingWarehouseService
|
||||
.updateShippingWarehouse({
|
||||
requestBody: {
|
||||
shippingWarehouse: element
|
||||
}
|
||||
})
|
||||
.then(async ({ok, message}) => {
|
||||
notifications.guess(ok, {message});
|
||||
if (!ok) return;
|
||||
await refetch();
|
||||
})
|
||||
onChange: element => {
|
||||
ShippingWarehouseService.updateShippingWarehouse({
|
||||
requestBody: {
|
||||
shippingWarehouse: element,
|
||||
},
|
||||
}).then(async ({ ok, message }) => {
|
||||
notifications.guess(ok, { message });
|
||||
if (!ok) return;
|
||||
await refetch();
|
||||
});
|
||||
},
|
||||
onCreate: (element) => {
|
||||
ShippingWarehouseService
|
||||
.createShippingWarehouse({
|
||||
requestBody: {
|
||||
shippingWarehouse: element
|
||||
}
|
||||
})
|
||||
.then(async ({ok, message}) => {
|
||||
notifications.guess(ok, {message});
|
||||
if (!ok) return;
|
||||
await refetch();
|
||||
})
|
||||
onCreate: element => {
|
||||
ShippingWarehouseService.createShippingWarehouse({
|
||||
requestBody: {
|
||||
shippingWarehouse: element,
|
||||
},
|
||||
}).then(async ({ ok, message }) => {
|
||||
notifications.guess(ok, { message });
|
||||
if (!ok) return;
|
||||
await refetch();
|
||||
});
|
||||
},
|
||||
onDelete: element => {
|
||||
ShippingWarehouseService.deleteShippingWarehouse({
|
||||
requestBody: {
|
||||
shippingWarehouseId: element.id,
|
||||
},
|
||||
}).then(async ({ ok, message }) => {
|
||||
notifications.guess(ok, { message });
|
||||
if (!ok) return;
|
||||
await refetch();
|
||||
});
|
||||
},
|
||||
onDelete: (element) => {
|
||||
ShippingWarehouseService
|
||||
.deleteShippingWarehouse({
|
||||
requestBody: {
|
||||
shippingWarehouseId: element.id
|
||||
}
|
||||
})
|
||||
.then(async ({ok, message}) => {
|
||||
notifications.guess(ok, {message});
|
||||
if (!ok) return;
|
||||
await refetch();
|
||||
})
|
||||
}
|
||||
});
|
||||
const onCreateClick = () => {
|
||||
modals.openContextModal({
|
||||
modal: "shippingWarehouseForm",
|
||||
title: 'Редактирование склада отгрузки',
|
||||
title: "Редактирование склада отгрузки",
|
||||
withCloseButton: false,
|
||||
innerProps: {
|
||||
onCreate: crud.onCreate,
|
||||
summaries: []
|
||||
summaries: [],
|
||||
},
|
||||
})
|
||||
}
|
||||
});
|
||||
};
|
||||
return (
|
||||
<div className={styles['container']}>
|
||||
<PageBlock>
|
||||
<div className={styles['top-panel']}>
|
||||
<Button
|
||||
onClick={onCreateClick}
|
||||
variant={"default"}
|
||||
>
|
||||
Создать склад отгрузки
|
||||
</Button>
|
||||
</div>
|
||||
</PageBlock>
|
||||
<PageBlock>
|
||||
<ShippingWarehousesTable
|
||||
items={shippingWarehouses}
|
||||
summaries={summaries}
|
||||
{...crud}
|
||||
/>
|
||||
</PageBlock>
|
||||
</div>
|
||||
|
||||
)
|
||||
}
|
||||
|
||||
<div className={styles["container"]}>
|
||||
<PageBlock>
|
||||
<div className={styles["top-panel"]}>
|
||||
<Button
|
||||
onClick={onCreateClick}
|
||||
variant={"default"}>
|
||||
Создать склад отгрузки
|
||||
</Button>
|
||||
</div>
|
||||
</PageBlock>
|
||||
<PageBlock>
|
||||
<ShippingWarehousesTable
|
||||
items={shippingWarehouses}
|
||||
summaries={summaries}
|
||||
{...crud}
|
||||
/>
|
||||
</PageBlock>
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user