Skip to content

For utviklere

Bruk av designsystemet i Vue 3

Installer designsystem-pakka

sh
npm i nve-designsystem

Fortell Vue at komponentene våre er web-komponenter

I vite.config, legg inn isCustomElement, som forteller Vue hva som er web-komponenter. Hvis du ikke har vite.config fra før, lag en ny fil i rot-mappa.

Les her for mer info og andre løsninger hvis du ikke bruker Vite.

js
export default defineConfig({
  plugins: [
    vue({
      template: {
        compilerOptions: {
          isCustomElement: (tag) => tag.includes('nve-'),
        },
      },
    }),
  ],
});

Stiler

Importer en .css-fil for farge-tema i main.ts. Filene finnes i mappa nve-designsystem/css/. For NVE-tema, bruk:

js
import 'nve-designsystem/css/nve.css';

For Varsom-tema, bruk:

js
import 'nve-designsystem/css/varsom.css';

Det finnes også varianter av disse to filene med mørkt tema.

Ikoner

Fordi vi overstyrer Shoelace sine system-ikoner i våre komponenter må vi registrere disse manuelt. Her er mer info. Legg denne kodesnutten i main.ts eller App.vue:

js
import { icons, registerIconLibrary } from 'nve-designsystem/registerIcons/systemLibraryCustomization.js';
registerIconLibrary('system', {
  resolver: (name) => {
    return `data:image/svg+xml, ${encodeURIComponent(icons[name])}`;
  },
});

Eslint-regler og VS Code

Hvis du bruker VS Code og starter et nytt prosjekt gjennom npm run create vue@latest og bruker standard eslint-regler, kan du få feil fra eslint-regler og automatisk retting fra VS-kode. Du kan legge til disse ESLint-reglene for å unngå dette:

json
"vue/no-deprecated-slot-attribute": "off",
"vue/attribute-hyphenation": "off",
"vue/v-on-event-hyphenation": "off",

Eksempel på bruk av komponent

vue
<template>
  <nve-button @Click="count++">Du har trykket på denne NVE-knappen {{ count }} gang(er)</nve-button>
</template>
<script setup lang="ts">
import 'nve-designsystem/components/nve-button/nve-button.component.js';
import { ref } from 'vue';
const count = ref(0);
</script>

Under kjører vi denne koden i en sandkasse. Du kan endre koden selv ved å velge 'Open Sandbox' og fila 'App.vue'.

<template>
  <nve-button @Click="count++">Du har trykket på denne NVE-knappen {{ count }} gang(er)</nve-button>
</template>
<script setup lang="ts">
import 'nve-designsystem/components/nve-button/nve-button.component.js';
import { ref } from 'vue';
const count = ref(0);
</script>

Hvis du ikke ser komponenten når du kjører sida, sjekk om du har importert den riktig.

Les også om bruk av Shoelace-komponenter i Vue. Det meste der gjelder for Nve-komponenter også.

Mer hjelp i VS Code

Vi bruker Custom Element VS Code Integration til å generere hjelpedokumentasjon til VS Code.

Legg denne inn i .vscode/settings.json, for få dokumentasjon og autofullføring av attributt-verdier i VS Code:

json
"html.customData": ["./node_modules/nve-designsystem/vscode.html-custom-data.json"],
"css.customData": ["./node_modules/nve-designsystem/vscode.css-custom-data.json"]

Da får du disse funksjonene:

  • Hold muspeker over komponentnavnet i html-malen for å se dokumentasjon på komponenten
  • Bruk Ctrl-space for hjelp til å fullføre attributtnavn og for å vise tilgjengelige valg der et attributt har et begrenset sett av lovlige valg.