Select

Om komponenten

<select> er plassbesparende, og brukes ved 5+ valg hvor det ikke er et behov for Ă„ synliggjĂžre alle valg. Elementet skal ha et forhĂ„ndssatt valg uten verdi som navngis pĂ„ en mĂ„te som informerer brukeren om konteksten (eksempel “Velg firma Ă„ representere”).

Avhengigheter

Ekspanderende hjelpetekst:

  • pkt-alert
  • pkt-button

Bruk i Vue og React

Denne komponenten fungerer som en drop-in erstatning for <select> og har ingen innebygget funksjonalitet i selve nedtrekksfeltet. Det betyr at du selv mÄ legge inn <option> i komponentens slot (Vue) / children (React). Vi anbefaler at du bruker v-model rett pÄ PktSelect-komponenten om du bruker Vue, eller value og onChange om du bruker React.

Varianter

<div class="pkt-inputwrapper">
  <label class="pkt-inputwrapper__label" for="exampleSelect1">
    <span>Hva er ditt foretrukne frontendrammeverk?</span>
    <div class="pkt-inputwrapper__helptext">
      Vi bruker ikke svarene pÄ denne til noe nyttig.
    </div>
    <select class="pkt-input" id="exampleSelect1">
      <option selected>Velg ditt foretrukne rammeverk</option>
      <option value="1">Vue.js</option>
      <option value="2">React</option>
      <option value="3">Web components</option>
      <option value="4">Svelte</option>
    </select>
  </label>
</div>
<PktSelect
  label="Hva er ditt foretrukne frontendrammeverk?"
  helptext="Vi bruker ikke svarene pÄ denne til noe nyttig."
  id="exampleSelect1"
  v-model="preferedframework"
>
  <option selected>Velg ditt foretrukne rammeverk</option>
  <option value="1">Vue.js</option>
  <option value="2">React</option>
  <option value="3">Web components</option>
  <option value="4">Svelte</option>
</PktSelect>
<PktSelect
  label="Hva er ditt foretrukne frontendrammeverk?"
  helptext="Vi bruker ikke svarene pÄ denne til noe nyttig."
  id="exampleSelect1"
  value={preferedframework}
  onChange={setPreferedFramework}
>
  <option selected>Velg ditt foretrukne rammeverk</option>
  <option value="1">Vue.js</option>
  <option value="2">React</option>
  <option value="3">Web components</option>
  <option value="4">Svelte</option>
</PktSelect>

Disabled

<div class="pkt-inputwrapper pkt-inputwrapper--disabled">
  <label class="pkt-inputwrapper__label" for="exampleSelect1">
    <span>Hva er ditt foretrukne frontendrammeverk? (Disabled)</span>
    <div class="pkt-inputwrapper__helptext">
      Vi bruker ikke svarene pÄ denne til noe nyttig.
    </div>
    <select class="pkt-input" id="exampleSelect1" disabled>
      <option selected>Velg ditt foretrukne rammeverk</option>
      <option value="1">Vue.js</option>
      <option value="2">React</option>
      <option value="3">Web components</option>
      <option value="4">Svelte</option>
    </select>
  </label>
</div>
<PktSelect
  label="Hva er ditt foretrukne frontendrammeverk?"
  helptext="Vi bruker ikke svarene pÄ denne til noe nyttig."
  id="exampleSelect1"
  v-model="preferedframework"
  disabled
>
  <option selected>Velg ditt foretrukne rammeverk</option>
  <option value="1">Vue.js</option>
  <option value="2">React</option>
  <option value="3">Web components</option>
  <option value="4">Svelte</option>
</PktSelect>
<PktSelect
  label="Hva er ditt foretrukne frontendrammeverk?"
  helptext="Vi bruker ikke svarene pÄ denne til noe nyttig."
  id="exampleSelect1"
  value={preferedframework}
  onChange={setPreferedFramework}
  disabled
>
  <option selected>Velg ditt foretrukne rammeverk</option>
  <option value="1">Vue.js</option>
  <option value="2">React</option>
  <option value="3">Web components</option>
  <option value="4">Svelte</option>
</PktSelect>

Error

