From 26f7bbb658c7efd2ac70df2360b8356f6d77fcfe Mon Sep 17 00:00:00 2001 From: James Garbutt <43081j@users.noreply.github.com> Date: Sun, 5 Apr 2026 21:53:53 +0100 Subject: [PATCH 1/5] feat: add new useVisibleItems composable This adds a new `useVisibleItems` composable and initially adopts it in the dependencies view of a package. In follow ups, we can adopt it in more pages to reduce duplicated logic. --- app/components/Package/Dependencies.vue | 44 +++++++++++++++---------- app/composables/useVisibleItems.ts | 25 ++++++++++++++ 2 files changed, 52 insertions(+), 17 deletions(-) create mode 100644 app/composables/useVisibleItems.ts diff --git a/app/components/Package/Dependencies.vue b/app/components/Package/Dependencies.vue index 7f3836214f..2bddda193a 100644 --- a/app/components/Package/Dependencies.vue +++ b/app/components/Package/Dependencies.vue @@ -37,11 +37,6 @@ function getDeprecatedDepInfo(depName: string) { return vulnTree.value.deprecatedPackages.find(p => p.name === depName && p.depth === 'direct') } -// Expanded state for each section -const depsExpanded = shallowRef(false) -const peerDepsExpanded = shallowRef(false) -const optionalDepsExpanded = shallowRef(false) - // Sort dependencies alphabetically const sortedDependencies = computed(() => { if (!props.dependencies) return [] @@ -89,6 +84,24 @@ function getDepVersionClass(dep: string) { return getVersionClass(undefined) } +const { + visibleItems: visibleDeps, + hasMore: hasMoreDeps, + expand: expandDeps, +} = useVisibleItems(sortedDependencies, 10) + +const { + visibleItems: visiblePeerDeps, + hasMore: hasMorePeerDeps, + expand: expandPeerDeps, +} = useVisibleItems(sortedPeerDependencies, 10) + +const { + visibleItems: visibleOptionalDeps, + hasMore: hasMoreOptionalDeps, + expand: expandOptionalDeps, +} = useVisibleItems(sortedOptionalDependencies, 10) + const numberFormatter = useNumberFormatter() @@ -110,7 +123,7 @@ const numberFormatter = useNumberFormatter() >