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)
break
ev.preventDefault ()
const selected = suggestions[activeIndex]
selected && handleTagSelect (selected)
{
const selected = suggestions[activeIndex]
if (selected)
handleTagSelect (selected)
}
break

case 'Escape':
@@ -65,14 +68,25 @@ export default (() => {
}
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)
}
}

const handleTagSelect = (tag: Tag) => {
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 (' ') + ' ')
setSuggestions ([])
setActiveIndex (-1)
@@ -80,7 +94,8 @@ export default (() => {

useEffect (() => {
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)
}, [location.search])



Loading…
Cancel
Save