feat(nve-navigation-card): Legg til ny navigasjonskomponent for hovednavigasjon#810
feat(nve-navigation-card): Legg til ny navigasjonskomponent for hovednavigasjon#810
Conversation
|
@FrodeKolstad |
|
Azure Static Web Apps: Your stage site is ready! Visit it here: https://brave-meadow-0c645bd03-810.westeurope.5.azurestaticapps.net |
|
Jeg ser at ikonene ikke vises i bygget. Du kan teste dette lokalt ved først å kjøre:
og deretter:
Jeg ser også at bygget feiler nå fordi NveTableDemo.vue ikke er wrappet med ClientOnly. <template>
<ClientOnly>
<div class="nve-table-demo">
<nve-accordion-item variant="secondary" :open="true">
<div slot="summary">Slå av og på kolonner</div>
<div class="column-toggles">
<nve-checkbox
v-for="col in tableHeaders"
:key="col.key"
:checked="!col.hidden"
@sl-change="() => toggleColumn(col)"
>
{{ col.title }}
</nve-checkbox>```
Så fjern gjerne ikonene fra root/assets og legg dem i public/assets i stedet. |
amish1188
left a comment
There was a problem hiding this comment.
Bra jobba her 🙂 La oss vente på Frode før vi merger den.
| @property({ type: String }) clickAction: 'internal' | 'download' | 'external' = 'internal'; | ||
|
|
||
| /** Path til ikon som vises øverst i kortet (dekorativt) */ | ||
| @property({ type: String }) iconPath: string | undefined = undefined; |
There was a problem hiding this comment.
Jeg foreslår å gjøre dette om til et slot i stedet. Da får man også mulighet til å bruke for eksempel nve-icon her. Fjern iconPath og la folk bruke prefix-icon slot f.eks
There was a problem hiding this comment.
ok na ser jeg at det er kun bestemte ikoner som kan brukes her, da kan du ignorere dette
There was a problem hiding this comment.
jeg hadde den som slot først, men tenkte det kunne være lurt å bare ha prop til filen slik at vi hadde mer kontroll på hva som ble lagt inn. Med slot gir man mer frihet og man kan legge inn mye forskjellig, når tvinger vi det til en <img med aria-hidden .. > osv og har mer kontroll. Men her er det mulig å gå for slot også hvis vi tenker det er mer hensiktsmessig.
| private renderContent() { | ||
| return html` | ||
| <div part="content" class="navigation-card__content"> | ||
| ${this.iconPath |
There was a problem hiding this comment.
Som nevnt over foreslår jeg å gjøre dette om til et slot.
There was a problem hiding this comment.
Du kan fortsatt bruke CSS-klasser på den, men da bør det også stå i dokumentasjonen at man enten må bruke aria-hidden eller alt="".
There was a problem hiding this comment.
ok na ser jeg at det er kun bestemte ikoner som kan brukes her, da kan du ignorere dette
| class="navigation-card__icon" | ||
| />` | ||
| : nothing} | ||
| <h2 part="title" class="navigation-card__title">${this.title}</h2> |
There was a problem hiding this comment.
Her er det kanskje litt farlig å hardkode heading-nivået. Vet vi alltid at komponenten ikke vil ligge nestet under en h3-heading? Kanskje vi heller kan legge til en headingLevel-property med default verdi 2?
There was a problem hiding this comment.
Tanken er at nav-card-ene skal være selvstendige og ikke underligge h3 osv, men mulig å utvide med en headingLevel-prop her. Med en h2 her så framtvinger vi også litt hvordan vi ønsker å bruke komponenten, som litt selvstending cards ment for hovednavigasjon. Men var også litt usikker her på om man skulle ha det som prop eller ikke, så mulig å gjøre det altså
| background: var(--color-neutrals-background-primary); | ||
| cursor: pointer; | ||
| text-decoration: none; | ||
| transition: border-color 0.2s ease; |
There was a problem hiding this comment.
Alle transitions skal ha 0.3s. Håper en dag vi kan ha en token for dette som man kan bruke.
| .navigation-card__title { | ||
| font: var(--typography-heading-small); | ||
| color: var(--color-neutrals-foreground-primary); | ||
| transition: color 0.2s ease; |
| color: var(--color-brand-foreground-primary); | ||
| margin-right: var(--spacing-x-small); | ||
| transition: | ||
| margin-left 300ms cubic-bezier(0, 0, 0.2, 1), |
There was a problem hiding this comment.
Siden du har en del repetisjoner her, kunne vi brukt CSS-variabler (du kan sette dem enten på .navigation-card eller :host).
--nav-card-arrow-transition:
margin-left 300ms cubic-bezier(0, 0, 0.2, 1), margin-right 300ms cubic-bezier(0, 0, 0.2, 1);
--nav-card-arrow-transition-fast:
margin-left 100ms cubic-bezier(0, 0, 0.2, 1), margin-right 100ms cubic-bezier(0, 0, 0.2, 1);| @property({ type: String }) testId = ''; | ||
|
|
||
| /** Tittel som vises øverst på kortet (må settes) */ | ||
| @property({ type: String }) title = ''; |
There was a problem hiding this comment.
Du bør ikke bruke title her. title er reservert for det vanlige HTML title-attributtet. Bruk heller label, slik som i de andre komponentene.
| @customElement('nve-navigation-card') | ||
| export default class NveNavigationCard extends LitElement implements INveComponent { | ||
| /** Test ID som kan brukes i testing og sporing */ | ||
| @property({ type: String }) testId = ''; |
There was a problem hiding this comment.
@property({type: String}) testId: string | undefined = undefined;og sa i html malen
testid=${ifDefined(this.testId)}>ellers skal testId vises i DOM-en selv om den er tom
| text-underline-offset: 16%; | ||
| } | ||
|
|
||
| .navigation-card:focus { |
There was a problem hiding this comment.
Bruk heller :focus-visible her, med mindre kortet skal fokuseres når det klikkes på.
…di, ryddet opp i CSS transitions med variabler, og oppdatert dokumentasjon og eksempler etter PR-tilbakemeldinger
…for å fikse tester med testid og tittel
|
Azure Static Web Apps: Your stage site is ready! Visit it here: https://brave-meadow-0c645bd03-810.westeurope.5.azurestaticapps.net |

Intro
PR for å løse issue 809 som innebærer å opprette
nve-navigation-cardsom ny komponent i designsystemet. Baserer seg på skissene fra Figma. Opprettes uten shoelace.Figma
Figma: Lenke
Beskrivelse
Denne PR-en introduserer nve-navigation-card-komponenten, ment for hovednavigasjon på sider som f.eks. Transportside. Komponenten deler en del likehetstrekk med
nve-link-card. Endringene følger designsystemets og Figma-skissenes spesifikasjoner:arrow_forward(intern),download(nedlastning av fil),open_in_new(ekstern lenke).<a>hvis det ikke er wrappet i lenke, ellers som<div>(for at man kan bruke rammeverks-spesifikke routinger).Komponenten har følgende props:
testId: Brukes for testing og sporing av komponenten.title: Tittel som vises øverst på kortet (må settes).href: Lenke for navigasjon; gjør kortet klikkbart.additionalText: Ekstratekst under tittelen (maks 3 linjer, trunkeres).clickAction: Styrer hva som skjer ved klikk:iconPath: Path til ikon som vises øverst i kortet (dekorativt).