Popup er byttet ut mot AkselModal

This commit is contained in:
Markus Johansen 2023-07-31 14:05:09 +02:00
parent 545d64da8c
commit 413a6277f4
3 changed files with 74 additions and 95 deletions

View file

@ -10,19 +10,19 @@ interface ICardsContainer {
* @returns grid med feilmeldinger * @returns grid med feilmeldinger
*/ */
const CardsContainer = (props: ICardsContainer) => { const CardsContainer = (props: ICardsContainer) => {
return ( return (
<div>
<div className="grid grid-cols-2 gap-6"> <div className="grid grid-cols-2 gap-6">
{props.feilmeldinger.map((feilMelding) => ( {props.feilmeldinger.map((feilMelding) => (
<FeilKort <FeilKort
key={props.feilmeldinger.indexOf(feilMelding)} key={props.feilmeldinger.indexOf(feilMelding)}
tittel={feilMelding.tittel} tittel={feilMelding.tittel}
beskrivelse={feilMelding.beskrivelse} beskrivelse={feilMelding.beskrivelse}
dato={new Date()} dato={new Date()}
/> />
))} ))
}
</div> </div>
</div>
); );
}; };

View file

@ -1,24 +1,8 @@
import "@navikt/ds-css"; import "@navikt/ds-css";
import { Button, Heading, Tag } from "@navikt/ds-react"; import { Heading, Tag } from "@navikt/ds-react";
import { IFeilmelding } from "../interface"; import { IFeilmelding } from "../interface";
import { createContext, useContext, useState } from "react"; import FeilModal from "./FeilModal";
import { XMarkIcon } from "@navikt/aksel-icons"; import { useState } from "react";
/**
* Kontekst som brukes for å vise og skjule FullvisningsKort-komponentet.
*
* @param visHeleKortet en boolean som bestemmer om FullvisningsKort-komponentet skal vises eller ikke.
* True viser komponentet, false skjuler komponentet.
*
* @param setVisHeleKortet en state-funksjon som endrer visHeleKortet.
* Gjør det mulig å endre visningsmodus fra andre komponenter en bare provider (Feilcard).
*/
const visningsContext = createContext({
visHeleKortet: false,
setVisHeleKortet: (value: boolean) => {}
})
/** /**
* En konteiner som inneholder all informasjon og funksjonalitet for å vise og interagere med en feilmelding. * En konteiner som inneholder all informasjon og funksjonalitet for å vise og interagere med en feilmelding.
@ -27,69 +11,60 @@ const visningsContext = createContext({
* @param dato * @param dato
* @returns JSX komponent som beskriver innholdet i feilmeldinger. * @returns JSX komponent som beskriver innholdet i feilmeldinger.
*/ */
export const FeilKort = (props: IFeilmelding) => {
const [visHeleKortet, setVisHeleKortet] = useState(false)
const visningsModus = {visHeleKortet, setVisHeleKortet}
interface IFeilKort extends IFeilmelding {
key: number
}
export const FeilKort = (props: IFeilKort) => {
const [visModal, setVisModal] = useState<boolean>(false)
return( return(
<visningsContext.Provider value={visningsModus}> <>
<div className=" <div
key={props.key}
className="
bg-bg-default border border-border-default p-7 rounded-lg bg-bg-default border border-border-default p-7 rounded-lg
hover:bg-bg-subtle hover:border-border-strong hover:shadow-md duration-100 hover:bg-bg-subtle hover:border-border-strong hover:shadow-md duration-100
active:bg-surface-active active:bg-surface-active"
" onClick={() => setVisModal(true)}
onClick={() => { >
setVisHeleKortet(true) <FeilkortHeader tittel={props.tittel} beskrivelse={props.beskrivelse} dato={props.dato}/>
}}>
<FeilkortHeader tittel={props.tittel} beskrivelse={props.beskrivelse} haster={false} dato={props.dato}/>
<FullvisningsKort tittel={props.tittel} beskrivelse={props.beskrivelse} dato={props.dato}/>
</div> </div>
</visningsContext.Provider> { visModal ?
<FeilModal open={visModal} setOpen={setVisModal} >
<FeilkortHeader tittel={props.tittel} beskrivelse={props.beskrivelse} dato={new Date()} />
<div className="h-2 bg-gray-200 my-4 rounded-lg"></div>
{/* TODO: HER KOMMER CONTENT */}
</FeilModal> : null
}
</>
) )
} }
/** /**
* Fullvisningskortet er en komponent som viser all informasjon om en feilmelding. * FeilkortHeader er komponent som beskriver ikke-sensitiv informasjon om feilmeldingen og vises for alle forsiden.
* Alle brukere skal ikke ha tilgang til denne informasjonen, visningen av komponentet er derfor avhengig av en kontekst. * FeilkortHeaderen er en del av FeilKort-komponenten og FullvisningsKort-komponenten.
* dersom visHeleKortet er true vises komponentet, ellers vises ikke komponentet og det returneres react fragmenter. * Midlertidig implementerer komponentet @requires IFeilmelding for props, men dette endres når IFeilmelding utvides i fremtiden for støtte av flere typer feilmeldinger.
* @param tittel * @param tittel
* @param beskrivelse * @param beskrivelse
* @param haster
* @param dato * @param dato
* @returns JSX komponent som beskriver innholdet i feilmeldinger. * @returns JSX komponent som skal vise nødvendig informasjon for å forstå en feil.
*/ */
const FullvisningsKort = (props: IFeilmelding) => { export const FeilkortHeader = (props: IFeilmelding) => {
const {visHeleKortet, setVisHeleKortet} = useContext(visningsContext)
return( return(
visHeleKortet ? <div className="flex justify-between flex-col">
<div className="h-screen w-screen absolute top-0 right-0 bg-grayalpha-800"> <div>
<div className="w-full h-full flex justify-center items-center"> <Heading size="medium">{props.tittel}</Heading>
<div className="bg-bg-default border border-border-default p-7 rounded-lg w-1/2"> <p className="text-text-subtle mb-4">{props.dato.toDateString()}</p>
<div className="flex justify-between gap-4"> <p>{props.beskrivelse}</p>
<FeilkortHeader tittel={props.tittel} beskrivelse={props.beskrivelse} dato={props.dato}/> </div>
<Button <TagBar haster={false}/>
icon={<XMarkIcon/>} </div>
className="max-h-14 min-w-fit"
variant="secondary"
onClick={(e) => {
e.stopPropagation()
setVisHeleKortet(false)
}}
>
Lukk
</Button>
</div>
<div className="h-1 bg-bg-subtle w-full my-4"></div>
</div>
</div>
</div>
: <></>
) )
} }
interface TagBarInterface { interface TagBarInterface {
haster: boolean haster: boolean
} }
@ -109,25 +84,3 @@ const TagBar = (props: TagBarInterface) => {
/**
* FeilkortHeader er komponent som beskriver ikke-sensitiv informasjon om feilmeldingen og vises for alle forsiden.
* FeilkortHeaderen er en del av FeilKort-komponenten og FullvisningsKort-komponenten.
* Midlertidig implementerer komponentet @requires IFeilmelding for props, men dette 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.
*/
const FeilkortHeader = (props: IFeilmelding) => {
return(
<div className="flex justify-between flex-col">
<div>
<Heading size="medium">{props.tittel}</Heading>
<p className="text-text-subtle mb-4">{props.dato.toDateString()}</p>
<p>{props.beskrivelse}</p>
</div>
<TagBar haster={false}/>
</div>
)
}

View file

@ -0,0 +1,26 @@
import { Modal } from "@navikt/ds-react"
import { Dispatch, SetStateAction } from "react"
interface modalInterface {
open: boolean
setOpen: Dispatch<SetStateAction<boolean>>
children: React.ReactNode
}
const FeilModal = (props: modalInterface) => {
return(
<Modal
className="w-3/5"
open={props.open}
aria-label={" modal"}
onClose={() => props.setOpen(false)}
aria-labelledby="modal-heading"
>
<Modal.Content>
{props.children}
</Modal.Content>
</Modal>
)
}
export default FeilModal;