add products

This commit is contained in:
Julien Aldon
2026-02-12 17:39:53 +01:00
parent 025b78d5dd
commit 1a98957466
12 changed files with 129 additions and 75 deletions

View File

@@ -1,18 +1,18 @@
import { Tabs } from "@mantine/core";
import { t } from "@/config/i18n";
import { Outlet, useNavigate, useParams } from "react-router";
import { Outlet, useLocation, useNavigate } from "react-router";
export default function Dashboard() {
const navigate = useNavigate();
const { tabValue } = useParams();
const location = useLocation();
return (
<Tabs
w={{base: "100%", md: "80%", lg: "60%"}}
keepMounted={false}
defaultValue="productors"
orientation={"horizontal"}
value={tabValue}
value={location.pathname.split('/')[2]}
defaultValue={location.pathname.split('/')[2]}
onChange={(value) => navigate(`/dashboard/${value}`)}
>
<Tabs.List>

View File

@@ -62,7 +62,6 @@ export default function Productors() {
values.forEach(value => {
params.append(filter, value);
});
return params;
});
}, [searchParams, setSearchParams])

View File

@@ -6,7 +6,7 @@ import ProductRow from "@/components/Products/Row";
import { useLocation, useNavigate, useSearchParams } from "react-router";
import { ProductModal } from "@/components/Products/Modal";
import { useCallback, useMemo } from "react";
import type { Product, ProductInputs } from "@/services/resources/products";
import { productCreateFromProductInputs, type Product, type ProductInputs } from "@/services/resources/products";
import ProductsFilters from "@/components/Products/Filter";
export default function Products() {
@@ -28,19 +28,17 @@ export default function Products() {
return allProducts?.map((product: Product) => (product.name))
.filter((season, index, array) => array.indexOf(season) === index)
}, [allProducts])
const types = useMemo(() => {
return allProducts?.map((product: Product) => (product.type))
.filter((product, index, array) => array.indexOf(product) === index)
const productors = useMemo(() => {
return allProducts?.map((form: Product) => (form.productor.name))
.filter((productor, index, array) => array.indexOf(productor) === index)
}, [allProducts])
const createProductMutation = createProduct();
const editProductMutation = editProduct();
const handleCreateProduct = useCallback(async (product: ProductInputs) => {
await createProductMutation.mutateAsync({
...product
});
await createProductMutation.mutateAsync(productCreateFromProductInputs(product));
closeModal();
}, [createProductMutation]);
@@ -57,7 +55,7 @@ export default function Products() {
const onFilterChange = useCallback((values: string[], filter: string) => {
setSearchParams(prev => {
const params = new URLSearchParams(prev);
params.delete(filter)
params.delete(filter);
values.forEach(value => {
params.append(filter, value);
@@ -91,8 +89,8 @@ export default function Products() {
/>
</Group>
<ProductsFilters
productors = {productors || []}
names={names || []}
types={types || []}
filters={searchParams}
onFilterChange={onFilterChange}
/>