Browse Source

#68

feature/068
みてるぞ 2 weeks ago
parent
commit
6b519381b5
1 changed files with 20 additions and 5 deletions
  1. +20
    -5
      frontend/src/components/TagSearch.tsx

+ 20
- 5
frontend/src/components/TagSearch.tsx View File

@@ -54,8 +54,11 @@ export default (() => {
if (activeIndex < 0) if (activeIndex < 0)
break break
ev.preventDefault () ev.preventDefault ()
const selected = suggestions[activeIndex]
selected && handleTagSelect (selected)
{
const selected = suggestions[activeIndex]
if (selected)
handleTagSelect (selected)
}
break break


case 'Escape': case 'Escape':
@@ -65,14 +68,25 @@ export default (() => {
} }
if (ev.key === 'Enter' && (!(suggestionsVsbl) || activeIndex < 0)) if (ev.key === 'Enter' && (!(suggestionsVsbl) || activeIndex < 0))
{ {
navigate (`/posts?${ (new URLSearchParams ({ tags: search })).toString () }`)
const parts = search.split (' ')
const match = parts.map (t => t.toLowerCase ()).includes ('type:or') ? 'any' : 'all'
navigate (`/posts?${
(new URLSearchParams ({
tags: parts.map (t => t.toLowerCase ())
.filter (t => t !== 'type:or')
.join (' '),
match }))
.toString () }`)
setSuggestionsVsbl (false) setSuggestionsVsbl (false)
} }
} }


const handleTagSelect = (tag: Tag) => { const handleTagSelect = (tag: Tag) => {
const parts = search.split (' ') const parts = search.split (' ')
parts[parts.length - 1] = tag.name
parts[parts.length - 1] = (
(parts[parts.length - 1].slice(0, 4).toLowerCase () === 'not:')
? ('not:' + tag.name)
: tag.name)
setSearch (parts.join (' ') + ' ') setSearch (parts.join (' ') + ' ')
setSuggestions ([]) setSuggestions ([])
setActiveIndex (-1) setActiveIndex (-1)
@@ -80,7 +94,8 @@ export default (() => {


useEffect (() => { useEffect (() => {
const query = new URLSearchParams (location.search) const query = new URLSearchParams (location.search)
const tagsQuery = query.get ('tags') ?? ''
const anyFlg = query.get ('match') === 'any'
const tagsQuery = `${ query.get ('tags') ?? '' }${ anyFlg ? ' type:or' : '' }`
setSearch (tagsQuery) setSearch (tagsQuery)
}, [location.search]) }, [location.search])




Loading…
Cancel
Save