From e970bb683abf89aebebde0a999a3cd7aceb75486 Mon Sep 17 00:00:00 2001 From: Julien Aldon Date: Fri, 6 Mar 2026 11:59:02 +0100 Subject: [PATCH] fix a bug that could prevent user to selet their payment methods --- frontend/locales/en.json | 1 + frontend/locales/fr.json | 1 + frontend/src/components/Forms/Modal/index.tsx | 4 ++++ frontend/src/components/Navbar/index.tsx | 11 +++++++---- frontend/src/components/Products/Modal/index.tsx | 2 ++ frontend/src/components/Shipments/Modal/index.tsx | 4 +++- frontend/src/components/Users/Modal/index.tsx | 2 ++ frontend/src/pages/Contract/index.tsx | 8 ++++++-- frontend/src/pages/Productors/index.tsx | 4 ++++ frontend/src/pages/Products/index.tsx | 4 ++++ frontend/src/pages/Shipments/index.tsx | 4 ++++ frontend/src/pages/Users/index.tsx | 2 ++ 12 files changed, 40 insertions(+), 7 deletions(-) diff --git a/frontend/locales/en.json b/frontend/locales/en.json index 02fe189..2d5c1b9 100644 --- a/frontend/locales/en.json +++ b/frontend/locales/en.json @@ -160,6 +160,7 @@ "and/or": "and/or", "form name recommandation": "recommendation: Contract (Example: Pork-Lamb Contract)", "submit contract": "submit contract", + "submit": "submit", "example in user forms": "example in user contract form", "occasional product": "occasional product", "recurrent product": "recurrent product", diff --git a/frontend/locales/fr.json b/frontend/locales/fr.json index 72bd885..0099a3d 100644 --- a/frontend/locales/fr.json +++ b/frontend/locales/fr.json @@ -160,6 +160,7 @@ "and/or": "et/ou", "form name recommandation": "recommandation : Contrat (Exemple : Contrat Porc-Agneau)", "submit contract": "envoyer le contrat", + "submit": "envoyer", "example in user forms": "exemple dans le formulaire à destination des amapiens", "occasional product": "produit occasionnel", "recurrent product": "produit récurrent", diff --git a/frontend/src/components/Forms/Modal/index.tsx b/frontend/src/components/Forms/Modal/index.tsx index 869fa49..5c01bce 100644 --- a/frontend/src/components/Forms/Modal/index.tsx +++ b/frontend/src/components/Forms/Modal/index.tsx @@ -53,6 +53,8 @@ export default function FormModal({ opened, onClose, currentForm, handleSubmit } }); const usersSelect = useMemo(() => { + if (!users) + return []; return users?.map((user) => ({ value: String(user.id), label: `${user.name}`, @@ -60,6 +62,8 @@ export default function FormModal({ opened, onClose, currentForm, handleSubmit } }, [users]); const productorsSelect = useMemo(() => { + if (!productors) + return []; return productors?.map((prod) => ({ value: String(prod.id), label: `${prod.name}`, diff --git a/frontend/src/components/Navbar/index.tsx b/frontend/src/components/Navbar/index.tsx index e40ad29..db27033 100644 --- a/frontend/src/components/Navbar/index.tsx +++ b/frontend/src/components/Navbar/index.tsx @@ -4,9 +4,12 @@ import "./index.css"; import { Group, Loader } from "@mantine/core"; import { Config } from "@/config/config"; import { useAuth } from "@/services/auth/AuthProvider"; +import { useMediaQuery } from "@mantine/hooks"; +import { IconHome, IconLogin, IconLogout, IconSettings } from "@tabler/icons-react"; export function Navbar() { const { loggedUser: user, isLoading } = useAuth(); + const isPhone = useMediaQuery("(max-width: 760px"); if (!user && isLoading) { return ( @@ -20,11 +23,11 @@ export function Navbar() { diff --git a/frontend/src/components/Products/Modal/index.tsx b/frontend/src/components/Products/Modal/index.tsx index 56b8402..1ae184a 100644 --- a/frontend/src/components/Products/Modal/index.tsx +++ b/frontend/src/components/Products/Modal/index.tsx @@ -59,6 +59,8 @@ export function ProductModal({ opened, onClose, currentProduct, handleSubmit }: }); const productorsSelect = useMemo(() => { + if (!productors) + return []; return productors?.map((productor) => ({ value: String(productor.id), label: `${productor.name}`, diff --git a/frontend/src/components/Shipments/Modal/index.tsx b/frontend/src/components/Shipments/Modal/index.tsx index 030936c..5f56b88 100644 --- a/frontend/src/components/Shipments/Modal/index.tsx +++ b/frontend/src/components/Shipments/Modal/index.tsx @@ -48,6 +48,8 @@ export default function ShipmentModal({ const { data: allProductors } = useGetProductors(); const formsSelect = useMemo(() => { + if (!allForms) + return []; return allForms?.map((currentForm) => ({ value: String(currentForm.id), label: `${currentForm.name} ${currentForm.season}`, @@ -55,7 +57,7 @@ export default function ShipmentModal({ }, [allForms]); const productsSelect = useMemo(() => { - if (!allProducts || !allProductors) return; + if (!allProducts || !allProductors) return []; return allProductors?.map((productor) => { return { group: productor.name, diff --git a/frontend/src/components/Users/Modal/index.tsx b/frontend/src/components/Users/Modal/index.tsx index ba32179..54fdc22 100644 --- a/frontend/src/components/Users/Modal/index.tsx +++ b/frontend/src/components/Users/Modal/index.tsx @@ -36,6 +36,8 @@ export function UserModal({ opened, onClose, currentUser, handleSubmit }: UserMo }); const roleSelect = useMemo(() => { + if (!allRoles) + return []; return allRoles?.map((role) => ({ value: String(role.name), label: role.name })); }, [allRoles]); diff --git a/frontend/src/pages/Contract/index.tsx b/frontend/src/pages/Contract/index.tsx index a175421..9736386 100644 --- a/frontend/src/pages/Contract/index.tsx +++ b/frontend/src/pages/Contract/index.tsx @@ -165,7 +165,7 @@ export function Contract() { ); return ( - + {form.name} {t("informations", { capfirst: true })} @@ -283,6 +283,10 @@ export function Contract() { ref={(el) => { inputRefs.current.payment_method = el; }} + comboboxProps={{ + withinPortal: false, + position: "bottom-start", + }} /> {inputForm.values.payment_method === "cheque" ? ( } aria-label={t("submit contracts")} onClick={handleSubmit}> - {t("submit contract", {capfirst: true})} + {t("submit", {capfirst: true})} diff --git a/frontend/src/pages/Productors/index.tsx b/frontend/src/pages/Productors/index.tsx index f708959..eae9c26 100644 --- a/frontend/src/pages/Productors/index.tsx +++ b/frontend/src/pages/Productors/index.tsx @@ -40,12 +40,16 @@ export default function Productors() { }, [navigate, searchParams]); const names = useMemo(() => { + if (!allProductors) + return []; return allProductors ?.map((productor: Productor) => productor.name) .filter((season, index, array) => array.indexOf(season) === index); }, [allProductors]); const types = useMemo(() => { + if (!allProductors) + return []; return allProductors ?.map((productor: Productor) => productor.type) .filter((productor, index, array) => array.indexOf(productor) === index); diff --git a/frontend/src/pages/Products/index.tsx b/frontend/src/pages/Products/index.tsx index 5d460a4..6dc3e3e 100644 --- a/frontend/src/pages/Products/index.tsx +++ b/frontend/src/pages/Products/index.tsx @@ -38,12 +38,16 @@ export default function Products() { const { data: allProducts } = useGetProducts(); const names = useMemo(() => { + if (!allProducts) + return []; return allProducts ?.map((product: Product) => product.name) .filter((season, index, array) => array.indexOf(season) === index); }, [allProducts]); const productors = useMemo(() => { + if (!allProducts) + return []; return allProducts ?.map((product: Product) => product.productor.name) .filter((productor, index, array) => array.indexOf(productor) === index); diff --git a/frontend/src/pages/Shipments/index.tsx b/frontend/src/pages/Shipments/index.tsx index dd2a9ac..61df4f0 100644 --- a/frontend/src/pages/Shipments/index.tsx +++ b/frontend/src/pages/Shipments/index.tsx @@ -44,12 +44,16 @@ export default function Shipments() { const { data: allShipments } = useGetShipments(); const names = useMemo(() => { + if (!allShipments) + return []; return allShipments ?.map((shipment: Shipment) => shipment.name) .filter((season, index, array) => array.indexOf(season) === index); }, [allShipments]); const forms = useMemo(() => { + if (!allShipments) + return []; return allShipments ?.map((shipment: Shipment) => shipment.form.name) .filter((season, index, array) => array.indexOf(season) === index); diff --git a/frontend/src/pages/Users/index.tsx b/frontend/src/pages/Users/index.tsx index b9c4d45..62fa071 100644 --- a/frontend/src/pages/Users/index.tsx +++ b/frontend/src/pages/Users/index.tsx @@ -36,6 +36,8 @@ export default function Users() { const { data: allUsers } = useGetUsers(); const names = useMemo(() => { + if (!allUsers) + return []; return allUsers ?.map((user: User) => user.name) .filter((season, index, array) => array.indexOf(season) === index);