Skip to content

Commit

Permalink
Merge pull request #4681 from navikt/refactor/veilederflate-gjennomfo…
Browse files Browse the repository at this point in the history
…ring-status

Refactor/veilederflate gjennomforing status
  • Loading branch information
sondrele authored Nov 25, 2024
2 parents c92ceb6 + f202b3f commit d35d8e7
Show file tree
Hide file tree
Showing 15 changed files with 138 additions and 127 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
import { Tag } from "@navikt/ds-react";
import { TiltaksgjennomforingStatusDto } from "@mr/api-client";
import { useState } from "react";
import { variantAndName } from "./GjennomforingStatusTag";

interface Props {
status: TiltaksgjennomforingStatusDto;
}

export function GjennomforingStatusMedAarsakTag({ status }: Props) {
const [expandLabel, setExpandLabel] = useState<boolean>(false);

const { variant, label } = variantAndName(status.status);
const labelWithBeskrivelse = status.avbrutt?.beskrivelse
? `${label} - ${status.avbrutt.beskrivelse}`
: label;

return (
<Tag
style={{
maxWidth: "400px",
}}
size="small"
onMouseEnter={() => setExpandLabel(true)}
onMouseLeave={() => setExpandLabel(false)}
aria-label={`Gjennomføringstatus: ${label}`}
variant={variant}
>
{expandLabel ? labelWithBeskrivelse : truncate(labelWithBeskrivelse, 30)}
</Tag>
);
}

