From 755effe4da120316c6cb5756a57b423983793dc1 Mon Sep 17 00:00:00 2001 From: "Markus A. R. Johansen" <90006516+J0hans1@users.noreply.github.com> Date: Mon, 31 Jul 2023 14:48:07 +0200 Subject: [PATCH] Klikkbare feil (#17) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * ✨ Feilkort som ikke er expansioncards * 🚧 laget overlay med stort hvitt panel ved klikk av panel * 🐛 Kan avslutte popup-overlay-vinduet ved å hindre DOM bubbling https://stackoverflow.com/questions/1369035/how-do-i-prevent-a-parents-onclick-event-from-firing-when-a-child-anchor-is-cli * ♻️ Delt opp feilkort og fullvisningskort i to komponenter ved bruk av useContext() * 📝 La til dokumentasjon for feilkortkomponentene * ⚰️ Forenklet cardscontainer komponentet ved å fjerne interface * 🐛 La tilbake interface, da fjerning av dette brekket applikasjon * ✨ Popup er byttet ut mot AkselModal * 🐛 Fikset scrolling, ved å tillate Modal i å kjøre cleanup code --- frontend/src/components/CardsContainer.tsx | 22 +++--- frontend/src/components/FeilCard.tsx | 91 +++++++++++++++++----- frontend/src/components/FeilModal.tsx | 26 +++++++ 3 files changed, 108 insertions(+), 31 deletions(-) create mode 100644 frontend/src/components/FeilModal.tsx diff --git a/frontend/src/components/CardsContainer.tsx b/frontend/src/components/CardsContainer.tsx index 79f45fb..e2a9dbd 100644 --- a/frontend/src/components/CardsContainer.tsx +++ b/frontend/src/components/CardsContainer.tsx @@ -1,4 +1,4 @@ -import FeilCard from "./FeilCard"; +import { FeilKort } from "./FeilCard"; import { Feilmelding } from "../interface.ts"; interface ICardsContainer { @@ -10,19 +10,19 @@ interface ICardsContainer { * @returns grid med feilmeldinger */ const CardsContainer = (props: ICardsContainer) => { + return ( -
-
+
{props.feilmeldinger.map((feilMelding) => ( - - ))} + + )) + }
-
); }; diff --git a/frontend/src/components/FeilCard.tsx b/frontend/src/components/FeilCard.tsx index 45552a1..d71eded 100644 --- a/frontend/src/components/FeilCard.tsx +++ b/frontend/src/components/FeilCard.tsx @@ -1,12 +1,79 @@ import "@navikt/ds-css"; -import { ExpansionCard, Tag } from "@navikt/ds-react"; +import { Heading, Modal, Tag } from "@navikt/ds-react"; import { IFeilmelding } from "../interface"; +import FeilModal from "./FeilModal"; +import { useEffect, useState } from "react"; + +/** + * En konteiner som inneholder all informasjon og funksjonalitet for å vise og interagere med en feilmelding. + * @param tittel + * @param beskrivelse + * @param dato + * @returns JSX komponent som beskriver innholdet i feilmeldinger. + */ +interface IFeilKort extends IFeilmelding { + key: number +} +export const FeilKort = (props: IFeilKort) => { + const [visModal, setVisModal] = useState(false) + + useEffect(() => { + Modal.setAppElement(document.getElementById('root')); + }, []); + + return( + <> +
setVisModal(true)} + > + +
+ + +
+ {/* TODO: HER KOMMER CONTENT */} +
+ + ) +} + +/** + * FeilkortHeader er komponent som beskriver ikke-sensitiv informasjon om feilmeldingen og vises for alle på forsiden. + * FeilkortHeaderen er en del av FeilKort-komponenten og FullvisningsKort-komponenten. + * Midlertidig implementerer komponentet @requires IFeilmelding for props, men dette må endres når IFeilmelding utvides i fremtiden for støtte av flere typer feilmeldinger. + * @param tittel + * @param beskrivelse + * @param haster + * @param dato + * @returns JSX komponent som skal vise nødvendig informasjon for å forstå en feil. + */ +export const FeilkortHeader = (props: IFeilmelding) => { + return( +
+
+ {props.tittel} +

{props.dato.toDateString()}

+

{props.beskrivelse}

+
+ +
+ ) +} + interface TagBarInterface { haster: boolean } - -//typen på status er veldig wack heheheh, må fjerne any etterhvert men String fungerer ikke +/** + * Komponentet er en bar (vanrett linje) som inneholder to statusflagg: "arbeidsstatus" og "Haster". + * Komponentet er en del av FeilKortHeader + * @param haster + */ const TagBar = (props: TagBarInterface) => { return (
@@ -16,21 +83,5 @@ const TagBar = (props: TagBarInterface) => { ) } -const FeilCard = (props: IFeilmelding) => { - return ( - - - {props.tittel} - - {props.beskrivelse} - - - - - Hællæ - - - ) -} -export default FeilCard; + diff --git a/frontend/src/components/FeilModal.tsx b/frontend/src/components/FeilModal.tsx new file mode 100644 index 0000000..9901257 --- /dev/null +++ b/frontend/src/components/FeilModal.tsx @@ -0,0 +1,26 @@ +import { Modal } from "@navikt/ds-react" +import { Dispatch, SetStateAction } from "react" + + +interface modalInterface { + open: boolean + setOpen: Dispatch> + children: React.ReactNode +} + +const FeilModal = (props: modalInterface) => { + return( + props.setOpen(false)} + aria-labelledby="modal-heading" + > + + {props.children} + + + ) +} +export default FeilModal; \ No newline at end of file