feat: add error messages to forms
This commit is contained in:
parent
3b59273c12
commit
709c97acfb
|
@ -26,7 +26,7 @@ const backendHost = import.meta.env.PUBLIC_BACKEND_HOST;
|
||||||
hx-post=`${backendHost}/api/blog/comments`
|
hx-post=`${backendHost}/api/blog/comments`
|
||||||
hx-target="#comments-container"
|
hx-target="#comments-container"
|
||||||
hx-swap="afterbegin"
|
hx-swap="afterbegin"
|
||||||
hx-on::after-request="document.getElementById('no-comments-text')?.remove();this.reset()">
|
hx-on:htmx:after-request="document.getElementById('no-comments-text')?.remove();this.reset()">
|
||||||
<div class="p-1 flex flex-col flex-end items-end gap-3">
|
<div class="p-1 flex flex-col flex-end items-end gap-3">
|
||||||
<textarea
|
<textarea
|
||||||
class="textarea py-2 px-3 w-full box-border"
|
class="textarea py-2 px-3 w-full box-border"
|
||||||
|
@ -46,8 +46,45 @@ const backendHost = import.meta.env.PUBLIC_BACKEND_HOST;
|
||||||
>Yorum Yap</button
|
>Yorum Yap</button
|
||||||
>
|
>
|
||||||
</div>
|
</div>
|
||||||
|
<div id="comment-form-error-container" class="mt-4">
|
||||||
|
<p id="comment-form-error-text" class="text-red-600"></p>
|
||||||
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
function clearNoCommentText() {}
|
function showError(errorString: string) {
|
||||||
|
const errorTextElement = document.getElementById("comment-form-error-text");
|
||||||
|
|
||||||
|
if (errorTextElement) {
|
||||||
|
errorTextElement.innerText = errorString;
|
||||||
|
}
|
||||||
|
|
||||||
|
setTimeout(() => {
|
||||||
|
if (errorTextElement) {
|
||||||
|
errorTextElement.innerText = "";
|
||||||
|
}
|
||||||
|
}, 5000);
|
||||||
|
}
|
||||||
|
|
||||||
|
const formElement = document.getElementById("comment-form");
|
||||||
|
|
||||||
|
if (formElement) {
|
||||||
|
formElement.addEventListener(
|
||||||
|
"htmx:sendError" as keyof HTMLElementEventMap,
|
||||||
|
() => {
|
||||||
|
showError(
|
||||||
|
"Sunucuya ulaşılamadığı için yorumunuz kaydedilemedi, biraz bekledikten sonra tekrar deneyebilirsiniz.",
|
||||||
|
);
|
||||||
|
},
|
||||||
|
);
|
||||||
|
|
||||||
|
formElement.addEventListener(
|
||||||
|
"htmx:responseError" as keyof HTMLElementEventMap,
|
||||||
|
() => {
|
||||||
|
showError(
|
||||||
|
"Suncudan kaynaklı bir hatadan dolayı yorumunuz kaydedilemedi, biraz bekledikten sonra tekrar deneyebilirsiniz.",
|
||||||
|
);
|
||||||
|
},
|
||||||
|
);
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
|
@ -15,6 +15,7 @@ const backendHost = import.meta.env.PUBLIC_BACKEND_HOST;
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<form
|
<form
|
||||||
|
id="emoji-reaction-form"
|
||||||
hx-post=`${backendHost}/api/blog/forms/emoji`
|
hx-post=`${backendHost}/api/blog/forms/emoji`
|
||||||
hx-target="#reaction-buttons"
|
hx-target="#reaction-buttons"
|
||||||
hx-trigger="submit delay:0.5s">
|
hx-trigger="submit delay:0.5s">
|
||||||
|
@ -45,4 +46,48 @@ const backendHost = import.meta.env.PUBLIC_BACKEND_HOST;
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div id="emoji-form-error-container" class="mt-4">
|
||||||
|
<p id="emoji-form-error-text" class="text-red-600"></p>
|
||||||
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
function showError(errorString: string) {
|
||||||
|
const errorTextElement = document.getElementById("emoji-form-error-text");
|
||||||
|
|
||||||
|
if (errorTextElement) {
|
||||||
|
errorTextElement.innerText = errorString;
|
||||||
|
}
|
||||||
|
|
||||||
|
setTimeout(() => {
|
||||||
|
if (errorTextElement) {
|
||||||
|
errorTextElement.innerText = "";
|
||||||
|
}
|
||||||
|
}, 5000);
|
||||||
|
}
|
||||||
|
|
||||||
|
const formElement = document.getElementById("emoji-reaction-form");
|
||||||
|
|
||||||
|
if (formElement) {
|
||||||
|
formElement.addEventListener(
|
||||||
|
"htmx:sendError" as keyof HTMLElementEventMap,
|
||||||
|
(event) => {
|
||||||
|
// @ts-ignore detail attribute is added by htmx
|
||||||
|
if (event.detail.elt.id != "reaction-buttons") {
|
||||||
|
showError(
|
||||||
|
"Sunucuya ulaşılamadığı için tepkiniz kaydedilemedi, biraz bekledikten sonra tekrar deneyebilirsiniz.",
|
||||||
|
);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
);
|
||||||
|
|
||||||
|
formElement.addEventListener(
|
||||||
|
"htmx:responseError" as keyof HTMLElementEventMap,
|
||||||
|
() => {
|
||||||
|
showError(
|
||||||
|
"Sunucudan kaynaklanan bir hatadan dolayı tepkiniz kaydedilemedi, biraz bekledikten sonra tekrar deneyebilirsiniz.",
|
||||||
|
);
|
||||||
|
},
|
||||||
|
);
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
Loading…
Reference in New Issue
Block a user