function truncate(text: string, maxLength: number): string {
return text.length > maxLength ? `${text.substring(0, maxLength - 3)}...` : text;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
import { Tag } from "@navikt/ds-react";
import { TiltaksgjennomforingStatus } from "@mr/api-client";

interface Props {
status: TiltaksgjennomforingStatus;
}

export function GjennomforingStatusTag({ status }: Props) {
const { variant, label } = variantAndName(status);

return (
<Tag size="small" aria-label={`Gjennomføringstatus: ${label}`} variant={variant}>
{label}
</Tag>
);
}

export function variantAndName(status: TiltaksgjennomforingStatus): {
variant: "alt1" | "success" | "neutral" | "error";
label: string;
} {
switch (status) {
case TiltaksgjennomforingStatus.GJENNOMFORES:
return { variant: "success", label: "Gjennomføres" };
case TiltaksgjennomforingStatus.AVSLUTTET:
return { variant: "neutral", label: "Avsluttet" };
case TiltaksgjennomforingStatus.AVBRUTT:
return { variant: "error", label: "Avbrutt" };
case TiltaksgjennomforingStatus.AVLYST:
return { variant: "error", label: "Avlyst" };
case TiltaksgjennomforingStatus.PLANLAGT:
return { variant: "alt1", label: "Planlagt" };
}
}

This file was deleted.

6 changes: 4 additions & 2 deletions frontend/frontend-common/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,8 @@ import { NavEnhetFilterTag } from "./components/filter/filterTag/NavEnhetFilterT
import { FilterTag } from "./components/filter/filterTag/FilterTag";
import { FilterTagsContainer } from "./components/filter/filterTag/FilterTagsContainer";
import { FilterAccordionHeader } from "./components/filter/accordionHeader/FilterAccordionHeader";
import { TiltaksgjennomforingStatusTag } from "./components/tags/TiltaksgjennomforingStatusTag";
import { GjennomforingStatusTag } from "./components/gjennomforing/GjennomforingStatusTag";
import { GjennomforingStatusMedAarsakTag } from "./components/gjennomforing/GjennomforingStatusMedAarsakTag";
import { FilterSkeleton } from "./components/skeleton/FilterSkeleton";
import { Drawer } from "./components/drawer/Drawer";
import {
Expand Down Expand Up @@ -44,7 +45,6 @@ export {
InlineErrorBoundary,
InlineFallback,
ReloadAppFallback,
TiltaksgjennomforingStatusTag,
OversiktSkeleton,
DetaljerSkeleton,
ListSkeleton,
Expand All @@ -54,4 +54,6 @@ export {
TilbakemeldingsLenke,
FilterContainer,
useOpenFilterWhenThreshold,
GjennomforingStatusTag,
GjennomforingStatusMedAarsakTag,
};
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ import {
import { Alert, Pagination, Table, Tag, VStack } from "@navikt/ds-react";
import { useAtom, WritableAtom } from "jotai";
import { OpenAPI, SorteringTiltaksgjennomforinger } from "@mr/api-client";
import { TiltaksgjennomforingStatusTag } from "@mr/frontend-common";
import { Lenke } from "@mr/frontend-common/components/lenke/Lenke";
import { ToolbarContainer } from "@mr/frontend-common/components/toolbar/toolbarContainer/ToolbarContainer";
import { ToolbarMeny } from "@mr/frontend-common/components/toolbar/toolbarMeny/ToolbarMeny";
Expand All @@ -22,6 +21,7 @@ import { PagineringsOversikt } from "../paginering/PagineringOversikt";
import styles from "./Tabell.module.scss";
import { APPLICATION_NAME } from "@/constants";
import { EksporterTabellKnapp } from "@/components/eksporterTabell/EksporterTabellKnapp";
import { GjennomforingStatusTag } from "@mr/frontend-common";

const SkjulKolonne = ({ children, skjul }: { children: React.ReactNode; skjul: boolean }) => {
return skjul ? null : <>{children}</>;
Expand Down Expand Up @@ -266,7 +266,7 @@ export function TiltaksgjennomforingsTabell({

<SkjulKolonne skjul={!!skjulKolonner?.status}>
<Table.DataCell>
<TiltaksgjennomforingStatusTag status={tiltaksgjennomforing.status} />
<GjennomforingStatusTag status={tiltaksgjennomforing.status.status} />
</Table.DataCell>
</SkjulKolonne>
<Table.DataCell>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,18 @@ import { zodResolver } from "@hookform/resolvers/zod";
import { FormProvider, useForm } from "react-hook-form";
import { InferredOpprettTilsagnSchema, OpprettTilsagnSchema } from "./OpprettTilsagnSchema";
import { useEffect } from "react";
import { HGrid, DatePicker, BodyShort, Alert, HStack, Button, Box } from "@navikt/ds-react";
import { addYear, formaterDato } from "../../utils/Utils";
import { Alert, BodyShort, Box, Button, DatePicker, HGrid, HStack } from "@navikt/ds-react";
import { addYear, formaterDato } from "@/utils/Utils";
import { ControlledDateInput } from "../skjema/ControlledDateInput";
import { FormGroup } from "../skjema/FormGroup";
import { ApiError, TilsagnDto, TilsagnRequest, TiltaksgjennomforingDto } from "@mr/api-client";
import { UseMutationResult } from "@tanstack/react-query";
import { AFTBeregningSkjema } from "./AFTBeregningSkjema";
import { FriBeregningSkjema } from "./FriBeregningSkjema";
import { ControlledSokeSelect, TiltaksgjennomforingStatusTag } from "@mr/frontend-common";
import { ControlledSokeSelect } from "@mr/frontend-common";
import { Metadata } from "../detaljside/Metadata";
import { useKostnadssted } from "@/api/enhet/useKostnadssted";
import { GjennomforingStatusTag } from "@mr/frontend-common";

interface Props {
tiltaksgjennomforing: TiltaksgjennomforingDto;
Expand Down Expand Up @@ -80,7 +81,7 @@ export function TilsagnSkjema({
<Metadata header="Antall plasser" verdi={tiltaksgjennomforing.antallPlasser} />
<Metadata
header="Status"
verdi={<TiltaksgjennomforingStatusTag status={tiltaksgjennomforing.status} />}
verdi={<GjennomforingStatusTag status={tiltaksgjennomforing.status.status} />}
/>
</HGrid>
</Box>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import styles from "./TiltaksgjennomforingerListe.module.scss";
import { TiltaksgjennomforingFilter } from "@/api/atoms";
import { TiltaksgjennomforingDto } from "@mr/api-client";
import { ReactNode } from "react";
import { TiltaksgjennomforingStatusTag } from "@mr/frontend-common";
import { GjennomforingStatusTag } from "@mr/frontend-common";

interface Props {
filter: Partial<TiltaksgjennomforingFilter>;
Expand Down Expand Up @@ -38,7 +38,7 @@ export function TiltaksgjennomforingerListe(props: Props) {
<li key={gjennomforing.id} className={styles.gjennomforingsliste_element}>
<BodyShort>{gjennomforing.navn}</BodyShort>
<BodyShort>{gjennomforing.tiltaksnummer}</BodyShort>
<TiltaksgjennomforingStatusTag status={gjennomforing.status} />
<GjennomforingStatusTag status={gjennomforing.status.status} />
{props.action(gjennomforing)}
</li>
))}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,10 @@ import { PREVIEW_ARBEIDSMARKEDSTILTAK_URL } from "@/constants";
import { useNavigateAndReplaceUrl } from "@/hooks/useNavigateWithoutReplacingUrl";
import { ContainerLayout } from "@/layouts/ContainerLayout";
import commonStyles from "../Page.module.scss";
import { TiltaksgjennomforingStatusTag } from "@mr/frontend-common";
import { TiltaksgjennomforingStatus, Toggles } from "@mr/api-client";
import { Toggles } from "@mr/api-client";
import { useFeatureToggle } from "@/api/features/useFeatureToggle";
import { GjennomforingStatusMedAarsakTag } from "@mr/frontend-common";
import { gjennomforingIsAktiv } from "@mr/frontend-common/utils/utils";

function createBrodsmuler(
tiltaksgjennomforingId: string,
Expand Down Expand Up @@ -93,37 +94,32 @@ export function TiltaksgjennomforingPage() {
<div
className={classNames(
headerStyles.header_outer_container,
tiltaksgjennomforing?.id
? headerStyles.header_outer_container_forhandsvisningsknapp
: null,
headerStyles.header_outer_container_forhandsvisningsknapp,
)}
>
<div className={headerStyles.tiltaksnavn_status}>
<TiltaksgjennomforingIkon />
<VStack>
<Heading className={headerStyles.navn} size="large" level="2">
{tiltaksgjennomforing?.navn ?? "..."}
{tiltaksgjennomforing.navn}
</Heading>
<ShowOpphavValue value={tiltaksgjennomforing?.opphav} />
<ShowOpphavValue value={tiltaksgjennomforing.opphav} />
</VStack>
<TiltaksgjennomforingStatusTag status={tiltaksgjennomforing.status} showAvbruttAarsak />
<GjennomforingStatusMedAarsakTag status={tiltaksgjennomforing.status} />
<DupliserTiltak tiltaksgjennomforing={tiltaksgjennomforing} />
</div>
{tiltaksgjennomforing?.id &&
[TiltaksgjennomforingStatus.GJENNOMFORES, TiltaksgjennomforingStatus.PLANLAGT].includes(
tiltaksgjennomforing.status.status,
) && (
<div className={headerStyles.forhandsvisningsknapp}>
<Lenkeknapp
size="small"
isExternal={true}
variant="secondary"
to={`${PREVIEW_ARBEIDSMARKEDSTILTAK_URL}/tiltak/${tiltaksgjennomforing.id}`}
>
Forhåndsvis i Modia
</Lenkeknapp>
</div>
)}
{gjennomforingIsAktiv(tiltaksgjennomforing.status.status) && (
<div className={headerStyles.forhandsvisningsknapp}>
<Lenkeknapp
size="small"
isExternal={true}
variant="secondary"
to={`${PREVIEW_ARBEIDSMARKEDSTILTAK_URL}/tiltak/${tiltaksgjennomforing.id}`}
>
Forhåndsvis i Modia
</Lenkeknapp>
</div>
)}
</div>
</Header>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,10 @@ import { ErrorMeldinger } from "@/components/tiltaksgjennomforinger/Tiltaksgjenn
import { useHentAnsatt } from "@/api/ansatt/useHentAnsatt";
import { Brodsmule, Brodsmuler } from "@/components/navigering/Brodsmuler";
import { TiltaksgjennomforingIkon } from "@/components/ikoner/TiltaksgjennomforingIkon";
import { TiltaksgjennomforingStatusTag } from "@mr/frontend-common";
import { SkjemaContainer } from "@/components/skjema/SkjemaContainer";
import { SkjemaContent } from "@/components/skjema/SkjemaContent";
import { defaultTiltaksgjennomforingData } from "@/components/tiltaksgjennomforinger/TiltaksgjennomforingSkjemaConst";
import { GjennomforingStatusMedAarsakTag } from "@mr/frontend-common";

export function TiltaksgjennomforingSkjemaPage() {
const navigate = useNavigate();
Expand Down Expand Up @@ -109,7 +109,7 @@ export function TiltaksgjennomforingSkjemaPage() {
{redigeringsModus ? "Rediger gjennomføring" : "Opprett ny tiltaksgjennomføring"}
</Heading>
{tiltaksgjennomforing ? (
<TiltaksgjennomforingStatusTag status={tiltaksgjennomforing.status} showAvbruttAarsak />
<GjennomforingStatusMedAarsakTag status={tiltaksgjennomforing.status} />
) : null}
</Header>
<ContainerLayout>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,20 @@ import {
VeilederflateTiltakGruppe,
VeilederTiltakService,
} from "@mr/api-client";
import { gjennomforingIsAktiv } from "@mr/frontend-common/utils/utils";

export function isTiltakGruppe(tiltak: VeilederflateTiltak): tiltak is VeilederflateTiltakGruppe {
return tiltak.type === "TILTAK_GRUPPE";
}

export function isTiltakAktivt(gjennomforing: VeilederflateTiltak): boolean {
if (typeof gjennomforing.status === "string") {
return gjennomforingIsAktiv(gjennomforing.status);
} else {
return gjennomforingIsAktiv(gjennomforing.status.status);
}
}

export function isTiltakEgenRegi(
tiltak: VeilederflateTiltak,
): tiltak is VeilederflateTiltakEnkeltplassAnskaffet {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,11 +24,11 @@ import {
VeilederflateTiltakstype,
} from "@mr/api-client";
import { InlineErrorBoundary, TilbakemeldingsLenke, useTitle } from "@mr/frontend-common";
import { gjennomforingIsAktiv } from "@mr/frontend-common/utils/utils";
import { Chat2Icon } from "@navikt/aksel-icons";
import { Alert, Button } from "@navikt/ds-react";
import { useAtomValue } from "jotai";
import {
isTiltakAktivt,
isTiltakGruppe,
useModiaArbeidsmarkedstiltakById,
} from "@/api/queries/useArbeidsmarkedstiltakById";
Expand Down Expand Up @@ -108,18 +108,16 @@ export function ModiaArbeidsmarkedstiltakDetaljer() {
</Button>
)}

{gjennomforingIsAktiv(tiltak.status.status) ? (
<PameldingKometApnerSnart tiltak={tiltak} />
) : null}
{isTiltakAktivt(tiltak) ? <PameldingKometApnerSnart tiltak={tiltak} /> : null}

{isTiltakGruppe(tiltak) && gjennomforingIsAktiv(tiltak.status.status) ? (
{isTiltakGruppe(tiltak) && isTiltakAktivt(tiltak) ? (
<PameldingForGruppetiltak
brukerHarRettPaaValgtTiltak={brukerHarRettPaaValgtTiltak}
tiltak={tiltak}
/>
) : null}

{brukerdata.erUnderOppfolging && gjennomforingIsAktiv(tiltak.status.status) ? (
{brukerdata.erUnderOppfolging && isTiltakAktivt(tiltak) ? (
<DelMedBruker
delMedBrukerInfo={delMedBrukerInfo ?? undefined}
veiledernavn={resolveName(veilederdata)}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { VeilederflateTiltak } from "@mr/api-client";
import { TiltaksgjennomforingStatusTag } from "@mr/frontend-common";
import { gjennomforingIsAktiv } from "@mr/frontend-common/utils/utils";
import { isTiltakAktivt } from "@/api/queries/useArbeidsmarkedstiltakById";
import { GjennomforingStatusTag } from "@mr/frontend-common";
import { BodyLong, Heading, HStack, VStack } from "@navikt/ds-react";
import styles from "./TiltakHeader.module.scss";

Expand All @@ -21,8 +21,10 @@ export function TiltakHeader({ tiltak }: Props) {
</BodyLong>
</VStack>
</Heading>
{!gjennomforingIsAktiv(tiltak.status.status) && (
<TiltaksgjennomforingStatusTag status={tiltak.status} />
{!isTiltakAktivt(tiltak) && (
<GjennomforingStatusTag
status={typeof tiltak.status === "string" ? tiltak.status : tiltak.status.status}
/>
)}
</HStack>
{tiltakstype.beskrivelse && (
Expand Down
Loading

0 comments on commit d35d8e7

Please sign in to comment.