2023-11-08 00:46:14 +08:00
|
|
|
import { useSelector, useDispatch } from 'react-redux'
|
2024-04-29 17:29:20 +08:00
|
|
|
import iconData from '../public/icons.json'
|
2023-11-08 00:46:14 +08:00
|
|
|
import { useEffect, useRef, useState } from 'react';
|
|
|
|
|
|
|
|
export const IconList = function () {
|
|
|
|
const [icons, setIcons] = useState(Object.keys(iconData))
|
|
|
|
const query = useSelector(state => state.search.query)
|
|
|
|
const showName = useSelector(state => state.display.showName)
|
|
|
|
|
|
|
|
useEffect(() => {
|
|
|
|
if (query == '') {
|
|
|
|
setIcons(Object.keys(iconData))
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
const keywords = query.toLowerCase().split(' ').filter(word => (word))
|
|
|
|
let filtered = [];
|
|
|
|
for (const filename in iconData) {
|
2023-11-13 03:44:33 +08:00
|
|
|
const matched = keywords.filter(keyword => {
|
|
|
|
for (const tag of iconData[filename]) {
|
2023-11-08 00:46:14 +08:00
|
|
|
if (tag.indexOf(keyword.toLowerCase()) != -1) return true
|
|
|
|
}
|
|
|
|
})
|
|
|
|
|
2023-11-13 03:44:33 +08:00
|
|
|
if (matched.length == keywords.length) filtered.push(filename)
|
2023-11-08 00:46:14 +08:00
|
|
|
}
|
2023-11-14 02:58:06 +08:00
|
|
|
// console.log(filtered)
|
2023-11-08 00:46:14 +08:00
|
|
|
|
|
|
|
setIcons(filtered)
|
|
|
|
}, [query])
|
|
|
|
|
|
|
|
function launchDownload (filename) {
|
2024-04-29 17:29:20 +08:00
|
|
|
location.href = `https://sqkhor.com/pixel-icons/${filename.replace('.svg', '')}`
|
|
|
|
// window.open(`download.php?icon=${filename}`)
|
2023-11-08 00:46:14 +08:00
|
|
|
}
|
|
|
|
|
2023-12-05 12:48:05 +08:00
|
|
|
if (icons.length == 0) {
|
|
|
|
return (
|
|
|
|
<div className="no-result">
|
2023-12-06 16:12:38 +08:00
|
|
|
No icon found for<br />"{query.trim().length > 24 ? query.trim().substring(0,24) + '...' : query.trim()}"
|
2023-12-05 12:48:05 +08:00
|
|
|
</div>
|
|
|
|
)
|
|
|
|
}
|
|
|
|
|
2023-11-08 00:46:14 +08:00
|
|
|
return (
|
|
|
|
<ul className={ `icon-list ${ showName ? 'show-name' : ''}` }>
|
|
|
|
{ icons.map( (filename, index) => (
|
2024-04-29 17:29:20 +08:00
|
|
|
<li key={ index }>
|
|
|
|
<a href={`https://sqkhor.com/pixel-icons/${filename.replace('.svg', '')}`}><img className='icon' src={ `./icons/${filename}` } /></a>
|
|
|
|
<div className='name'>{ showName ? <a href={`https://sqkhor.com/pixel-icons/${filename.replace('.svg', '')}`}>{filename.replace('.svg', '')}</a> : '' }</div>
|
2023-11-08 00:46:14 +08:00
|
|
|
</li>
|
|
|
|
) ) }
|
|
|
|
</ul>
|
|
|
|
)
|
|
|
|
};
|