Skip to content

Färdiga komponenter i temat

Det finns ett par färdiga komponenter som kan användas och utökas i temat.

Accordion

Denna komponent används för att kunna öppna och stänga innehåll. Den används ofta för FAQ/"Frågor och svar" men kan också användas till annat. Den använder <details> och <summary>, vilket är element som är tillgänglighetsanpassade. Komponenten innehåller färdig styling som går bra att ändra efter hur designen ska se ut.

Exempel på accordion

Exempel

blade
<x-accordion title="Dolore minim ad est?">
   Lorem, ipsum dolor sit amet consectetur adipisicing elit. Doloremque, facilis!
</x-accordion>

Attribut

title - Är texten som kommer synas i <summary> elementet. I exemplet ovan:

Dolore minim ad est?

Slot

Via slot skickar man med innehållet till <details> elementet. I exemplet ovan:

Lorem, ipsum dolor sit amet consectetur adipisicing elit. Doloremque, facilis!

Alert

Denna komponent visar en notis i en ruta.

Exempel på alert

Attribut

Använd attributet type för att bestämma utseendet på notisen. Värdet som skickas med avgör text-, ikon- och bakgrundsfärg samt typ av ikon. Följande värden accepteras:

  • default default - Ger en blå notis med i-ikon
  • success - Ger en grön notis med checkbox-ikon.
  • caution - Ger en gul notis med !-ikon.
  • danger - Ger röd notis med x-ikon.

Detta går enkelt att anpassa i komponent-mallen alert.blade.php i components-mappen.

Övriga attribut

Alla attribut som skickas med utöver type kommer läggas till på ett omslutande <div>-element.

Slot

Det går att skicka med <x-slot>-komponent med attributet name="body". Inuti den läggs notisens body-text. Det är inte obligatoriskt att använda den.

Exempel

Detta är ett exempel på hur den kan användas:

blade
<x-alert class="mb-4" type="default">
  Default
  <x-slot name="body">
    Lorem ipsum dolor sit amet consectetur adipisicing elit. Earum in quam consequuntur veritatis accusantium magnam ea cum tenetur perferendis culpa modi dicta, explicabo ipsum voluptatibus optio qui aliquam animi molestiae.
  </x-slot>
</x-alert>

Go to main

Detta är en enkel komponent som endast innehåller en länk för att hoppa till huvudinnehållet. Komponenten tar inte emot några attribut.

Image

Denna komponent visar angiven bild i olika storlekar baserat på skärmstorleken, inuti en <picture>-tagg.

Attribut

Den accepterar tre attribut:

  1. id - int (frivillig) - Attachment id för bilden som ska visas. Om inget anges används den utvalda bildens attachment id.
  2. sizes - array (frivillig) - En associativ array med storlek och brytpunkt.
  3. loading - string (frivillig) - Bestämmer om bilden ska laddas direkt eller när den blir synlig. Giltiga värden är lazy (när den blir synlig) och eager (direkt). Standardvärdet är lazy.

Exempel

Visar samma bild som the_post_thumbnail() hade gjort, men med utökad funktionalitet.

blade
<x-image />

Ett lite mer avancerat exempel med att skicka med storlekar och brytpunkter.

blade
<x-image
  :id="$my_id"
  :sizes="['my-sm-size' => 'max-width: 700px', 'my-md-size' => 'min-width: 700px', 'my-lg-size' => 'min-width: 2000px']"
  loading="eager"
/>

Detta exempel visar storleken my-sm-size mellan 0-700px, my-md-size mellan 700-2000px och my-lg-size från 2000px upp till oändligheten. Den laddar bilden som eager, alltså oavsett om den är synlig eller inte.

Load more

Denna komponent används för att ladda fler inlägg av speciferad post type.

Attribut

Den accepterar tre attribut:

  1. postType - string - Post typen som ska hämtas.
  2. container - string - Selector för containern där de nya inläggen ska läggas till.
  3. category - string (frivillig) - Begränsar taxonomi

Exempel

Det här exemplet laddar mer inlägg och lägger dem i en div med klassen posts:

blade
<x-load-more post-type="post" container=".posts" />

Toast

Denna komponent används för att omsluta ett annat element som är tänkt att visas vid ett senare tillfälle programmatiskt. För att göra det används ett till tillhörande Javascript/Typescript ramverk. Denna komponent används exempelvis tillsammans med en alert, men kan användas till vilket annat HTML-element som ska vara dolt, och sen visas vid tillfälle.

Attribut

  1. handle string (obligatorisk) - En referens som används i det tillhörande Javascript/Typescript ramverket. Om flera element har samma referens kommer de visas eller gömmas tillsammans.

Exempel

blade
<x-toast handle="my-example-handle-name" class="mb-4">
  <x-alert type="success">
    Success
    <x-slot name="body">
      Lorem ipsum dolor sit amet consectetur adipisicing elit. Earum in quam consequuntur veritatis accusantium magnam ea cum tenetur perferendis culpa modi dicta, explicabo ipsum voluptatibus optio qui aliquam animi molestiae.
    </x-slot>
  </x-alert>
</x-toast>

Övriga attribut

Alla attribut som skickas med utöver handle kommer läggas till på ett omslutande <div>-element.

Tillhörande Javascript/Typescript

För att använda det tillhörande ramverket importeras först ToastsHolder från ./components/toast. Sen initieras en ny instans av ToastsHolder. Här plockas alla "toasts" upp och läggs till i minnet temporärt. De är nu redo att användas.

Instansen ger tillgång till följande metoder:

  • resetAll - Återställer alla "toasts" till att vara gömda med .hidden.
    • Returnerar void.
  • show - Visar alla "toasts" med handle som referens.
    • Parameter:
      • handle string (obligatorisk) - Referens till en eller flera "toasts" som ska visas.
    • Returnerar void.
  • hide - Visar alla "toasts" med handle som referens.
    • Parameter:
      • handle string (obligatorisk) - Referens till en eller flera "toasts" som ska gömmas.
    • Returnerar void.
  • toggle - Visar eller gömmer alla "toasts" med handle som referens.
    • Parameter:
      • handle string (obligatorisk) - Referens till en eller flera "toasts" som ska visas eller gömmas.
    • Returnerar void.
  • triggerDestructible - Visar och sen gömmer alla "toasts" med handle som referens efter time tid.
    • Parametrar:
      • handle string (obligatorisk) - Referens till en eller flera "toasts" som ska visas och sen gömmas.
      • time number (frivillig) - Tid (ms) som alla "toasts" med handle ska visas.
    • Returnerar void.
  • isActive - Se om alla "toasts" med handle är aktiva (synliga) eller ej (dolda).
    • Parameter:
      • handle string (obligatorisk) - Referens till en eller flera "toasts".
    • Returnerar boolean.

Dessa metoder menade för mer avancerad användning.

  • getToast Returnerar Toast-objekt med handle som referens.
    • Parameter:
      • handle string (obligatorisk) - Referens till en Toast med attributet handle.
    • Returnerar Toast eller null.
  • findToastRunCallback Se ifall handle finns inom den nuvarande instansen, och kalla sen på funktionen callback om den finns.
    • Parametrar:
      • handle string (obligatorisk) - Referens till en Toast med attributet handle.
      • callback callable (obligatorisk) - Function som ska köras efter funnen Toast.
    • Returnerar void.
  • setActive Sätter attributet active av Toast till värdet av parametern active.
    • Parameter:
      • handle string (obligatorisk) - Referens till en Toast med attributet handle.
      • active boolean (obligatorisk) - Värdet att sätta active till.
    • Returnerar void.
  • setTimerId Sätter attributet timerId av Toast till värdet av parametern timerId.
    • handle string (obligatorisk) - Referens till en Toast med attributet handle.
    • timerId number|null (obligatorisk) - Värdet att sätta timerId till.
    • Returnerar void

Tillgängliga event

Det skapas tre event för varje Toast, alltså varje unik handle, som initieras i ToastHolder.

  • show-<handle> - Visar toast med <handle>.
  • hide-<handle> - Tar bort toast med <handle>.
  • toggle-<handle> - Visar/gömmer med <handle>.

Det skapas även ett event som triggas när alla toasts återställs.

  • reset-all

Dessa används av de grundläggande metoderna, men kan också anropas manuellt.

Exempel enkel användning

javascript
import { ToastsHolder } from './components/toast';

const toasts = new ToastsHolder;

document.addEventListener('example-event', () => {
  toasts.toggle('caution')
});

Exempel för formulär

javascript
import { ToastsHolder } from './components/toast';

const toasts = new ToastsHolder;

document.querySelector('#my-form')?.addEventListener('submit', async (event) => {
  event.preventDefault();

  // Återställ ifall formuläret skickades med ett error
  toasts.resetAll();

  const data = new FormData(event.target);

  try {
    toasts.show('caution');

    // Exempel API
    const response = await api(data);

    // Återställ `caution`
    toasts.hide('caution');

    toasts.show('success'); // 🎉
  } catch (error) {
    toasts.show('danger'); // 🚨

    console.error(error);
  }
});

Exempel för avancerad användning av event

javascript
import { ToastsHolder } from './components/toast';

const toasts = new ToastsHolder;

document.querySelector('#my-example-button')?.addEventListener('click', async (event) => {
  const toast = toasts.getToast('example-handle');

  // Trigga Toast att visas genom event
  toast.dispatchEvent(toast.events.show);

  toast.toggle('example-handle-2');
});

// Lyssna efter triggat event
toasts.addEventListener('example-handle-show', () => {
  // Gör något
});

// Lyssna efter event som triggas efter .toggle().
// Event skapas även vid .show(), .hide() och .resetAll()
toasts.addEventListener('example-handle-toggle', () => {
  // Gör något annat
});