feat(gallery,tags): clear active filters
Two gaps where a filter couldn't be removed:
- Gallery: a tag_id filter (from clicking a tag) had no indicator or clear
control — only post_id did (PostInfoHeader). Add an "Tag: <name> ✕" chip
that clears the filter by dropping tag_id from the URL. New lightweight
GET /api/tags/<id> resolves the name; the store fetches it on filter set.
- Tags view: the kind chip-group used mandatory="false" — a STRING ("false"
is truthy in JS), which made the group mandatory so the active kind chip
couldn't be deselected. Fixed to :mandatory="false" so the filter clears.
Tests: GET /tags/<id> shape + 404; gallery store resolves filterTagName.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -50,6 +50,19 @@ describe('gallery store: tag/post filter exclusivity', () => {
|
||||
expect(scrollCall).not.toContain('tag_id=')
|
||||
})
|
||||
|
||||
it('setTagFilter resolves the tag name for the filter chip', async () => {
|
||||
const s = useGalleryStore()
|
||||
stubFetch((url) => {
|
||||
if (url.includes('/api/tags/7')) {
|
||||
return { status: 200, body: { id: 7, name: 'Asuka', kind: 'character' } }
|
||||
}
|
||||
return { status: 200, body: EMPTY } // scroll + timeline
|
||||
})
|
||||
s.setTagFilter(7)
|
||||
expect(s.filter.tag_id).toBe(7)
|
||||
await vi.waitFor(() => expect(s.filterTagName).toBe('Asuka'))
|
||||
})
|
||||
|
||||
it('loadInitial issues exactly one scroll request at the initial limit', async () => {
|
||||
const s = useGalleryStore()
|
||||
const urls = []
|
||||
|
||||
Reference in New Issue
Block a user