From 7c2f2f2835ac7a8a13704bbc9fd706128243286a Mon Sep 17 00:00:00 2001 From: eug-vs Date: Sun, 14 Mar 2021 15:43:27 +0300 Subject: feat: add Delete button --- src/containers/Home.tsx | 6 +++--- src/containers/Service/ServiceForm.tsx | 16 ++++++++++------ src/requests.ts | 2 +- src/services.js | 4 ++-- 4 files changed, 16 insertions(+), 12 deletions(-) diff --git a/src/containers/Home.tsx b/src/containers/Home.tsx index 82fbf25..697cc66 100644 --- a/src/containers/Home.tsx +++ b/src/containers/Home.tsx @@ -28,15 +28,15 @@ const cards = [ ]; const Home: React.FC = () => ( - +
{cards.map(card => ( - +
Накладная

{card.text}

- +
diff --git a/src/containers/Service/ServiceForm.tsx b/src/containers/Service/ServiceForm.tsx index e2dfef6..69cc3c8 100644 --- a/src/containers/Service/ServiceForm.tsx +++ b/src/containers/Service/ServiceForm.tsx @@ -4,24 +4,22 @@ import { Formik } from 'formik'; import _ from 'lodash'; import Page, { Action } from '../Page'; import hooks from '../../hooks/useAPIClient'; -import { post, patch } from '../../requests'; +import { post, patch, del } from '../../requests'; import ServiceContext from './ServiceContext'; interface Params { id: string; } -const actions: Action[] = [ - { name: 'Назад', variant: 'outlined', route: '..' }, - { name: 'Сохранить', type: 'submit', form: 'form' }, -]; - const ServiceForm: React.FC = () => { const service = useContext(ServiceContext); const history = useHistory(); const { id } = useParams(); const { data: item } = hooks[service.route].useItem(id); + const handleDelete = () => del(`/${service.route}/${id}`) + .then(() => history.push(`/${service.route}`)); + const onSubmit = (values: any) => { const promise = id ? patch(`/${service.route}/${id}`, values) @@ -29,6 +27,12 @@ const ServiceForm: React.FC = () => { return promise.then(() => history.push(`/${service.route}`)); }; + const actions: Action[] = [ + { name: 'Назад', variant: 'outlined', route: '..' }, + { name: 'Удалить', variant: 'outlined', onClick: handleDelete }, + { name: 'Сохранить', type: 'submit', form: 'form' }, + ]; + return ( {(!id || item) && ( diff --git a/src/requests.ts b/src/requests.ts index 2873b37..406127f 100644 --- a/src/requests.ts +++ b/src/requests.ts @@ -6,6 +6,6 @@ const baseURL = process.env.NODE_ENV === 'production' const requests = axios.create({ baseURL }); -export const { get, post, put, patch } = requests; +export const { get, post, put, patch, delete: del } = requests; export default requests; diff --git a/src/services.js b/src/services.js index bebf07f..f8e27cf 100644 --- a/src/services.js +++ b/src/services.js @@ -48,10 +48,10 @@ const services: ServiceParams[] = [ name: 'Накладные', nameSingular: 'Накладная', tableFields: [ + { key: 'status', label: 'Статус', transform: status => waybillStatusNames[status] }, { key: 'operation', label: 'Операция', transform: op => operationNames[op] }, { key: 'product.name', label: 'Товар' }, - { key: 'contractor.name', label: 'Поставщик' }, - { key: 'status', label: 'Статус', transform: status => waybillStatusNames[status] }, + { key: 'contractor.name', label: 'Контрагент' }, { key: 'quantity', label: 'Количество' }, ], default: { -- cgit v1.2.3