For utviklere
Importering av filer
Import av komponenter
For å registrere en webkomponent i applikasjonen der den brukes, må den importeres med en side-effekt-import:
import 'nve-designsystem/components/nve-component/nve-component.component.js';Grunnen til at komponenten må importeres på denne måten er at @customElement-dekoratoren kjører customElements.define(...), som registrerer webkomponenten i nettleseren. Dette skjer kun når modulen faktisk blir evaluert.
En side-effekt-import sørger for at komponenten blir registrert, men gir deg ikke nødvendigvis god type-støtte i editoren. Derfor vil du ofte ikke få forslag til tilgjengelige attributter når du bruker komponenten i HTML (for eksempel i Vue eller React).
For å få tilgang til typen kan du importere den separat:
import NveComponent from 'nve-designsystem/components/nve-component/nve-component.component.js';Dette gir bedre typehjelp, men kan føre til flere imports dersom du både vil registrere komponenten og bruke typen.
Alle imports som går via roten av designsystemet, for eksempel:
import { NveButton, NveAlert } from 'nve-designsystem';vil ofte føre til at hele nve-designsystem-pakken blir importert. Dette kan øke bundle-størrelsen unødvendig dersom du kun bruker noen få komponenter.
Designsystemet er per nå ca. 0.5 MB og vil sannsynligvis vokse over tid, så det er verdt å vurdere hvordan komponenter importeres.
Du kan velge om du vil importere en komponent der den brukes i koden eller på et globalt nivå (f.eks. i main.js eller index.html). Hvis du bruker mange designsystem-komponenter, anbefaler vi ikke å importere alle globalt, da dette kan føre til lengre lastetid.
Dersom en parent-komponent i applikasjonen importerer en designsystem-komponent, trenger du ikke å importere den igjen i child-komponenten. Web-komponenter blir registrert i nettleseren første gang de importeres. Det betyr at hvis du importerer en komponent flere steder, registreres den bare én gang, og du unngår duplikater.
Import av stiler
Importer én .css-fil for fargetema i en hovedfil i applikasjonen (f.eks. main.ts eller index.html). Filene finnes i mappa nve-designsystem/css/. For NVE-tema, bruk:
import 'nve-designsystem/css/nve.css';For Varsom-tema, bruk:
import 'nve-designsystem/css/varsom.css';Det finnes også varianter av disse to filene med mørkt tema.
Import via CDN
Både stiler og komponenter kan importeres via CDN.
Komponenter via CDN
Du kan importere en komponent i index.html slik:
<script
type="module"
src="https://cdn.jsdelivr.net/npm/nve-designsystem@latest/components/nve-component/nve-component.component.js"
></script>Skal du bruke komponenter som inneholder ikoner (som f.eks nve-select, nve-checkbox, nve-carousel, nve-menu-item, nve-input) må du også sørge for at du riktig registrerer ikoner i appen din. For eksempel kan du gjøre dette i index.html filen:
<script>
const registerIconLibraryHelper = () => {
import('https://cdn.jsdelivr.net/npm/nve-designsystem@latest/registerIcons/systemLibraryCustomization.js').then(
(module) => {
const { icons, registerIconLibrary } = module;
registerIconLibrary('system', {
resolver: (name) => {
return `data:image/svg+xml, ${encodeURIComponent(icons[name])}`;
},
});
}
);
};
registerIconLibraryHelper();
</script>CSS via CDN
Dersom du ikke trenger å installere (eller ikke kan bruke) hele nve-designsystem-pakken, men kun vil ha tilgang til CSS-variablene, anbefaler vi å bruke CDN.
Importer NVE-tema i index.html slik:
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/nve-designsystem@latest/css/nve.css" />For Varsom-tema, bruk:
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/nve-designsystem@latest/css/varsom.css" />Det samme gjelder for mørke temaer.