Added results indicator + More UI change
This commit is contained in:
parent
dada207cdf
commit
5b617c85e3
11
src/App.js
11
src/App.js
|
@ -8,15 +8,16 @@ function App() {
|
||||||
const [data, setData] = useState([]);
|
const [data, setData] = useState([]);
|
||||||
const [isAdding, setIsAdding] = useState(false);
|
const [isAdding, setIsAdding] = useState(false);
|
||||||
const [searchQuery, setSearchQuery] = useState('');
|
const [searchQuery, setSearchQuery] = useState('');
|
||||||
|
const [numberOfResults, setNumberOfResults] = useState(0);
|
||||||
|
|
||||||
function exitAdding() {
|
function exitAdding() {
|
||||||
setIsAdding(!isAdding)
|
setIsAdding(!isAdding);
|
||||||
}
|
}
|
||||||
|
|
||||||
function search(e) {
|
function search(e) {
|
||||||
setSearchQuery(e.target.value);
|
setSearchQuery(e.target.value);
|
||||||
}
|
}
|
||||||
|
// setNumberOfResults(filteredData.length);
|
||||||
const filteredData = data.filter((e) => {
|
const filteredData = data.filter((e) => {
|
||||||
return (e.name.toLowerCase().includes(searchQuery.toLowerCase()) || e.title.toLowerCase().includes(searchQuery.toLowerCase()) || e.tag.toLowerCase().includes(searchQuery.toLowerCase()))
|
return (e.name.toLowerCase().includes(searchQuery.toLowerCase()) || e.title.toLowerCase().includes(searchQuery.toLowerCase()) || e.tag.toLowerCase().includes(searchQuery.toLowerCase()))
|
||||||
});
|
});
|
||||||
|
@ -32,6 +33,10 @@ function App() {
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
fetchData();
|
fetchData();
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
setNumberOfResults(filteredData.length);
|
||||||
|
}, [filteredData]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="App">
|
<div className="App">
|
||||||
|
@ -39,7 +44,7 @@ function App() {
|
||||||
<input className="search" type="search" placeholder=" Search for Name / Title / Tag" onChange={search}/>
|
<input className="search" type="search" placeholder=" Search for Name / Title / Tag" onChange={search}/>
|
||||||
<button className="add-btn" onClick={() => setIsAdding(true)}></button>
|
<button className="add-btn" onClick={() => setIsAdding(true)}></button>
|
||||||
</div>
|
</div>
|
||||||
<p>hi</p>
|
<p className="results">{numberOfResults > 0 ? numberOfResults + ' Bookmarks found' : 'Nothing found.'}</p>
|
||||||
<List data={filteredData} reFetch={fetchData} />
|
<List data={filteredData} reFetch={fetchData} />
|
||||||
{isAdding ? <AddModal onExit={exitAdding} reFetch={fetchData} /> : null}
|
{isAdding ? <AddModal onExit={exitAdding} reFetch={fetchData} /> : null}
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -28,10 +28,10 @@ const List = ({data, reFetch}) => {
|
||||||
try {
|
try {
|
||||||
const url = new URL(e.link);
|
const url = new URL(e.link);
|
||||||
const favicon = 'http://www.google.com/s2/favicons?domain=' + url.hostname;
|
const favicon = 'http://www.google.com/s2/favicons?domain=' + url.hostname;
|
||||||
return <div className="list-row">
|
return <div key={i} className="list-row">
|
||||||
<div className="img-content-grp">
|
<div className="img-content-grp">
|
||||||
<img src={favicon} />
|
<img src={favicon} />
|
||||||
<div className="list-entity-content" key={i}>
|
<div className="list-entity-content">
|
||||||
<div className='row-name'><span className="num">{i + 1}.</span> {e.name}</div>
|
<div className='row-name'><span className="num">{i + 1}.</span> {e.name}</div>
|
||||||
<div>{e.title}</div>
|
<div>{e.title}</div>
|
||||||
<div><a href={e.link}>{url.hostname}</a></div>
|
<div><a href={e.link}>{url.hostname}</a></div>
|
||||||
|
|
|
@ -53,3 +53,8 @@
|
||||||
textarea:focus, input:focus{
|
textarea:focus, input:focus{
|
||||||
outline: none;
|
outline: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.results {
|
||||||
|
margin: 20px;
|
||||||
|
margin-left: 30px;
|
||||||
|
}
|
|
@ -1,11 +1,14 @@
|
||||||
.list {
|
.list {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
text-align: left;
|
text-align: left;
|
||||||
padding-top: 20px;
|
|
||||||
border-spacing: 10px 10px;
|
border-spacing: 10px 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.list img {
|
.list img {
|
||||||
|
pointer-events: none;
|
||||||
|
-moz-user-select: none;
|
||||||
|
-webkit-user-select: none;
|
||||||
|
user-select: none;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
filter: blur(3px);
|
filter: blur(3px);
|
||||||
margin: 20px;
|
margin: 20px;
|
||||||
|
@ -30,7 +33,7 @@
|
||||||
|
|
||||||
.list-entity-content {
|
.list-entity-content {
|
||||||
text-shadow: 1px 1px 2px black;
|
text-shadow: 1px 1px 2px black;
|
||||||
z-index: 1;
|
z-index: 0;
|
||||||
margin-left: 50px;
|
margin-left: 50px;
|
||||||
padding: 20px;
|
padding: 20px;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
|
|
Ŝarĝante…
Reference in New Issue