Skip to content

Commit 1f089fb

Browse files
committed
feat: extract overside logic
1 parent be4091d commit 1f089fb

File tree

4 files changed

+25
-24
lines changed

4 files changed

+25
-24
lines changed

src/components/tabs/index.tsx

+14-15
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import {
1111
classNames,
1212
} from 'mo/common/className';
1313

14-
import { Tab, tabItemClassName } from './tab';
14+
import { Tab, tabItemClassName } from './tabItem';
1515

1616
import './style.scss';
1717
export interface ITab {
@@ -43,17 +43,17 @@ export const tabItemCloseClassName = getBEMElement(tabItemClassName, 'close');
4343

4444
const Tabs = (props: ITabsProps) => {
4545
const {
46-
closable,
47-
data,
4846
activeTab,
49-
type = 'line',
50-
onCloseTab,
51-
onSelectTab,
47+
data,
48+
type = 'line', //TODO type logic
49+
onMoveTab,
50+
...resetProps
5251
} = props;
53-
const onMoveTab = useCallback(
52+
53+
const onChangeTab = useCallback(
5454
(dragIndex, hoverIndex) => {
5555
const dragTab = data[dragIndex];
56-
props.onMoveTab?.(
56+
onMoveTab?.(
5757
update(data, {
5858
$splice: [
5959
[dragIndex, 1],
@@ -77,16 +77,15 @@ const Tabs = (props: ITabsProps) => {
7777
{data?.map((tab: ITab, index: number) => {
7878
return (
7979
<Tab
80-
onMoveTab={onMoveTab}
81-
onTabChange={onSelectTab}
82-
onTabClose={onCloseTab}
80+
active={activeTab === tab.key}
8381
index={index}
84-
propsKey={tab.key}
82+
label={tab.label}
83+
modified={tab.modified}
8584
key={tab.key}
86-
active={activeTab === tab.key}
85+
propsKey={tab.key}
8786
title={tab.tip}
88-
closable={closable}
89-
{...tab}
87+
onMoveTab={onChangeTab}
88+
{...resetProps}
9089
></Tab>
9190
);
9291
})}

src/components/tabs/Tab.tsx src/components/tabs/tabItem.tsx

+6-6
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,13 @@ export const Tab = (props) => {
2323
const {
2424
closable,
2525
index,
26-
modified,
2726
propsKey,
2827
active,
2928
label,
30-
onTabClose,
29+
onCloseTab,
3130
onMoveTab,
32-
onTabChange,
31+
onSelectTab,
32+
...resetProps
3333
} = props;
3434
const ref = useRef<HTMLDivElement>(null);
3535

@@ -87,18 +87,18 @@ export const Tab = (props) => {
8787
className={classNames(tabItemClassName, {
8888
[getBEMModifier(tabItemClassName, 'active')]: active,
8989
})}
90-
onClick={(event: React.MouseEvent) => onTabChange(propsKey)}
90+
onClick={(event: React.MouseEvent) => onSelectTab(propsKey)}
9191
onMouseOver={handleMouseOver}
9292
onMouseOut={handleMouseOut}
9393
>
9494
{label}
9595
{closable && (
9696
<TabDot
9797
classNames={getBEMElement(tabItemClassName, 'op')}
98-
modified={modified}
9998
active={active}
10099
buttonHover={hover}
101-
onClick={(e) => onTabClose?.(propsKey)}
100+
onClick={(e) => onCloseTab?.(propsKey)}
101+
{...resetProps}
102102
/>
103103
)}
104104
</div>

src/workbench/editor/editor.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import SplitPane from 'react-split-pane';
55
import { getBEMElement, prefixClaName } from 'mo/common/className';
66
import MonacoEditor from 'mo/components/monaco-editor';
77
import Tabs from 'mo/components/tabs';
8-
import { tabItemClassName } from 'mo/components/tabs/tab';
8+
import { tabItemClassName } from 'mo/components/tabs/tabItem';
99
import { Icon } from 'mo/components/icon';
1010
import Welcome from './welcome';
1111
import { IEditor, IEditorGroup } from 'mo/model';

stories/components/3-Tabs.stories.tsx

+4-2
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,9 @@ stories.add('Basic Usage', () => {
5454
const onSelectTab1 = (tabKey) => {
5555
setActiveTab1(tabKey);
5656
};
57-
const onMoveTab = (data) => setTabs(data);
57+
const onMoveTab = (data) => {
58+
setTabs(data);
59+
}
5860

5961
const onMoveTab1 = (data) => setTabs1(data);
6062

@@ -71,7 +73,7 @@ stories.add('Basic Usage', () => {
7173
if (lastIndex >= 0) {
7274
newActiveKey = newPanes[lastIndex].key;
7375
} else {
74-
newActiveKey = newPanes[0].key;
76+
newActiveKey = newPanes[0]?.key;
7577
}
7678
}
7779
setTabs1(newPanes);

0 commit comments

Comments
 (0)