// Rezervačný formulár — nahradzuje checkout / košík v chovnom prototype. (function () { if (typeof React === "undefined") return; var DS = window.VElaStvNajmanDesignSystem_bc3fc2; var Button = DS.Button; var Input = DS.Input; var Icon = window.VNIcon; function Err({ msg }) { if (!msg) return null; return ( {msg} ); } function Rezervace({ go, preset, presetQty }) { var initial = preset && typeof preset === "object" ? preset : null; var initTyp = initial && initial._typ ? initial._typ : initial && initial.cat === "oddelky" ? "oddelek" : "matka"; var initSlug = initial && (initial._slug || initial.id) ? (initial._slug || initial.id) : ""; var _s = React.useState({ jmeno: "", email: "", telefon: "", typ: initTyp || "", polozkaSlug: initSlug, pocetKusu: String(presetQty || 1), preferovanyTermin: "", poznamka: "", gdprSouhlas: false, }); var form = _s[0]; var setForm = _s[1]; var _e = React.useState({}); var errors = _e[0]; var setErrors = _e[1]; var _st = React.useState("idle"); var status = _st[0]; var setStatus = _st[1]; var _m = React.useState(""); var successMsg = _m[0]; var setSuccessMsg = _m[1]; var shop = window.SHOP_DATA || {}; var open = shop.rezervaceOtevrena !== false; function productsForTyp(typ) { return (shop.products || []).filter(function (p) { if (!typ) return false; return p._typ === typ && p.stock !== "out"; }); } function setField(key, value) { setForm(function (prev) { var next = Object.assign({}, prev, {}); next[key] = value; if (key === "typ") next.polozkaSlug = ""; return next; }); setErrors(function (prev) { if (!prev[key]) return prev; var n = Object.assign({}, prev); delete n[key]; return n; }); } function onSubmit(e) { e.preventDefault(); setErrors({}); var parsed = window.__validateRezervace(form); if (!parsed.ok) { setErrors(parsed.errors); setStatus("error"); return; } setStatus("loading"); fetch("/api/cms/rezervace", { method: "POST", headers: { "Content-Type": "application/json", Accept: "application/json" }, body: JSON.stringify(parsed.data), }) .then(function (res) { return res.json().then(function (data) { return { res: res, data: data }; }); }) .then(function (_ref) { var res = _ref.res; var data = _ref.data; if (!res.ok) { setErrors(data.errors || { form: data.error || "Rezervaci se nepodařilo odeslat." }); setStatus("error"); return; } setSuccessMsg(data.message || "Rezervace byla přijata. Ozveme se vám s potvrzením."); setStatus("success"); }) .catch(function () { setErrors({ form: "Nepodařilo se spojit se serverem. Zkuste to prosím později." }); setStatus("error"); }); } if (!open) { return (

Rezervace

Příjem rezervací je momentálně uzavřen.

); } if (status === "success") { return (

Rezervace odeslána

{successMsg}

); } var produkty = productsForTyp(form.typ); return (

Rezervace matky nebo oddělku

Vyplňte formulář pro předběžnou rezervaci. Ozveme se vám s potvrzením a dalšími informacemi k převzetí.

{errors.form && (

{errors.form}

)}