Skip to content
This repository was archived by the owner on Aug 31, 2022. It is now read-only.

Commit b77d3bc

Browse files
committed
fix(tabs): fix overflow and positining issue with tabs
1 parent 7cd50f4 commit b77d3bc

File tree

2 files changed

+31
-15
lines changed

2 files changed

+31
-15
lines changed

src/components/Tabs/Tabs.stories.tsx

+13-3
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,22 @@ const Template: Story<ComponentProps<typeof Tabs>> = (args) => <Tabs {...args} /
1212

1313
export const Basic = Template.bind({});
1414
Basic.args = {
15+
contentClassName: 'ui-overflow-hidden',
1516
items: [
1617
{
1718
id: 'tab1',
1819
label: 'tab12',
19-
content: <div>Tab 1</div>
20+
content: (
21+
<div style={{ display: 'flex' }}>
22+
Tab 1 <div>Tab 1</div>
23+
Tab 1 <div>Tab 1</div>Tab 1 <div>Tab 1</div>Tab 1 <div>Tab 1</div>Tab 1 <div>Tab 1</div>
24+
Tab 1 <div>Tab 1</div>Tab 1 <div>Tab 1</div>Tab 1 <div>Tab 1</div>Tab 1 <div>Tab 1</div>
25+
Tab 1 <div>Tab 1</div>Tab 1 <div>Tab 1</div>Tab 1 <div>Tab 1</div>Tab 1 <div>Tab 1</div>
26+
Tab 1 <div>Tab 1</div>Tab 1 <div>Tab 1</div>Tab 1 <div>Tab 1</div>Tab 1 <div>Tab 1</div>
27+
Tab 1 <div>Tab 1</div>Tab 1 <div>Tab 1</div>Tab 1 <div>Tab 1</div>Tab 1 <div>Tab 1</div>
28+
Tab 1 <div>Tab 1</div>Tab 1 <div>Tab 1</div>Tab 1 <div>Tab 1</div>
29+
</div>
30+
)
2031
},
2132
{
2233
id: 'tab2',
@@ -30,6 +41,5 @@ Basic.args = {
3041
disabled: true
3142
}
3243
],
33-
initial: 'tab1',
34-
contentClassName: 'ui-p-4'
44+
initial: 'tab1'
3545
};

src/components/Tabs/Tabs.tsx

+18-12
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import clsx from 'clsx';
2-
import React, { useMemo, useState } from 'react';
3-
2+
import React, { useCallback, useMemo, useState } from 'react';
43
import { Tab } from '../Tab/Tab';
54

65
export interface ITabItem {
@@ -28,21 +27,28 @@ export const Tabs: React.FC<TabsProps> = ({
2827
}) => {
2928
const [activeTab, setActiveTab] = useState(initial);
3029

31-
const selectTab = (item: ITabItem) => {
32-
if (item.disabled) return;
33-
34-
setActiveTab(item.id);
35-
onChange?.(item.id);
36-
};
30+
const selectTab = useCallback(
31+
(item: ITabItem) => {
32+
if (item.disabled) return;
33+
setActiveTab(item.id);
34+
onChange?.(item.id);
35+
},
36+
[onChange]
37+
);
3738

3839
const content = useMemo(
3940
() => items.find((item) => item.id === activeTab)?.content,
4041
[activeTab, items]
4142
);
4243

4344
return (
44-
<div className={className}>
45-
<div className='ui-flex ui-items-center ui-flex-nowrap ui-overflow-auto'>
45+
<>
46+
<div
47+
className={clsx(
48+
'ui-flex ui-items-center ui-justify-center ui-flex-nowrap ui-overflow-auto',
49+
className
50+
)}
51+
>
4652
{items.map((item) => (
4753
<Tab
4854
key={item.id}
@@ -54,7 +60,7 @@ export const Tabs: React.FC<TabsProps> = ({
5460
/>
5561
))}
5662
</div>
57-
<div className={clsx(contentClassName, 'dark:ui-text-white')}>{content}</div>
58-
</div>
63+
<div className={clsx('dark:ui-text-white', contentClassName)}>{content}</div>
64+
</>
5965
);
6066
};

0 commit comments

Comments
 (0)