nve-alert
Arvet fra LitElement
Feil / oppgaver / PR
Ingen som vi vet om. Hvis du finner noe muffens, registrer en feil under Issues i Github og merk den med nve-alert.
<nve-alert open label="Info" text="Dette er alert komponent. Den har ventet hele livet på å varsle deg!"></nve-alert>Bruk open for å vise en alert. Hvis ikke open er satt, vises den ikke.
Eksempler
Styr innhold
Du kan bruke spor for å vise innhold i alerten. Standard-spor er hovedteksten. Du kan også bruke egne spor for overskrift (label).
<nve-alert open>
<nve-label slot="label">Label</nve-label>
Bruk av slots i alerten.
</nve-alert>Som alternativ kan du bruke attributer iconName, label og text.
<nve-alert open label="Label" text="Bruk av attributer"></nve-alert>Variant
Bruk variant for å styre farger. primary er standard og trenger ikke spesifiseres.
<nve-alert open text="primary"></nve-alert>
<nve-alert variant="success" open text="success"></nve-alert>
<nve-alert variant="warning" open text="warning"></nve-alert>
<nve-alert variant="neutral" open text="neutral"></nve-alert>
<nve-alert variant="danger" open text="danger"></nve-alert>Ikon
Velger du variant, kommer det et bestemt ikon som standard. Du kan overstyre ikonet med iconName-egenskapen. Du kan skjule ikonet med showIcon="false".
<nve-alert open>Standard ikon på info variant</nve-alert>
<nve-alert open variant="danger">Standard ikon på fare variant</nve-alert>
<nve-alert variant="success" open iconName="house">Annet ikon</nve-alert>
<nve-alert variant="warning" open showIcon="false">Ingen ikon</nve-alert>Left stroke
Bruk leftStroke for å vise en fet strek på venstre side.
<nve-alert variant="danger" text="Left stroke" leftStroke open> </nve-alert>Høyere metning
Bruk saturation="emphasized" for å få litt mørkere bakgrunnsfarge.
<div style="display: grid; grid-template-columns: 1fr 1fr; gap: 0.5rem">
<nve-alert variant="warning" text="Emphasized" saturation="emphasized" open> </nve-alert>
<nve-alert variant="warning" text="Ikke emphasized" open> </nve-alert>
<nve-alert variant="success" text="Emphasized" saturation="emphasized" open> </nve-alert>
<nve-alert variant="success" text="Ikke emphasized" open> </nve-alert>
<nve-alert variant="neutral" text="Emphasized" saturation="emphasized" open> </nve-alert>
<nve-alert variant="neutral" text="Ikke emphasized" open> </nve-alert>
<nve-alert variant="danger" text="Emphasized" saturation="emphasized" open> </nve-alert>
<nve-alert variant="danger" text="Ikke emphasized" open> </nve-alert>
<nve-alert text="Emphasized" saturation="emphasized" open> </nve-alert>
<nve-alert text="Ikke emphasized" open> </nve-alert>
</div>Closable
Bruk closable for å vise en lukke-knapp på høyre side, som skjuler komponenten.
Når du bruker closable vises det en knapp med kun ikon.
Siden det ikke finnes noe tekst på knappen, må vi informere skjermleser-brukere om hva knappen gjør. Derfor har knappen et aria-label-attributt. Dette styres via buttonLabel-egenskapen i alert-komponenten. Standardverdien er "Lukk", men det er viktig å oppdatere denne hvis du bruker et annet språk.
<nve-alert open closable class="alert-closeable"> Trykk på krysset for å lukke denne </nve-alert>
<script>
// Denne snutten vil vise alert igjen etter 2 sekunder, slik at du kan prøve å lukke den flere ganger
const alert = document.querySelector('.alert-closeable');
alert.addEventListener('sl-after-hide', async () => {
setTimeout(() => (alert.open = true), 2000);
});
</script>Duration
Du kan bruke duration for å lukke alerten automatisk. Verdien er gitt i millisekunder.
<nve-alert class="alert-duration" duration="2000"> Denne skal forsvinne etter 2 sekunder. </nve-alert>
<nve-button class="show-alert">Vis alerten</nve-button>
<script>
// Denne snutten vil åpne alerten når man klikker på knappen.
const button = document.querySelector('.show-alert');
const alert = document.querySelector('.alert-duration');
button.addEventListener('click', () => alert.show());
</script>Toast
Du kan selv bestemme hvordan du vil vise alerten i løsningen din. Når du legger til nve-alert i DOM-en, er den alltid der selv om open er satt til false. display: none gjør at skjermlesere ignorerer komponenten, så det er ingen fare ved å ha den i DOM-en hele tiden.
Ofte ønsker man å skjule slike komponenter i SPA-applikasjoner uansett. Vi tilbyr derfor også toast-funksjonalitet som gjør dette for deg. Du skal åpne alerten med toast() metoden som kalles på den.
Som standard vises toast øverst i høyre hjørne. For å vise en alert som toast, må du wrappe nve-alert i en div med klassen toast-stack. Denne blir injisert i DOM-en utenfor hovedinnholdet. Når alerten lukkes, forsvinner også toast-stack sammen med alle nve-alert-komponentene. Vi anbefaler ikke å vise mer enn én alert samtidig. Les mer i seksjonen om tilgjengelighet. Den er ikke justbar. Per i dag støttes det kun en animasjon, men kan sikkert prate med designere hvis det er behov for flere typer animasjoner.
I dette eksemplet vises det to alert meldinger samtidig når man klikker på begge knappene. Husk at det ikke er best praksis å vise flere alert meldinger samtidig. Bruk det med omhu, og les mer om det i tilgjengelighet seksjonen.
<div class="toast-container">
<nve-alert class="alert-toast" variant="warning" closable label="Toast" text="Obs! Dette er en toast."> </nve-alert>
<nve-alert class="alert-toast" variant="success" closable label="Toast" text="Gratulerer! Dette er en toast">
</nve-alert>
<nve-button class="show-alert-warning">Vis varsel toast</nve-button>
<nve-button class="show-alert-success" variant="neutral">Vis suksess toast</nve-button>
</div>
<script>
// Denne snutten vil åpne alert meldinger når man klikker på knapper.
const container = document.querySelector('.toast-container');
const buttonWarning = container.querySelector('.show-alert-warning');
const buttonSuccsess = container.querySelector('.show-alert-success');
const warningAlert = container.querySelector('nve-alert[variant="warning"]');
const successAlert = container.querySelector('nve-alert[variant="success"]');
buttonWarning.addEventListener('click', () => warningAlert.toast());
buttonSuccsess.addEventListener('click', () => successAlert.toast());
</script>Tilgjengelighet
nve-alert bruker alert live-region-rolle. Hovedoppgaven til alert-komponenten er å gi brukeren en umiddelbar og viktig beskjed. alert bruker derfor aria-live="assertive", som betyr at når alerten vises i DOM-en (for eksempel med display:block), vil skjermlesere umiddelbart stoppe det de leser og fokusere på innholdet i alerten. Den har også aria-atomic="true", som gjør at hvis innholdet i alerten endres mens den vises, vil skjermleseren lese opp hele innholdet på nytt. Vi har ikke endret noen av disse egenskapene, så de fungerer som standard for alert-rollen.
En av grunnene til at alerten leses opp umiddelbart, kan være at den ofte vises i et begrenset tidsrom. Alerts forsvinner gjerne etter en viss tid. Hvis du tror brukeren ikke rekker å lese meldingen på den tiden, kan du fjerne duration-verdien fra komponenten (hvis den brukes) og la brukeren lukke alerten selv. På grunn av aria-live="assertive", anbefales det å ikke vise mange tidsstyrte alerts, eller generelt mange alerts samtidig. Det anbefales også å ikke vise alerts for ofte. Bruk denne komponenten med omhu, kun for de viktigste meldingene/tilbakemeldingene.
Alerten tar ikke fokus fra tastaturet når den vises. Hvis du vil at bruker skal kunne lukke closable alert med en gang den dukkes opp, og uten å tabbe gjenneom hele dokumentet, du kan gjerne sette fokus på knappen når alerten vises. Husk da å returnere fokus til det elementet som hadde fokus før du satte det på knappen i alerten.
På grunn av sin rolle anbefales det ikke å bruke nve-alert til å vise statiske meldinger. Til det kan man gjerne bruke nve-message-card komponent.
Siden alerten vises med en animasjon, er det viktig at vi respekterer innstillingen for redusert bevegelse (prefers-reduced-motion). Dette er allerede implementert i animation.ts-filen.
WCAG anbefaler å følge disse to reglene når alerten er implementert:
Ingen av disse kriteriene er påkrevd av UUtilsynet, så vi trenger ikke å følge dem strengt.
Alerten ble testet med NVDA skjerm-leser, og den fungerer som forventet.
Spor
| Navn | Beskrivelse |
|---|---|
| (standard) | tekst - Hoved teksten i alerten. |
| icon | Det første ikonet (til venstre). |
| label | Overskriften for alerten. |
Hendelser
| Navn | Arvet fra | Beskrivelse |
|---|---|---|
| sl-show | Når alerten blir vist | |
| sl-hide | Når alerten blir skjult | |
| sl-after-show | Etter allerten er vist | |
| sl-after-hide | Etter allerten er skjult |
Egenskaper
| Navn | Type | Arvet fra | Beskrivelse | Reflected |
|---|---|---|---|---|
| testId | string | undefined = undefined | |||
| label | string | undefined | Overskriften | ||
| text | string | undefined | Hoved tekst | ||
| saturation | 'emphasized' | undefined | Bestemmer sterkere bakgrunnsfarge | ||
| leftStroke | boolean = false | Ramme linje til venstre | ||
| variant | 'primary' | 'success' | 'neutral' | 'warning' | 'danger' = 'primary' | Bestemmer hvilken variant av alerten som skal brukes. | ||
| closable | boolean = false | Om lukk knapp skal vises | ||
| open | boolean = false | Om alerten er åpen. Hvis sant alerten vises, ellers er den skjult. | ||
| duration | = Infinity | Hvor lenge alerten skal være åpen før den lukkes automatisk, i millisekunder. Altid er standard | ||
| buttonLabel | string | undefined = 'Lukk' | Aria label på knapp med kun ikone. Lukk er standard. | ||
| iconName | string | undefined | Navnet på ikonet som skal vises til venstre siden av alerten. | ||
| showIcon | 'true' | 'false' = 'true' | Om variant ikonen skal vises |
Metoder
| Navn | Parametre | Returtype | Arvet fra | Beskrivelse |
|---|---|---|---|---|
| show | Viser alerten med animasjon. Setter `open` til true, kjører visningsanimasjonen, og starter eventuell auto-hide timer. Sender ut eventen `sl-after-show` når animasjonen er ferdig. | |||
| hide | Skjuler alerten med animasjon. Kjører skjuleanimasjonen før `open` settes til false. Sender ut eventen `sl-after-hide` når animasjonen og oppdateringen er ferdig. Stopper eventuell auto-hide timer. | |||
| toast | Viser alerten som en toast-melding. Legger alerten i toast-stacken, venter til den er rendret, og viser den med animasjon. Fjerner alerten fra toast-stacken når den skjules, og fjerner stacken hvis det ikke er flere alerts igjen. |
Deler
| Navn | Beskrivelse |
|---|---|
| base | Topp-element |
| icon | Ikonet til venstre |
| label | Overskriften |
| message | Hoved tekst |