Preskočiť na obsah

Svelte (@frontmail/svelte)

Terminal window
npm install @frontmail/svelte

Vyžaduje Svelte 5. Funguje v SvelteKite (v prehliadači).

Vytvorte jednu inštanciu, napríklad v src/lib/frontmail.ts:

import { createFrontmail } from '@frontmail/svelte';
export const frontmail = createFrontmail({ publicKey: 'pk_4f2a…', blockHeadless: true });

Inštancia má send, sendForm, getStatus, reset a dva story: state ({ status, error, result } posledného odoslania) a status. Prvá vytvorená inštancia sa stane predvolenou pre action aj komponent.

<script>
import { frontmail } from '$lib/frontmail';
const { status } = frontmail;
</script>
<button onclick={() => frontmail.send('svc_01J9…', 'tpl_ping', { note: 'Ahoj' })}>Odoslať</button>
<p>{$status}</p>

Urobí z ľubovoľného formulára formulár Frontmailu:

<script>
import { frontmailForm } from '@frontmail/svelte';
let status = $state('idle');
</script>
<form
use:frontmailForm={{
serviceId: 'svc_01J9…',
templateId: 'tpl_contact',
turnstileSiteKey: 'YOUR_TURNSTILE_SITE_KEY',
onState: (s) => (status = s.status),
}}
>
<input name="name" required />
<input name="email" type="email" required />
<textarea name="message" required></textarea>
<button disabled={status === 'sending'}>Odoslať</button>
</form>

Parametre: serviceId, templateId, frontmail (inštancia), turnstileSiteKey, turnstileOptions, locale, sendOptions, resetOnSuccess (predvolene true), onSuccess, onError, onState. Formulár navyše dostane atribút data-status, ktorý môžete štýlovať.

locale (napr. 'de') pošle e-mail v zadanom jazyku šablóny (ako pole formulára fm_locale; pole fm_locale priamo vo formulári má prednosť). result.locale je použitý jazyk. <FrontmailForm> berie rovnaký prop locale a send / sendForm inštancie ho prijímajú ako options.locale.

turnstileSiteKey je site key vášho vlastného widgetu Turnstile (v dashboarde Zabezpečenie → Ochrana pred botmi (Turnstile)) – pozrite Cloudflare Turnstile. Ak šablóna CAPTCHA nevyžaduje, vynechajte ho.

<script>
import { FrontmailForm } from '@frontmail/svelte';
</script>
<FrontmailForm serviceId="svc_01J9…" templateId="tpl_contact" turnstileSiteKey="YOUR_TURNSTILE_SITE_KEY">
<input name="email" type="email" required />
<textarea name="message" required></textarea>
<button>Odoslať</button>
</FrontmailForm>

Ukážkový projekt: examples/svelte.