diff --git a/packages/core/src/client/webcomponents/components/dock/Dock.stories.ts b/packages/core/src/client/webcomponents/components/dock/Dock.stories.ts index 3b65d3054..e7779be2f 100644 --- a/packages/core/src/client/webcomponents/components/dock/Dock.stories.ts +++ b/packages/core/src/client/webcomponents/components/dock/Dock.stories.ts @@ -139,6 +139,12 @@ export const HigherCapacity: Story = { args: { maxVisibleItems: 9 }, } +/** `maxVisibleItems: 8` — exactly one entry overflows, so it renders inline instead of behind the overflow button. */ +export const SingleOverflowItem: Story = { + ...floatStory({ entries: overflowEntries, panel: { position: 'bottom', left: 50, top: 100, inactiveTimeout: -1 } }), + args: { maxVisibleItems: 8 }, +} + /** `glowSize: 280`, `glowBlur: 90` — a larger, softer ambient glow. */ export const LargeGlow: Story = { ...floatStory({ entries: categorizedEntries, panel: { position: 'bottom', left: 50, top: 100, inactiveTimeout: -1 } }), diff --git a/packages/core/src/client/webcomponents/components/dock/Dock.vue b/packages/core/src/client/webcomponents/components/dock/Dock.vue index 5935b1747..5b6997deb 100644 --- a/packages/core/src/client/webcomponents/components/dock/Dock.vue +++ b/packages/core/src/client/webcomponents/components/dock/Dock.vue @@ -98,6 +98,8 @@ const splitEntries = computed(() => { return docksSplitGroupsWithCapacity(groupedEntries.value, layout.value.maxVisibleItems) }) +const overflowCount = computed(() => splitEntries.value.overflow.reduce((acc, [, items]) => acc + items.length, 0)) + const selectedEntry = computed(() => { return context.docks.selected }) @@ -311,7 +313,17 @@ onMounted(() => { @select="(e) => context.docks.switchEntry(e?.id)" /> -