Browse Source

#103

feature/103
みてるぞ 1 week ago
parent
commit
ad81037a77
2 changed files with 21 additions and 12 deletions
  1. +16
    -8
      frontend/src/components/PostFormTagsArea.tsx
  2. +5
    -4
      frontend/src/lib/utils.ts

+ 16
- 8
frontend/src/components/PostFormTagsArea.tsx View File

@@ -38,6 +38,7 @@ export default (({ tags, setTags }: Props) => {
const ref = useRef<HTMLTextAreaElement> (null)

const [bounds, setBounds] = useState<{ start: number; end: number }> ({ start: 0, end: 0 })
const [focused, setFocused] = useState (false)
const [suggestions, setSuggestions] = useState<Tag[]> ([])
const [suggestionsVsbl, setSuggestionsVsbl] = useState (false)

@@ -70,7 +71,7 @@ export default (({ tags, setTags }: Props) => {
}

return (
<div>
<div className="relative w-full">
<Label>タグ</Label>
<TextArea
ref={ref}
@@ -80,12 +81,19 @@ export default (({ tags, setTags }: Props) => {
const pos = (ev.target as HTMLTextAreaElement).selectionStart
await recompute (pos)
}}
onBlur={() => setSuggestionsVsbl (false)}/>
<TagSearchBox
suggestions={suggestionsVsbl && suggestions.length > 0
? suggestions
: [] as Tag[]}
activeIndex={-1}
onSelect={handleTagSelect}/>
onFocus={() => {
setFocused (true)
}}
onBlur={() => {
setFocused (false)
setSuggestionsVsbl (false)
}}/>
{focused && (
<TagSearchBox
suggestions={suggestionsVsbl && suggestions.length > 0
? suggestions
: [] as Tag[]}
activeIndex={-1}
onSelect={handleTagSelect}/>)}
</div>)
}) satisfies FC<Props>

+ 5
- 4
frontend/src/lib/utils.ts View File

@@ -1,6 +1,7 @@
import { clsx, type ClassValue } from 'clsx'
import { clsx } from 'clsx'
import { twMerge } from 'tailwind-merge'

export function cn (...inputs: ClassValue[]) {
return twMerge(clsx(...inputs))
}
import type { ClassValue } from 'clsx'


export const cn = (...inputs: ClassValue[]) => twMerge (clsx (...inputs))

Loading…
Cancel
Save