Dette er en feilmelding
  <div class="pkt-inputwrapper pkt-inputwrapper--error">
    <label class="pkt-inputwrapper__label" for="exampleSelect1">
      <span>Hva er ditt foretrukne frontendrammeverk? (Disabled)</span>
      <div class="pkt-inputwrapper__helptext">
        Vi bruker ikke svarene pÄ denne til noe nyttig.
      </div>
      <select class="pkt-input" id="exampleSelect1">
        <option selected>Velg ditt foretrukne rammeverk</option>
        <option value="1">Vue.js</option>
        <option value="2">React</option>
        <option value="3">Web components</option>
        <option value="4">Svelte</option>
      </select>
    </label>
    <div class="pkt-alert pkt-alert--error pkt-alert--compact" aria-live="assertive">
      <span class="pkt-icon pkt-alert__icon">
        <svg viewBox="0 0 32 32" aria-hidden="true">
          <use href="#alert-error"></use>
        </svg>
      </span>
      <div class="pkt-alert__text">Dette er en feilmelding</div>
    </div>
  </div>
<PktSelect
  label="Hva er ditt foretrukne frontendrammeverk?"
  helptext="Vi bruker ikke svarene pÄ denne til noe nyttig."
  id="exampleSelect1"
  v-model="preferedframework"
  hasError
  errorMessage="Dette er en feilmelding"
>
  <option selected>Velg ditt foretrukne rammeverk</option>
  <option value="1">Vue.js</option>
  <option value="2">React</option>
  <option value="3">Web components</option>
  <option value="4">Svelte</option>
</PktSelect>
<PktSelect
  label="Hva er ditt foretrukne frontendrammeverk?"
  helptext="Vi bruker ikke svarene pÄ denne til noe nyttig."
  id="exampleSelect1"
  value={preferedframework}
  onChange={setPreferedFramework}
  hasError
  errorMessage="Dette er en feilmelding"
>
  <option selected>Velg ditt foretrukne rammeverk</option>
  <option value="1">Vue.js</option>
  <option value="2">React</option>
  <option value="3">Web components</option>
  <option value="4">Svelte</option>
</PktSelect>

Block:

  • .pkt-select
  • .pkt-inputwrapper

Elements:

  • .pkt-inputwrapper__label
  • .pkt-inputwrapper__helptext
  • .pkt-input__container
  • .pkt-input
  • .pkt-inputwrapper__helptext-expandable
  • .pkt-inputwrapper__helptext-expandable-heading
  • .pkt-inputwrapper__helptext-expandable-open
  • .pkt-inputwrapper__helptext-expandable-closed

Modifiers:

  • .pkt-inputwrapper--disabled
  • .pkt-inputwrapper--error
  • .pkt-inputwrapper--inline
  • .pkt-input--fullwidth

Props, slots og events

PropsTypeValidationDefaultBeskrivelse
idstringRequired-ID for inputfeltet
labelstringRequired-Etiketten for inputfeltet
ariaDescribedbystring--aria for elementet som beskriver inputfeltet
ariaLabelledbystring--aria for elementet som beskriver inputfeltet
classNamestring--Tilpasset CSS-klasse for inputfeltet
disabledboolean-falseAngir om inputfeltet er deaktivert
errorMessagestring, ReactNode, ReactNode[]--Feilmelding som vises nÄr det er en feil i inputfeltet
hasErrorboolean-falseAngir om inputfeltet har en feil
helptextstring, ReactNode, ReactNode[]--Hjelpetekst som vises over inputfeltet
helptextDropdownstring, ReactNode, ReactNode[]--Hjelpetekst som er skjult bak “Les mer”-knapp
helptextDropdownButtonstring--Alternativ tekst til “Les mer”-knapp
inlineboolean-falseAngir om inputfelt skal vises i en linje
fullwidthboolean-falseSett select-elementet til Ă„ ha full bredde
namestring-idNavnet for inputfeltet
optionalTagboolean-falseAngir om inputfeltet skal ha et valgfritt-merke
optionalTextstring-‘Valgfritt’Overstyre tekst for optionalTag-merke
requiredTagboolean-falseAngir om inputfeltet er pÄkrevd
requiredTextstring-‘MĂ„ fylles ut’Overstyre tekst for requiredTag-merke
useWrapperboolean-trueAngir om feltet skal ha label og hjelpetekst eller om det skal stÄ alene
valuestring--Verdien for inputfeltet
SlotsTypeValidationDefaultBeskrivelse
defaultVue--
childrenReact--
EventsTypeValidationDefaultBeskrivelse
inputVueUtlÞses nÄr verdien i inputfeltet endres. Sender den nye verdien som parameter til eventet.

React Merk: Denne komponenten er videresendt med forwardRef, sÄ den stÞtter ogsÄ Ä motta en ref som en ekstra prop. Denne ref-propen kan brukes til Ä referere til selve inputfeltet og fÄ tilgang til dets egenskaper og metoder.

Les mer