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