mirror of https://github.com/cocosolos/ixion.git
Hide URL input field when loss of focus
This commit is contained in:
parent
1bbd4569a8
commit
ae4a3d9954
|
|
@ -59,11 +59,12 @@ export default function AddServer({ servers, setServers }: AddServerProps) {
|
|||
setShowAddServer((prev) => !prev);
|
||||
};
|
||||
|
||||
const handleSubmit = async (event: React.KeyboardEvent<HTMLFormElement>) => {
|
||||
const handleSubmit = async (event: React.FormEvent<HTMLFormElement>) => {
|
||||
event.preventDefault();
|
||||
if (inputRef.current) {
|
||||
const inputText = inputRef.current.value;
|
||||
setIsLoading(true);
|
||||
try {
|
||||
const response = await postData(inputText);
|
||||
if (response.success) {
|
||||
showAlert({
|
||||
|
|
@ -74,18 +75,26 @@ export default function AddServer({ servers, setServers }: AddServerProps) {
|
|||
navigate(`/server/${encodeURIComponent(response.data.url)}`);
|
||||
setServers([response.data, ...servers]);
|
||||
}
|
||||
if (inputRef.current) {
|
||||
inputRef.current.value = '';
|
||||
toggleShowAddServer();
|
||||
}
|
||||
inputRef.current.value = '';
|
||||
} else {
|
||||
showAlert({
|
||||
message: response.message || 'Failed to send data to backend.',
|
||||
severity: 'error',
|
||||
});
|
||||
setTimeout(() => {
|
||||
inputRef.current?.focus();
|
||||
}, 0);
|
||||
}
|
||||
} catch (error) {
|
||||
showAlert({
|
||||
message: 'An error occurred during submission.',
|
||||
severity: 'error',
|
||||
});
|
||||
} finally {
|
||||
setIsLoading(false);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
const handleKeyUp = async (event: React.KeyboardEvent<HTMLInputElement>) => {
|
||||
|
|
@ -93,7 +102,7 @@ export default function AddServer({ servers, setServers }: AddServerProps) {
|
|||
case 'Escape': {
|
||||
if (inputRef.current) {
|
||||
if (inputRef.current.value === '') {
|
||||
toggleShowAddServer();
|
||||
inputRef.current.blur();
|
||||
} else {
|
||||
inputRef.current.value = '';
|
||||
}
|
||||
|
|
@ -104,6 +113,12 @@ export default function AddServer({ servers, setServers }: AddServerProps) {
|
|||
}
|
||||
};
|
||||
|
||||
const handleBlur = () => {
|
||||
if (!isLoading && inputRef.current && inputRef.current.value === '') {
|
||||
toggleShowAddServer();
|
||||
}
|
||||
};
|
||||
|
||||
return (
|
||||
<>
|
||||
<Box ref={containerRef} className="overflow-hidden pl-4">
|
||||
|
|
@ -123,6 +138,7 @@ export default function AddServer({ servers, setServers }: AddServerProps) {
|
|||
'aria-label': 'add-server',
|
||||
}}
|
||||
onKeyUp={handleKeyUp}
|
||||
onBlur={handleBlur}
|
||||
disabled={isLoading}
|
||||
endAdornment={
|
||||
isLoading && (
|
||||
|
|
|
|||
Loading…
Reference in New Issue