diff --git a/ui/src/components/ui/tabs/Tabs.vue b/ui/src/components/ui/tabs/Tabs.vue index 7505f12..69cb5aa 100644 --- a/ui/src/components/ui/tabs/Tabs.vue +++ b/ui/src/components/ui/tabs/Tabs.vue @@ -18,7 +18,7 @@ const forwarded = useForwardPropsEmits(delegatedProps, emits) data-slot="tabs" :data-orientation="forwarded.orientation || 'horizontal'" v-bind="forwarded" - :class="cn('gap-2 group/tabs flex data-horizontal:flex-col', props.class)" + :class="cn('gap-2 group/tabs flex data-[orientation=horizontal]:flex-col', props.class)" > diff --git a/ui/src/components/ui/tabs/TabsTrigger.vue b/ui/src/components/ui/tabs/TabsTrigger.vue index 2251c1c..1c3874b 100644 --- a/ui/src/components/ui/tabs/TabsTrigger.vue +++ b/ui/src/components/ui/tabs/TabsTrigger.vue @@ -16,10 +16,10 @@ const forwardedProps = useForwardProps(delegatedProps) { + it('matches data-orientation on the tabs group, not boolean data-horizontal', () => { + const classes = tabsListVariants() + expect(classes).toContain('group-data-[orientation=horizontal]/tabs:h-8') + expect(classes).toContain('group-data-[orientation=vertical]/tabs:h-fit') + expect(classes).toContain('group-data-[orientation=vertical]/tabs:flex-col') + expect(classes).not.toContain('group-data-horizontal/tabs:') + expect(classes).not.toContain('group-data-vertical/tabs:') + }) + + it('stacks the tab list above content for the default horizontal orientation', () => { + const Harness = defineComponent({ + components: { Tabs, TabsList, TabsTrigger, TabsContent }, + template: ` + + + A + + panel + + ` + }) + const wrapper = mount(Harness) + const root = wrapper.get('[data-slot="tabs"]') + expect(root.attributes('data-orientation')).toBe('horizontal') + expect(root.classes()).toContain('data-[orientation=horizontal]:flex-col') + expect(root.classes()).not.toContain('data-horizontal:flex-col') + + const list = wrapper.get('[data-slot="tabs-list"]') + expect(list.classes()).toContain('group-data-[orientation=horizontal]/tabs:h-8') + + const trigger = wrapper.get('[data-slot="tabs-trigger"]') + expect(trigger.classes()).toContain('group-data-[orientation=horizontal]/tabs:after:h-0.5') + expect(trigger.classes()).toContain('group-data-[orientation=vertical]/tabs:w-full') + expect(wrapper.text()).toContain('panel') + }) +})