Svelte / SvelteKit
Το Svelte περνάει τα attributes απευθείας στο DOM χωρίς επίπεδο virtual DOM, καθιστώντας τα custom elements φυσική επιλογή. Για το SvelteKit (SSR), φορτώστε το CDN μέσα στο onMount ή προστατέψτε με τον έλεγχο browser.
@wink/elements npm package Εγκαταστήστε και φορτώστε το CDN bundle με τύπους TypeScript.
Εγκατάσταση
Ενότητα με τίτλο «Εγκατάσταση»npm install @wink/elementsSvelteKit — root layout
Ενότητα με τίτλο «SvelteKit — root layout»import { browser } from '$app/environment';import { load as loadWink } from '@wink/elements';
export function load() { if (browser) { loadWink({ clientId: import.meta.env.PUBLIC_WINK_CLIENT_ID }); }}Εναλλακτικά, φορτώστε μέσα στο onMount στο +layout.svelte:
<script> import { onMount } from 'svelte'; import { load } from '@wink/elements';
onMount(() => { load({ clientId: import.meta.env.PUBLIC_WINK_CLIENT_ID }); });</script>
<slot />Χρήση σε components
Ενότητα με τίτλο «Χρήση σε components»Το Svelte περνάει όλα τα άγνωστα attributes απευθείας στο DOM, οπότε δεν απαιτείται επιπλέον ρύθμιση:
<script> export let layoutId = 'YOUR_LAYOUT_ID';</script>
<main> <wink-content-loader layout="HOTEL" id={layoutId} /> <wink-lookup /></main>Svelte 5 (runes syntax)
Ενότητα με τίτλο «Svelte 5 (runes syntax)»<script lang="ts"> import { onMount } from 'svelte'; import { load } from '@wink/elements';
let { layoutId }: { layoutId: string } = $props();
onMount(() => { load({ clientId: import.meta.env.PUBLIC_WINK_CLIENT_ID }); });</script>
<wink-content-loader layout="HOTEL" id={layoutId} />Μεταβλητές περιβάλλοντος
Ενότητα με τίτλο «Μεταβλητές περιβάλλοντος»Το SvelteKit εκθέτει μόνο τις μεταβλητές που ξεκινούν με PUBLIC_ στον browser:
PUBLIC_WINK_CLIENT_ID=your-client-id<script> import { browser } from '$app/environment';</script>
{#if browser} <wink-content-loader layout="HOTEL" id="YOUR_LAYOUT_ID" />{/if}Καθαρό Svelte (Vite, χωρίς SvelteKit)
Ενότητα με τίτλο «Καθαρό Svelte (Vite, χωρίς SvelteKit)»<script> import { onMount } from 'svelte'; import { load } from '@wink/elements';
onMount(() => { load({ clientId: import.meta.env.VITE_WINK_CLIENT_ID }); });</script>
<wink-content-loader layout="HOTEL" id="YOUR_LAYOUT_ID" />