feat(frontend): tie-break category-name tag sort by tag name
Mirror the server's secondary sort in the client-side sortTags (used for a file's assigned tags) so the assigned and available lists agree. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -54,5 +54,11 @@ function tagSortKey(t: Tag, field: TagSortField): string {
|
|||||||
*/
|
*/
|
||||||
export function sortTags(tags: Tag[], { sort, order }: SortState<TagSortField>): Tag[] {
|
export function sortTags(tags: Tag[], { sort, order }: SortState<TagSortField>): Tag[] {
|
||||||
const dir = order === 'asc' ? 1 : -1;
|
const dir = order === 'asc' ? 1 : -1;
|
||||||
return [...tags].sort((a, b) => dir * tagSortKey(a, sort).localeCompare(tagSortKey(b, sort)));
|
return [...tags].sort((a, b) => {
|
||||||
|
const primary = dir * tagSortKey(a, sort).localeCompare(tagSortKey(b, sort));
|
||||||
|
if (primary !== 0 || sort !== 'category_name') return primary;
|
||||||
|
// Same category: break the tie by the tag's own name (same direction), so
|
||||||
|
// tags are grouped by category then alphabetical — matching the server.
|
||||||
|
return dir * (a.name ?? '').localeCompare(b.name ?? '');
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user