From ef2e2da0a8d2797fe7d04f62d7a4d6e7e5fbf0eb Mon Sep 17 00:00:00 2001 From: Martin Ledoux <32564108+ledouxm@users.noreply.github.com> Date: Thu, 8 Aug 2024 12:08:36 +0200 Subject: [PATCH] Mep (#33) * fix: display correct status * fix: edit banner spacings * feat: set edit banner sticky on mobile * fix: return arrow size * feat: set menu title position to sticky * fix: some styles * fix: simplify header --- packages/frontend/src/components/SyncForm.tsx | 22 +++++++++++-- .../frontend/src/features/ReportActions.tsx | 33 ++++++++++++------- .../frontend/src/features/menu/ClauseMenu.tsx | 6 ++-- .../frontend/src/features/menu/HelpMenu.tsx | 4 +-- .../frontend/src/features/menu/MenuButton.tsx | 17 +++++++--- .../frontend/src/features/menu/MenuTitle.tsx | 11 ++++--- packages/frontend/src/features/menu/Share.tsx | 6 ++-- .../src/features/text-editor/TextEditor.tsx | 3 +- packages/frontend/src/routes/__root.tsx | 6 ++++ .../frontend/src/routes/pdf.$reportId.tsx | 22 ++++++++++--- 10 files changed, 95 insertions(+), 35 deletions(-) diff --git a/packages/frontend/src/components/SyncForm.tsx b/packages/frontend/src/components/SyncForm.tsx index 3f070249..87907a0f 100644 --- a/packages/frontend/src/components/SyncForm.tsx +++ b/packages/frontend/src/components/SyncForm.tsx @@ -57,6 +57,14 @@ export function SyncFormBanner({ form, baseObject }: { form: UseFormReturn Retour @@ -122,7 +130,7 @@ const electricStatusToStatus: Record = { export const useStatus = (overrideStatus?: SyncFormStatus) => { const electricStatus = useElectricStatus(); - if (electricStatus === "error") return "offline"; + if (electricStatus === "error" || overrideStatus === "offline") return "offline"; const formStatus = electricStatusToStatus[electricStatus]; @@ -132,7 +140,7 @@ export const useStatus = (overrideStatus?: SyncFormStatus) => { }; export const Status = ({ status, className }: { status?: SyncFormStatus; className?: string }) => { - const formStatus = useStatus(status === "pending" ? "pending" : undefined); + const formStatus = useStatus(status); return ( {isOwner ? ( - navigate({ to: "/edit/$reportId", params: { reportId: report.id } })} - /> + <> + navigate({ to: "/edit/$reportId", params: { reportId: report.id } })} + /> + + ) : null} {isOwner ? ( - deleteMutation.mutate(report.id)} - /> + <> + deleteMutation.mutate(report.id)} + /> + + ) : null} {report.pdf ? ( - downloadPdfMutation.mutate()} /> + <> + downloadPdfMutation.mutate()} /> + + ) : null} duplicateMutation.mutate()} /> diff --git a/packages/frontend/src/features/menu/ClauseMenu.tsx b/packages/frontend/src/features/menu/ClauseMenu.tsx index 335cbf2b..a52289e0 100644 --- a/packages/frontend/src/features/menu/ClauseMenu.tsx +++ b/packages/frontend/src/features/menu/ClauseMenu.tsx @@ -262,7 +262,7 @@ const ClauseList = ({ clauses, isEditing }: { clauses: ClauseWithIndex[]; isEdit {Object.entries(groupedByKey).map(([key, clauses], index) => ( - + {(clauseNameMap as any)[key] ?? key} @@ -270,7 +270,9 @@ const ClauseList = ({ clauses, isEditing }: { clauses: ClauseWithIndex[]; isEdit ))} - {index < Object.keys(groupedByKey).length - 1 && } + {index < Object.keys(groupedByKey).length - 1 && ( + + )} ))} diff --git a/packages/frontend/src/features/menu/HelpMenu.tsx b/packages/frontend/src/features/menu/HelpMenu.tsx index bd9846ed..e24f7d96 100644 --- a/packages/frontend/src/features/menu/HelpMenu.tsx +++ b/packages/frontend/src/features/menu/HelpMenu.tsx @@ -3,7 +3,7 @@ import Button from "@codegouvfr/react-dsfr/Button"; import { electric } from "../../db"; import { MenuTitle } from "./MenuTitle"; -export const HelpMenu = () => { +export const HelpMenu = ({ backButtonOnClick }: { backButtonOnClick: () => void }) => { const deleteLocalData = () => { if (electric.isConnected) electric.disconnect(); localStorage.clear(); @@ -12,7 +12,7 @@ export const HelpMenu = () => { }; return ( <> - Assistance technique + Assistance technique diff --git a/packages/frontend/src/features/menu/MenuButton.tsx b/packages/frontend/src/features/menu/MenuButton.tsx index 41a6bbc7..31dfcc3d 100644 --- a/packages/frontend/src/features/menu/MenuButton.tsx +++ b/packages/frontend/src/features/menu/MenuButton.tsx @@ -16,7 +16,7 @@ import { MenuActions } from "./MenuActions"; import { menuStore } from "./menuStore"; import { ShareReport } from "./Share"; -import { useClickAway } from "react-use"; +import { useClickAway, useNetworkState } from "react-use"; const nestedMenus = ["main", "help", "clauses-nationales", "clauses-departementales", "share"] as const; export type NestedMenu = (typeof nestedMenus)[number]; @@ -25,6 +25,9 @@ export const MenuButton = ({ headerRef }: { headerRef: any }) => { const menu = useSelector(menuStore, (state) => state.context.menu); const isDesktop = useIsDesktop(); + const { online } = useNetworkState(); + const status = !online ? "offline" : "saved"; + const isOpen = isDesktop ? !!menu && menu !== "main" : !!menu; useIsModalOpen(menuModal, { @@ -48,7 +51,10 @@ export const MenuButton = ({ headerRef }: { headerRef: any }) => { > - +