castopod/app/Views/_assets/modules/PublishMessageWarning.ts
Yassine Doghri 33d01b8d4f
fix(ux): allow for empty message upon episode publication and warn user on submit
- clarify distiction between the announcement post and the show notes
- change "note" occurences in UI by "post"
- show warning message explaining why the podcaster should fill the message area
- the podcaster
can choose to publish the episode with an empty message anyways
- redirect user to episode
dashboard with error message when episode publication pages are inaccessible instead of showing a
404 error
- add a cancel publication button in publish-edit form when episode is scheduled

closes #129
2021-06-23 13:34:59 +00:00

52 lines
1.5 KiB
TypeScript

const PublishMessageWarning = (): void => {
const publishForm: HTMLFormElement | null = document.querySelector(
"form[data-submit='validate-message']"
);
if (publishForm) {
const messageTextArea: HTMLTextAreaElement | null = publishForm.querySelector(
"[name='message']"
);
const submitButton: HTMLButtonElement | null = publishForm.querySelector(
"button[type='submit']"
);
const publishMessageWarning: HTMLDivElement | null = publishForm.querySelector(
"[id='publish-warning']"
);
if (
messageTextArea &&
submitButton &&
submitButton.dataset.btnTextWarning &&
submitButton.dataset.btnText &&
publishMessageWarning
) {
publishForm.addEventListener("submit", (event) => {
if (
messageTextArea.value === "" &&
publishMessageWarning.classList.contains("hidden")
) {
event.preventDefault();
publishMessageWarning.classList.remove("hidden");
messageTextArea.focus();
submitButton.innerText = submitButton.dataset
.btnTextWarning as string;
}
});
messageTextArea.addEventListener("input", () => {
if (
submitButton.innerText !== submitButton.dataset.btnText &&
messageTextArea.value !== ""
) {
publishMessageWarning.classList.add("hidden");
submitButton.innerText = submitButton.dataset.btnText as string;
}
});
}
}
};
export default PublishMessageWarning;