@paroicms/contact-form-plugin 0.33.20 → 0.33.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1 +1,2 @@
|
|
|
1
|
-
.PaForm{
|
|
1
|
+
.PaForm{max-width:600px;margin-left:auto;margin-right:auto;position:relative}.PaForm *{box-sizing:border-box}.PaForm-fields{flex-direction:column;gap:20px;display:flex}.PaForm-captcha,.PaForm-action,.PaForm-error{justify-content:center;margin-top:20px;display:flex}.PaForm-error{background-color:#ebb;border:1px solid #d49e9e;padding:25px}.PaForm-button:disabled{cursor:not-allowed}.PaForm-button.inProgress{pointer-events:none;position:relative;padding-right:40px!important}.PaForm-button.inProgress:before{box-sizing:border-box;content:"";border:6px solid var(--paInteractiveColor,#888);border-top-color:#0000;border-bottom-color:#0000;border-radius:50%;width:26px;height:26px;animation:2s linear infinite paFormSpin;display:block;position:absolute;top:calc(50% - 13px);right:6px}.PaForm-ended{text-align:center;background-color:#fff;flex-direction:column;justify-content:center;width:100%;padding:20px;display:flex;position:absolute;inset:0}.PaForm-message{font-size:18px;line-height:1.5}@keyframes paFormSpin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.PaField{flex-direction:column;gap:5px;display:flex}.PaField-label{color:#888}.PaField-input{padding:8px;font-size:16px}
|
|
2
|
+
/*$vite$:1*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{createComponent as e,effect as t,insert as n,render as r,setAttribute as i,template as a}from"https://cdn.jsdelivr.net/npm/solid-js@1.9.12/web/+esm";import{Show as o,createMemo as s,createSignal as c,onCleanup as l,onMount as u}from"https://cdn.jsdelivr.net/npm/solid-js@1.9.12/+esm";var d=Object.keys({en:{en:"English",fr:"French",es:"Spanish",de:"German",it:"Italian",pt:"Portuguese"},fr:{en:"Anglais",fr:"Français",es:"Espagnol",de:"Allemand",it:"Italien",pt:"Portugais"},es:{en:"Inglés",fr:"Francés",es:"Español",de:"Alemán",it:"Italiano",pt:"Portugués"},de:{en:"Englisch",fr:"Französisch",es:"Spanisch",de:"Deutsch",it:"Italienisch",pt:"Portugiesisch"},it:{en:"Inglese",fr:"Francese",es:"Spagnolo",de:"Tedesco",it:"Italiano",pt:"Portoghese"},pt:{en:"Inglês",fr:"Francês",es:"Espanhol",de:"Alemão",it:"Italiano",pt:"Português"}});function f(e,{pluginLanguages:t,siteLanguages:n=[]}){return t.includes(e)||d.includes(e)&&t.includes(e)?e:n.find(e=>d.includes(e)&&t.includes(e))||(t.includes("en")?"en":t[0]??"en")}var p=e=>e!=null&&(e=Object.getPrototypeOf(e),e===Array.prototype||e===Object.prototype);function m(e,t,n){for(let[r,i]of Object.entries(t)){let t=`${n}.${r}`;e[t]=i,p(i)&&m(e,i,t)}}function h(e){let t={...e};for(let[n,r]of Object.entries(e))p(r)&&m(t,r,n);return t}var g=(e,t)=>{if(t)for(let[n,r]of Object.entries(t))e=e.replace(RegExp(`{{\\s*${n}\\s*}}`,"g"),r);return e},_=e=>e;function v(e,t=_){return(n,...r)=>{n[0]==="."&&(n=n.slice(1));let i=e()?.[n];switch(typeof i){case"function":return i(...r);case"string":return t(i,r[0]);default:return i}}}var y={en:{name:"Name",email:"Email",subject:"Subject",message:"Message",send:"Send",emailPlaceholder:"johndoe@gmail.com",namePlaceholder:"John Doe",subjectPlaceholder:"The subject of your message",messagePlaceholder:"Enter your message here…",unexpectedErrorMessage:"Unexpected error, the message could not be sent.",returnHome:"Return Home",successMessage:"Your message has been sent. If there is a response, it will be sent to the address:"},fr:{name:"Nom",email:"Courriel",subject:"Sujet",message:"Message",send:"Envoyer",emailPlaceholder:"johndoe@gmail.com",namePlaceholder:"John Doe",subjectPlaceholder:"Le sujet de votre message",messagePlaceholder:"Saisissez votre message…",unexpectedErrorMessage:"Erreur inattendue, le message n'a pas pu être envoyé.",returnHome:"Retourner à l'accueil",successMessage:"Votre message a été envoyé. S'il y a une réponse, elle sera envoyée à l'adresse :"},es:{name:"Nombre",email:"Email",subject:"Asunto",message:"Mensaje",send:"Enviar",emailPlaceholder:"johndoe@gmail.com",namePlaceholder:"John Doe",subjectPlaceholder:"El asunto de su mensaje",messagePlaceholder:"Ingrese su mensaje aquí…",unexpectedErrorMessage:"Error inesperado, no se pudo enviar el mensaje.",returnHome:"Volver al Inicio",successMessage:"Su mensaje ha sido enviado. Si hay una respuesta, será enviada a la dirección:"},de:{name:"Name",email:"E-Mail",subject:"Betreff",message:"Nachricht",send:"Senden",emailPlaceholder:"johndoe@gmail.com",namePlaceholder:"John Doe",subjectPlaceholder:"Der Betreff Ihrer Nachricht",messagePlaceholder:"Geben Sie hier Ihre Nachricht ein…",unexpectedErrorMessage:"Unerwarteter Fehler, die Nachricht konnte nicht gesendet werden.",returnHome:"Zur Startseite zurückkehren",successMessage:"Ihre Nachricht wurde gesendet. Falls es eine Antwort gibt, wird sie an diese Adresse gesendet:"},it:{name:"Nome",email:"Email",subject:"Oggetto",message:"Messaggio",send:"Invia",emailPlaceholder:"johndoe@gmail.com",namePlaceholder:"John Doe",subjectPlaceholder:"L'oggetto del tuo messaggio",messagePlaceholder:"Inserisci qui il tuo messaggio…",unexpectedErrorMessage:"Errore imprevisto, il messaggio non è stato inviato.",returnHome:"Torna alla Home",successMessage:"Il tuo messaggio è stato inviato. Se c'è una risposta, sarà inviata all'indirizzo:"},pt:{name:"Nome",email:"Email",subject:"Assunto",message:"Mensagem",send:"Enviar",emailPlaceholder:"johndoe@gmail.com",namePlaceholder:"John Doe",subjectPlaceholder:"O assunto da sua mensagem",messagePlaceholder:"Digite sua mensagem aqui…",unexpectedErrorMessage:"Erro inesperado, a mensagem não pôde ser enviada.",returnHome:"Voltar ao Início",successMessage:"Sua mensagem foi enviada. Se houver uma resposta, ela será enviada para o endereço:"}};function b(e,t){return{t:v(s(()=>h(y[f(e,{pluginLanguages:Object.keys(y),siteLanguages:t})])),g)}}var x="/api/plugin/contact-form-plugin";async function S(e,t,n){n(!0);try{let n=await C(e);return t.reset(),n}finally{n(!1)}}async function C(e){let t=await fetch(x,{headers:{"Content-Type":"application/json"},body:JSON.stringify(e),method:"POST"});if(t.status!==200){let e=await t.text();throw Error(`Unexpected error: ${e}`)}return await t.json()}var w=a("<div class=PaForm-error>"),T=a('<div class=PaForm-ended><div class=PaForm-message><p> <i></i></p></div><div class=PaForm-action><a class="PaForm-button PaButton">'),E=a('<form class=PaForm><div class=PaForm-fields><label class=PaField><span class=PaField-label></span><input class=PaField-input type=text name=name required></label><label class=PaField><span class=PaField-label></span><input class=PaField-input type=email name=email required></label><label class=PaField><span class=PaField-label></span><textarea class=PaField-input rows=5 name=message required></textarea></label></div><div class=PaForm-action><button class="PaForm-button PaButton"type=submit>'),D=a("<div class=PaForm-captcha><div class=g-recaptcha data-callback=onRecaptchaSubmitted data-expired-callback=onRecaptchaExpired>");function O({googleRecaptchaSiteKey:r,language:a,homeUrl:s}){let[d,f]=c(""),[p,m]=c(""),[h,g]=c(""),[_,v]=c(),[y,x]=c(!r),[C,O]=c(),[k,A]=c(""),[j,M]=c(!1),{t:N}=b(a),P=async e=>{try{if(e.preventDefault(),!y()||!F)throw Error("Recaptcha error");let t=await S({language:a,name:d(),message:h(),email:p(),gRecaptchaResponse:_()},F,M);t.success?O(!0):(O(!1),A(t.message??N("unexpectedErrorMessage")))}catch{O(!1),A(N("unexpectedErrorMessage"))}},F=(()=>{var a=E(),c=a.firstChild,l=c.firstChild,u=l.firstChild,_=u.nextSibling,v=l.nextSibling,b=v.firstChild,x=b.nextSibling,S=v.nextSibling.firstChild,O=S.nextSibling,A=c.nextSibling,M=A.firstChild;return a.addEventListener("submit",P),n(u,()=>N("name")),_.addEventListener("change",e=>f(e.currentTarget.value)),n(b,()=>N("email")),x.addEventListener("change",e=>{m(e.currentTarget.value)}),n(S,()=>N("message")),O.addEventListener("change",e=>g(e.currentTarget.value)),n(a,r&&(()=>{var e=D(),t=e.firstChild;return i(t,"data-sitekey",r),e})(),A),n(a,e(o,{get when(){return C()===!1},get children(){var e=w();return n(e,k),e}}),A),n(M,()=>N("send")),n(a,e(o,{get when(){return C()===!0},get children(){var e=T(),t=e.firstChild,r=t.firstChild,a=r.firstChild,o=a.nextSibling,c=t.nextSibling.firstChild;return n(r,()=>N("successMessage"),a),n(o,p),i(c,"href",s),n(c,()=>N("returnHome")),e}}),null),t(e=>{var t=N("namePlaceholder"),n=N("emailPlaceholder"),r=N("messagePlaceholder"),a=!!j(),o=!y();return t!==e.e&&i(_,"placeholder",e.e=t),n!==e.t&&i(x,"placeholder",e.t=n),r!==e.a&&i(O,"placeholder",e.a=r),a!==e.o&&M.classList.toggle("inProgress",e.o=a),o!==e.i&&(M.disabled=e.i=o),e},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),t(()=>_.value=d()),t(()=>x.value=p()),t(()=>O.value=h()),a})();return u(()=>{r&&(window.onRecaptchaSubmitted=I,window.onRecaptchaExpired=L)}),l(()=>{r&&(window.onRecaptchaSubmitted=void 0,window.onRecaptchaExpired=void 0)}),F;function I(e){if(!e)return;x(!0);let t=F?.elements.namedItem("g-recaptcha-response");v(t.value)}function L(){x(!1)}}var k,[A]=document.getElementsByClassName("js-script-contact-form");if(A&&A instanceof HTMLScriptElement){if(!A.dataset.googleRecaptchaSiteKey)throw Error('missing "data-google-recaptcha-site-key" in ".js-script-contact-form" element');k=A.dataset.googleRecaptchaSiteKey}function j(t,{language:n}){if(!n)throw Error("Missing language");t.dataset.recaptchaKey&&console.warn('Remove "data-recaptcha-key" attribute, it is not needed anymore.');let i=t.dataset.homeUrl;if(!i)throw Error('Missing "data-home-url"');let a=document.createElement("script");a.setAttribute("src","https://www.google.com/recaptcha/api.js"),document.head.appendChild(a),r(()=>e(O,{googleRecaptchaSiteKey:k,language:n,homeUrl:i}),t)}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",M):M();function M(){let e=document.documentElement.lang,t=document.querySelector("[data-effect='paContactForm']");t&&j(t,{language:e})}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@paroicms/contact-form-plugin",
|
|
3
|
-
"version": "0.33.
|
|
3
|
+
"version": "0.33.22",
|
|
4
4
|
"description": "Contact form plugin for ParoiCMS",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"paroicms",
|
|
@@ -19,6 +19,7 @@
|
|
|
19
19
|
"main": "backend/dist/index.js",
|
|
20
20
|
"scripts": {
|
|
21
21
|
"build": "npm run build:backend && npm run build:frontend",
|
|
22
|
+
"build:ci": "npm run build",
|
|
22
23
|
"build:backend": "(cd backend && tsc)",
|
|
23
24
|
"build:backend:watch": "(cd backend && tsc --watch --preserveWatchOutput)",
|
|
24
25
|
"build:frontend": "(cd frontend && npm run build)",
|
|
@@ -26,7 +27,7 @@
|
|
|
26
27
|
"clear": "rimraf backend/dist/* frontend/dist/*"
|
|
27
28
|
},
|
|
28
29
|
"dependencies": {
|
|
29
|
-
"@paroicms/script-lib": "0.3.
|
|
30
|
+
"@paroicms/script-lib": "0.3.22",
|
|
30
31
|
"arktype": "~2.2.0"
|
|
31
32
|
},
|
|
32
33
|
"peerDependencies": {
|
|
@@ -34,11 +35,11 @@
|
|
|
34
35
|
"@paroicms/public-server-lib": "0"
|
|
35
36
|
},
|
|
36
37
|
"devDependencies": {
|
|
37
|
-
"@paroicms/public-anywhere-lib": "0.43.
|
|
38
|
-
"@paroicms/public-server-lib": "0.56.
|
|
39
|
-
"@types/node": "~24.
|
|
38
|
+
"@paroicms/public-anywhere-lib": "0.43.1",
|
|
39
|
+
"@paroicms/public-server-lib": "0.56.2",
|
|
40
|
+
"@types/node": "~24.12.2",
|
|
40
41
|
"rimraf": "~6.1.3",
|
|
41
|
-
"typescript": "~
|
|
42
|
+
"typescript": "~6.0.2"
|
|
42
43
|
},
|
|
43
44
|
"files": [
|
|
44
45
|
"backend/dist",
|