-
-
+
}
diff --git a/src/app/components/versions/ChangelogList.tsx b/src/app/components/versions/ChangelogList.tsx
index 43d43599..83cf7248 100644
--- a/src/app/components/versions/ChangelogList.tsx
+++ b/src/app/components/versions/ChangelogList.tsx
@@ -1,18 +1,21 @@
+import type { ComponentChildren } from 'preact'
import { useMemo, useState } from 'preact/hooks'
import { useLocale } from '../../contexts/index.js'
import { useSearchParam, useTags } from '../../hooks/index.js'
import type { Change } from '../../services/index.js'
+import { Badge } from '../Badge.jsx'
import { Btn, TextInput } from '../index.js'
import { ChangelogEntry } from './ChangelogEntry.js'
-import { ChangelogTag } from './ChangelogTag.js'
const SEARCH_KEY = 'search'
interface Props {
changes: Change[] | undefined,
defaultOrder: 'asc' | 'desc',
+ limit?: number,
+ navigation?: ComponentChildren,
}
-export function ChangelogList({ changes, defaultOrder }: Props) {
+export function ChangelogList({ changes, defaultOrder, limit, navigation }: Props) {
const { locale } = useLocale()
const [search, setSearch] = useSearchParam(SEARCH_KEY)
@@ -25,7 +28,7 @@ export function ChangelogList({ changes, defaultOrder }: Props) {
if (!tags.every(tag => change.tags.includes(tag))) {
return false
}
- const content = change.tags.join(' ') + ' ' + change.content.toLowerCase()
+ const content = `${change.group} ${change.version} ${change.tags.join(' ')} ${change.content.toLowerCase()}`
return query.every(q => {
if (q.startsWith('!')) {
return q.length === 1 || !content.includes(q.slice(1))
@@ -41,22 +44,35 @@ export function ChangelogList({ changes, defaultOrder }: Props) {
return filteredChangelogs?.sort((a, b) => sort ? b.order - a.order : a.order - b.order)
}, [filteredChangelogs, sort])
+ const [limitActive, setLimitActive] = useState(true)
+
+ const limitedChangelogs = useMemo(() => {
+ if (!limitActive || (limit ?? -1) < 0) return sortedChangelogs
+ return sortedChangelogs?.slice(0, limit)
+ }, [sortedChangelogs, limitActive, limit, sort /* why is this necessary??? */])
+
+ const hiddenChanges = (sortedChangelogs?.length ?? 0) - (limitedChangelogs?.length ?? 0)
+
return <>
-
-
+ {navigation}
+ setSearch(v, true)} />
setSort(!sort)} />
- {tags.length > 0 &&