|
1 |
| -# React + TypeScript + Vite |
| 1 | +# Dekoratør for interne arbeidsflater V3 |
| 2 | +Dekoratøren er en navigasjonsmeny som skal kunne brukes på tvers av fagapplikasjoner i NAV. |
2 | 3 |
|
3 |
| -This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules. |
| 4 | +Appen har ansvar for kommunikasjon med contextholderen (modia-contextholder og modia-eventdistribution). |
| 5 | +Dette betyr at hvis man sender inn konfigurasjonen for `enhet` eller `fnr`, så vil det bli satt opp en WebSocket-connection, |
| 6 | +og appen vil holde context i sync med hva som vises i decoratøren. |
| 7 | +Ved eventuelle endringer i andre flater vil det vises en bekreftelse-modal, og hvis saksbehandler bekrefter endringen så vil `onChange` bli kalt. |
4 | 8 |
|
5 |
| -Currently, two official plugins are available: |
| 9 | +## Ta ibruk |
| 10 | +Legg til følgende i index.html |
| 11 | +```html |
| 12 | + <script src="https://cdn.nav.no/personoversikt/internarbeidsflate-decorator-v3/dev/latest/dist/bundle.js"></script> |
| 13 | + <link rel="stylesheet" href="https://cdn.nav.no/personoversikt/internarbeidsflate-decorator-v3/dev/latest/dist/index.css" /> |
| 14 | +``` |
| 15 | + |
| 16 | + |
| 17 | +### React med navspa |
| 18 | +Om man bruker react som frontendbibliotek kan man så ta ibruk `@navikt/navspa` (Eksemplet er med typescript, fjern `DecoratorProps` om det ikke brukes). |
| 19 | +```typescript jsx |
| 20 | +import NAVSPA from '@navikt/navspa'; |
| 21 | +import DecoratorProps from './decorator-props'; |
| 22 | +import decoratorConfig from './decorator-config'; |
| 23 | + |
| 24 | +const InternflateDecorator = NAVSPA.importer<DecoratorProps>('internarbeidsflatefs'); |
| 25 | + |
| 26 | +function App() { |
| 27 | + return ( |
| 28 | + <> |
| 29 | + <InternflateDecorator {...decoratorConfig}/> |
| 30 | + <h1>Resten av appen din her.</h1> |
| 31 | + </> |
| 32 | + ); |
| 33 | +} |
| 34 | +``` |
| 35 | + |
| 36 | +### Manuelt oppsett |
| 37 | +Om man ikke bruker react så kan man fortsatt ta ibruk decoratoren, men man må da kalle render-funksjonen selv. |
| 38 | +Ett eksempel på hvordan dette kan gjøres kan ses i [index.html](public/index.html). |
| 39 | + |
| 40 | +## Konfigurasjon |
| 41 | + |
| 42 | +Eksempler på konfigurasjoner kan ses i [index.html](public/index.html). |
6 | 43 |
|
7 |
| -- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react/README.md) uses [Babel](https://babeljs.io/) for Fast Refresh |
8 |
| -- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh |
| 44 | +```typescript jsx |
| 45 | +export interface DecoratorProps { |
| 46 | + useProxy?: boolean | string; // 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 |
| 47 | + accessToken?: string; // Manuell innsending av JWT, settes som Authorization-header. Om null sendes cookies vha credentials: 'include' |
| 48 | + enhet?: string | undefined; // Konfigurasjon av enhet-kontekst |
| 49 | + accessToken?: string | undefined; // Manuell innsending av JWT, settes som Authorization-header. Om null sendes cookies vha credentials: 'include' |
| 50 | + fnr?: string | undefined; // Konfigurasjon av fødselsnummer-kontekst |
| 51 | + 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. |
| 52 | + enableHotkeys?: boolean | undefined; // Aktivere hurtigtaster |
| 53 | + fetchActiveEnhetOnMount?: boolean | undefined; // Om enhet er undefined fra container appen, og denne er satt til true, henter den sist aktiv enhet og bruker denne. |
| 54 | + fetchActiveUserOnMount?: boolean | undefined; // Om fnr er undefined fra container appen, og denne er satt til true for at den skal hente siste aktiv fnr. |
| 55 | + onBeforeRequest?: (headers: HeadersInit) => HeadersInit | undefined; // Her kan headeren til alle nettverkskall bli modifisert før de blir kalt |
| 56 | + onEnhetChanged: (enhet?: string | null) => void; // Kalles når enheten endres |
| 57 | + onFnrChanged: (fnr?: string | null) => void; // Kalles når fnr enheten endres |
| 58 | + appName: string; // Navn på applikasjonen |
| 59 | + hotkeys?: Hotkey[]; // Konfigurasjon av hurtigtaster |
| 60 | + markup?: Markup; // Egen HTML |
| 61 | + showEnheter: boolean; // Vis enheter |
| 62 | + showSearchArea: boolean; // Vis søkefelt |
| 63 | + showHotkeys: boolean; // Vis hurtigtaster |
| 64 | + environment: Environment; // Miljø som skal brukes. |
| 65 | + urlFormat: UrlFormat; // URL format |
| 66 | + 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 |
| 67 | +} |
9 | 68 |
|
10 |
| -## Expanding the ESLint configuration |
| 69 | +// export interface TogglesConfig { |
| 70 | +// visVeileder?: boolean; // Styrer om man skal vise informasjon om innlogget veileder |
| 71 | +// visHotkeys?: boolean; // Styrer om man skal vise knappen for hotkeys |
| 72 | +// } |
11 | 73 |
|
12 |
| -If you are developing a production application, we recommend updating the configuration to enable type aware lint rules: |
| 74 | +export interface Markup { |
| 75 | + etterSokefelt?: string; // Gir muligheten for sende inn egen html som blir en del av dekoratøren |
| 76 | +} |
13 | 77 |
|
14 |
| -- Configure the top-level `parserOptions` property like this: |
| 78 | +export type Environment = 'q0' | 'q1' | 'q2' | 'q3' | 'q4' | 'prod' | 'local' | 'mock'; // Miljø. Foreløpig er kun q0 og q1 støttet. |
| 79 | + |
| 80 | +export type UrlFormat = 'LOCAL' | 'ADEO' | 'NAV_NO'; // UrlFormat. Brukes om proxy ikke er satt. |
15 | 81 |
|
16 |
| -```js |
17 |
| - parserOptions: { |
18 |
| - ecmaVersion: 'latest', |
19 |
| - sourceType: 'module', |
20 |
| - project: ['./tsconfig.json', './tsconfig.node.json'], |
21 |
| - tsconfigRootDir: __dirname, |
22 |
| - }, |
23 | 82 | ```
|
| 83 | +# Henvendelser |
| 84 | +Spørsmål knyttet til koden eller prosjektet kan rettes mot: |
24 | 85 |
|
25 |
| -- Replace `plugin:@typescript-eslint/recommended` to `plugin:@typescript-eslint/recommended-type-checked` or `plugin:@typescript-eslint/strict-type-checked` |
26 |
| -- Optionally add `plugin:@typescript-eslint/stylistic-type-checked` |
27 |
| -- Install [eslint-plugin-react](https://github.com/jsx-eslint/eslint-plugin-react) and add `plugin:react/recommended` & `plugin:react/jsx-runtime` to the `extends` list |
| 86 | +[Team Personoversikt](https://github.com/navikt/info-team-personoversikt) |
0 commit comments