add: taken slug check
This commit is contained in:
parent
a33ee961fe
commit
d80368e6c2
5 changed files with 85 additions and 7 deletions
|
@ -137,3 +137,34 @@ globalThis.tab_preview = async () => {
|
|||
document.getElementById("editor_tab_button").classList.add("camo");
|
||||
document.getElementById("preview_tab_button").classList.remove("camo");
|
||||
};
|
||||
|
||||
let exists_timeout = null;
|
||||
globalThis.check_exists_input = (e) => {
|
||||
if (exists_timeout) {
|
||||
clearTimeout(exists_timeout);
|
||||
}
|
||||
|
||||
exists_timeout = setTimeout(async () => {
|
||||
if (e.target.value.length < 2 || e.target.value.length > 32) {
|
||||
e.target.setCustomValidity("");
|
||||
e.target.removeAttribute("data-invalid");
|
||||
e.target.reportValidity();
|
||||
return;
|
||||
}
|
||||
|
||||
const exists = (
|
||||
await (await fetch(`/api/v1/entries/${e.target.value}`)).json()
|
||||
).payload;
|
||||
|
||||
console.log(exists);
|
||||
if (exists) {
|
||||
e.target.setCustomValidity("Slug is already in use");
|
||||
e.target.setAttribute("data-invalid", "true");
|
||||
} else {
|
||||
e.target.setCustomValidity("");
|
||||
e.target.removeAttribute("data-invalid");
|
||||
}
|
||||
|
||||
e.target.reportValidity();
|
||||
}, 1000);
|
||||
};
|
||||
|
|
|
@ -158,7 +158,7 @@ video {
|
|||
|
||||
/* button */
|
||||
.button {
|
||||
--h: 35.2px;
|
||||
--h: 36px;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
|
@ -171,11 +171,11 @@ video {
|
|||
border: none;
|
||||
width: max-content;
|
||||
height: var(--h);
|
||||
min-height: var(--h);
|
||||
max-height: var(--h);
|
||||
line-height: var(--h);
|
||||
transition: background 0.15s;
|
||||
text-decoration: none !important;
|
||||
user-select: none;
|
||||
appearance: none;
|
||||
}
|
||||
|
||||
.button:hover {
|
||||
|
@ -193,17 +193,19 @@ video {
|
|||
|
||||
/* input */
|
||||
input {
|
||||
--h: 35.2px;
|
||||
--h: 36px;
|
||||
padding: var(--pad-2) var(--pad-4);
|
||||
background: var(--color-raised);
|
||||
color: var(--color-text);
|
||||
outline: none;
|
||||
border: none;
|
||||
width: max-content;
|
||||
transition: background 0.15s;
|
||||
transition:
|
||||
background 0.15s,
|
||||
border 0.15s;
|
||||
height: var(--h);
|
||||
min-height: var(--h);
|
||||
max-height: var(--h);
|
||||
line-height: var(--h);
|
||||
border-left: solid 0px transparent;
|
||||
}
|
||||
|
||||
input:focus {
|
||||
|
@ -212,6 +214,11 @@ input:focus {
|
|||
background: var(--color-super-raised);
|
||||
}
|
||||
|
||||
input:user-invalid,
|
||||
input[data-invalid] {
|
||||
border-left: inset 5px var(--color-red);
|
||||
}
|
||||
|
||||
/* typo */
|
||||
p {
|
||||
margin-bottom: var(--pad-4);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue