-
Notifications
You must be signed in to change notification settings - Fork 3
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
4 changed files
with
61 additions
and
50 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,57 +1,59 @@ | ||
export interface DecoratorProps { | ||
appname: string; // Navn på applikasjon | ||
fnr?: FnrContextvalue; // Konfigurasjon av fødselsnummer-kontekst | ||
enhet?: EnhetContextvalue; // Konfigurasjon av enhet-kontekst | ||
toggles?: TogglesConfig; // Konfigurasjon av hvilke elementer som skal vises i dekoratøren | ||
markup?: Markup; // Ekstra innhold i dekoratøren, kan brukes om man trenger å legge en knapp innenfor dekoratøren | ||
|
||
/* Manuell overstyring av urlene til BFFs. | ||
Gjør alle kall til relativt path, og trenger derfor proxy oppsett. Default: false */ | ||
useProxy?: boolean; | ||
|
||
/* Manuell innsending av JWT, settes som Authorization-header. | ||
Om null sendes cookies vha credentials: 'include' */ | ||
accessToken?: string; | ||
} | ||
|
||
export interface TogglesConfig { | ||
visVeileder?: boolean; // Styrer om man skal vise informasjon om innlogget veileder | ||
enhet?: string | undefined; // Konfigurasjon av enhet-kontekst | ||
accessToken?: string | undefined; // Manuell innsending av JWT, settes som Authorization-header. Om null sendes cookies vha credentials: 'include' | ||
fnr?: string | undefined; // Konfigurasjon av fødselsnummer-kontekst | ||
userKey?: string | undefined; // Om man ikke ønsker å bruke fnr i urler, kan andre apper kalle contextholder for å generere en midlertidig kode. Hvis App A skal navigere til App B som har dekoratøren, må App A først sende en post request til /fnr-code/generate med {fnr: string} i bodyen, dette returnerer {fnr: string, code: string} til App A. App A kan så navigere til App B og sende med denne koden. App B kan så sende den koden inn til dekoratøren i userKey propen og så henter dekoratøren fnr for den koden fra contextholderen. | ||
enableHotkeys?: boolean | undefined; // Aktivere hurtigtaster | ||
fetchActiveEnhetOnMount?: boolean | undefined; // Om enhet er undefined fra container appen, og denne er satt til true, henter den sist aktiv enhet og bruker denne. | ||
fetchActiveUserOnMount?: boolean | undefined; // Om fnr er undefined fra container appen, og denne er satt til true for at den skal hente siste aktiv fnr. | ||
onEnhetChanged: (enhetId?: string | null, enhet?: Enhet) => void; // Kalles når enheten endres | ||
onFnrChanged: (fnr?: string | null) => void; // Kalles når fnr enheten endres | ||
onLinkClick?: (link: { text: string; url: string }) => void; // Kan brukes for å legge til callbacks ved klikk på lenker i menyen. Merk at callbacken ikke kan awaites og man må selv håndtere at siden lukkes. Nyttig for å f.eks tracke navigasjon events i amplitude | ||
appName: string; // Navn på applikasjonen | ||
hotkeys?: Hotkey[]; // Konfigurasjon av hurtigtaster | ||
markup?: Markup; // Egen HTML | ||
showEnheter: boolean; // Vis enheter | ||
showSearchArea: boolean; // Vis søkefelt | ||
showHotkeys: boolean; // Vis hurtigtaster | ||
environment: Environment; // Miljø som skal brukes. | ||
urlFormat: UrlFormat; // URL format | ||
proxy?: string | undefined; // Manuell overstyring av urlene til BFFs. Gjør alle kall til relativt path hvis true, og bruker verdien som domene om satt til en string. Default: false | ||
} | ||
|
||
export interface Markup { | ||
etterSokefelt?: string; // Gir muligheten for sende inn egen html som blir en del av dekoratøren | ||
} | ||
|
||
/* Fnr/Enhet-konfiguration støttet både `Controlled` og `Uncontrolled` operasjon. | ||
// Ved bruk av `Controlled` må konsument-applikasjonen selv ta ansvar for oppdatering av `value` etter enhver `onChange` | ||
Dette er i motsetning til `Uncontrolled`, hvor dette håndteres av dekoratøren. | ||
Og alt konsument-applikasjonen trenger å gjøre er å følge med på `onChange`. */ | ||
|
||
export interface ControlledContextvalue<T> extends BaseContextvalue<T> { | ||
value: string | null; | ||
export interface Enhet { | ||
readonly enhetId: string; | ||
readonly navn: string; | ||
} | ||
|
||
export interface UncontrolledContextvalue<T> extends BaseContextvalue<T> { | ||
initialValue: string | null; | ||
} | ||
// Miljø | ||
export type Environment = 'q0' | 'q1' | 'q2' | 'q3' | 'q4' | 'prod' | 'local' | 'mock'; | ||
|
||
export type UrlFormat = 'LOCAL' | 'NAV_NO' | 'ANSATT'; // UrlFormat. Brukes om proxy ikke er satt & i url til websocket. | ||
|
||
export interface BaseContextvalue<T> { | ||
display: T; | ||
skipModal?: boolean; | ||
ignoreWsEvents?: boolean; | ||
onChange(value: string | null): void; | ||
export interface HotkeyObject { | ||
char: string; | ||
altKey?: boolean; | ||
ctrlKey?: boolean; | ||
metaKey?: boolean; | ||
shiftKey?: boolean; | ||
} | ||
|
||
export type Contextvalue<T> = ControlledContextvalue<T> | UncontrolledContextvalue<T>; | ||
export interface HotkeyDescription { | ||
key: HotkeyObject; | ||
description: string; | ||
forceOverride?: boolean; | ||
} | ||
|
||
export enum EnhetDisplay { | ||
ENHET = 'ENHET', | ||
ENHET_VALG = 'ENHET_VALG', | ||
export interface ActionHotKey extends HotkeyDescription { | ||
action(event: KeyboardEvent): void; | ||
} | ||
|
||
export enum FnrDisplay { | ||
SOKEFELT = 'SOKEFELT', | ||
export interface DocumentingHotKey extends HotkeyDescription { | ||
documentationOnly: boolean; | ||
} | ||
|
||
export type EnhetContextvalue = Contextvalue<EnhetDisplay>; | ||
export type FnrContextvalue = Contextvalue<FnrDisplay>; | ||
export type Hotkey = ActionHotKey | DocumentingHotKey; |