add route for search folders
"q": string, foldername to search "o": int, offset of search result
This commit is contained in:
@@ -1,10 +1,15 @@
|
|||||||
import { useEffect, useState } from "react";
|
import { useEffect, useState } from "react";
|
||||||
|
import { useNavigate } from "react-router-dom";
|
||||||
|
import { useQuery } from "./Common";
|
||||||
import FoldersTable from "./FoldersTable";
|
import FoldersTable from "./FoldersTable";
|
||||||
|
|
||||||
function SearchFolders() {
|
function SearchFolders() {
|
||||||
const [foldername, setFoldername] = useState("");
|
const navigator = useNavigate();
|
||||||
|
const query = useQuery();
|
||||||
|
const foldername = query.get("q") || "";
|
||||||
|
const [foldernameInput, setFoldernameInput] = useState(foldername);
|
||||||
const [folders, setFolders] = useState([]);
|
const [folders, setFolders] = useState([]);
|
||||||
const [offset, setOffset] = useState(0);
|
const offset = parseInt(query.get("o")) || 0;
|
||||||
const [isLoading, setIsLoading] = useState(false);
|
const [isLoading, setIsLoading] = useState(false);
|
||||||
const limit = 10;
|
const limit = 10;
|
||||||
|
|
||||||
@@ -35,7 +40,7 @@ function SearchFolders() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function nextPage() {
|
function nextPage() {
|
||||||
setOffset(offset + limit);
|
navigator(`/folders?q=${foldername}&o=${offset + limit}`);
|
||||||
}
|
}
|
||||||
|
|
||||||
function lastPage() {
|
function lastPage() {
|
||||||
@@ -43,29 +48,29 @@ function SearchFolders() {
|
|||||||
if (offsetValue < 0) {
|
if (offsetValue < 0) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
setOffset(offsetValue);
|
navigator(`/folders?q=${foldername}&o=${offsetValue}`);
|
||||||
}
|
}
|
||||||
|
|
||||||
useEffect(() => searchFolder(), [offset]); // eslint-disable-line react-hooks/exhaustive-deps
|
useEffect(() => searchFolder(), [offset, foldername]); // eslint-disable-line react-hooks/exhaustive-deps
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="page">
|
<div className="page">
|
||||||
<h3>Search Folders</h3>
|
<h3>Search Folders</h3>
|
||||||
<div className="search_toolbar">
|
<div className="search_toolbar">
|
||||||
<input
|
<input
|
||||||
onChange={(event) => setFoldername(event.target.value)}
|
onChange={(event) => setFoldernameInput(event.target.value)}
|
||||||
onKeyDown={(event) => {
|
onKeyDown={(event) => {
|
||||||
if (event.key === "Enter") {
|
if (event.key === "Enter") {
|
||||||
searchFolder();
|
navigator(`/folders?q=${foldernameInput}&o=0`);
|
||||||
}
|
}
|
||||||
}}
|
}}
|
||||||
type="text"
|
type="text"
|
||||||
placeholder="Enter folder name"
|
placeholder="Enter folder name"
|
||||||
|
value={foldernameInput}
|
||||||
/>
|
/>
|
||||||
<button
|
<button
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
setOffset(0);
|
navigator(`/folders?q=${foldernameInput}&o=0`);
|
||||||
searchFolder();
|
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
{isLoading ? "Loading..." : "Search"}
|
{isLoading ? "Loading..." : "Search"}
|
||||||
|
|||||||
Reference in New Issue
Block a user