Improved new article's id input error

This commit is contained in:
Florian Sylvain
2023-01-07 23:24:53 +01:00
parent a4fb809da4
commit 117df6914b
+18 -19
View File
@@ -9,12 +9,20 @@ const defaultData = `<h1>Bienvenue</h1><p>Vous &ecirc;tes en mode <em>&eacute;di
const title = ref('') const title = ref('')
const page = ref('') const page = ref('')
function createArticle() { function isIdValid(): boolean {
if (!isFormValid()) { const regex = /^[a-zA-Z0-9]+$/
alert("L'identifiant de l'article ne doit contenir que des caractères alphanumériques (aA-zZ, 1-9) !") return regex.test(title.value)
return; }
}
function isFormEmpty(): boolean {
return title.value === '' || page.value === ''
}
function isFormValid(): boolean {
return isIdValid() && !isFormEmpty()
}
function createArticle() {
const article: Article = { const article: Article = {
idName: title.value, idName: title.value,
date: new Date().getTime(), date: new Date().getTime(),
@@ -27,15 +35,6 @@ function createArticle() {
postArticle(article) postArticle(article)
router.push(`/articles/edit/${article.idName}`) router.push(`/articles/edit/${article.idName}`)
} }
const isFormEmpty: () => boolean = () => {
return title.value === '' || page.value === ''
}
function isFormValid(): boolean {
const regex = /^[a-zA-Z0-9]+$/
return regex.test(title.value)
}
</script> </script>
<template> <template>
@@ -43,11 +42,11 @@ function isFormValid(): boolean {
<h2>Créer un nouvel article</h2> <h2>Créer un nouvel article</h2>
<form @submit.prevent="createArticle()"> <form @submit.prevent="createArticle()">
<div class="inputs-group"> <div class="inputs-group">
<div class="label-input"> <div :class="`label-input${isIdValid() || title === '' ? '' : '-error'}`">
<label for="title">Identifiant de l'article</label> <label for="title">Identifiant de l'article</label>
<input id="title" name="title" placeholder="Identifiant de l'article" type="text" v-model="title"> <input id="title" name="title" placeholder="Identifiant de l'article" type="text" v-model="title">
<p>⚠️ Doit être unique et composé de caractères alphanumériques !</p> <p>⚠️ Doit être unique et composé de caractères alphanumériques, sans espaces !
<!-- TODO: Remplacer alerte pas ouf par passage du champ en erreur --> </p>
</div> </div>
<div class="label-input"> <div class="label-input">
<label for="page">Page</label> <label for="page">Page</label>
@@ -56,8 +55,8 @@ function isFormValid(): boolean {
</div> </div>
<div class="buttons-group"> <div class="buttons-group">
<RouterLink class="button-secondary" type="submit" to="/articles">Annuler</RouterLink> <RouterLink class="button-secondary" type="submit" to="/articles">Annuler</RouterLink>
<button :class="`button-${isFormEmpty() ? 'disabled' : 'primary'}`" type="submit" <button :class="`button-${!isFormValid() ? 'disabled' : 'primary'}`" type="submit"
:disabled="isFormEmpty()">Créer</button> :disabled="!isFormValid()">Créer</button>
</div> </div>
</form> </form>
</main> </main>