amis 1.7.0 → 1.8.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/Schema.d.ts +3 -2
- package/lib/Schema.js +0 -1
- package/lib/Schema.js.map +2 -2
- package/lib/components/Alert2.js +4 -2
- package/lib/components/Alert2.js.map +2 -2
- package/lib/components/Avatar.d.ts +20 -20
- package/lib/components/Card.d.ts +20 -20
- package/lib/components/CityArea.js +3 -0
- package/lib/components/CityArea.js.map +2 -2
- package/lib/components/ListGroup.d.ts +21 -21
- package/lib/components/Tabs.d.ts +27 -23
- package/lib/components/Tabs.js +37 -22
- package/lib/components/Tabs.js.map +2 -2
- package/lib/components/TooltipWrapper.d.ts +21 -20
- package/lib/components/TooltipWrapper.js +2 -2
- package/lib/components/TooltipWrapper.js.map +2 -2
- package/lib/components/icons.js +2 -0
- package/lib/components/icons.js.map +2 -2
- package/lib/icons/trash.js +10 -0
- package/lib/index.d.ts +1 -0
- package/lib/index.js +2 -1
- package/lib/index.js.map +2 -2
- package/lib/renderers/Action.d.ts +1 -1
- package/lib/renderers/Action.js.map +2 -2
- package/lib/renderers/ButtonGroup.d.ts +2 -2
- package/lib/renderers/ButtonGroup.js.map +1 -1
- package/lib/renderers/Form/Combo.d.ts +4 -3
- package/lib/renderers/Form/Combo.js +81 -32
- package/lib/renderers/Form/Combo.js.map +2 -2
- package/lib/renderers/Form/InputCity.js +4 -1
- package/lib/renderers/Form/InputCity.js.map +2 -2
- package/lib/renderers/Form/InputRange.d.ts +2 -2
- package/lib/renderers/Form/InputRange.js.map +2 -2
- package/lib/renderers/Tabs.d.ts +10 -2
- package/lib/renderers/Tabs.js +2 -2
- package/lib/renderers/Tabs.js.map +2 -2
- package/lib/renderers/TooltipWrapper.d.ts +104 -0
- package/lib/renderers/TooltipWrapper.js +59 -0
- package/lib/renderers/TooltipWrapper.js.map +13 -0
- package/lib/themes/ang-ie11.css +192 -33
- package/lib/themes/ang.css +200 -28
- package/lib/themes/ang.css.map +1 -1
- package/lib/themes/antd-ie11.css +192 -33
- package/lib/themes/antd.css +200 -28
- package/lib/themes/antd.css.map +1 -1
- package/lib/themes/cxd-ie11.css +181 -22
- package/lib/themes/cxd.css +202 -29
- package/lib/themes/cxd.css.map +1 -1
- package/lib/themes/dark-ie11.css +192 -33
- package/lib/themes/dark.css +200 -28
- package/lib/themes/dark.css.map +1 -1
- package/lib/themes/default-ie11.css +181 -22
- package/lib/themes/default.css +202 -29
- package/lib/themes/default.css.map +1 -1
- package/package.json +1 -1
- package/schema.json +286 -52
- package/scss/_properties.scss +23 -12
- package/scss/components/_alert.scss +1 -1
- package/scss/components/_button-group.scss +15 -0
- package/scss/components/_tabs.scss +145 -13
- package/scss/components/_tooltip.scss +72 -0
- package/scss/components/form/_number.scss +2 -0
- package/scss/themes/_cxd-variables.scss +2 -1
- package/sdk/ang-ie11.css +229 -34
- package/sdk/ang.css +237 -29
- package/sdk/antd-ie11.css +229 -34
- package/sdk/antd.css +237 -29
- package/sdk/barcode.js +51 -51
- package/sdk/charts.js +14 -14
- package/sdk/codemirror.js +7 -7
- package/sdk/color-picker.js +65 -65
- package/sdk/cropperjs.js +2 -2
- package/sdk/cxd-ie11.css +218 -23
- package/sdk/cxd.css +239 -30
- package/sdk/dark-ie11.css +229 -34
- package/sdk/dark.css +237 -29
- package/sdk/exceljs.js +1 -1
- package/sdk/markdown.js +69 -69
- package/sdk/papaparse.js +1 -1
- package/sdk/renderers/Form/CityDB.js +1 -1
- package/sdk/rest.js +17 -17
- package/sdk/rich-text.js +62 -62
- package/sdk/sdk-ie11.css +218 -23
- package/sdk/sdk.css +239 -30
- package/sdk/sdk.js +1250 -1246
- package/sdk/thirds/hls.js/hls.js +1 -1
- package/sdk/thirds/mpegts.js/mpegts.js +1 -1
- package/sdk/tinymce.js +57 -57
- package/src/Schema.ts +5 -2
- package/src/components/Alert2.tsx +9 -3
- package/src/components/CityArea.tsx +3 -0
- package/src/components/Tabs.tsx +51 -21
- package/src/components/TooltipWrapper.tsx +4 -1
- package/src/components/icons.tsx +2 -0
- package/src/icons/trash.svg +8 -0
- package/src/index.tsx +1 -0
- package/src/renderers/Action.tsx +2 -1
- package/src/renderers/ButtonGroup.tsx +2 -2
- package/src/renderers/Form/Combo.tsx +84 -26
- package/src/renderers/Form/InputCity.tsx +13 -1
- package/src/renderers/Form/InputRange.tsx +2 -6
- package/src/renderers/Tabs.tsx +15 -3
- package/src/renderers/TooltipWrapper.tsx +219 -0
package/lib/components/Tabs.d.ts
CHANGED
@@ -10,7 +10,7 @@ import { Schema } from '../types';
|
|
10
10
|
import { ThemeProps } from '../theme';
|
11
11
|
import { SchemaClassName } from '../Schema';
|
12
12
|
import Sortable from 'sortablejs';
|
13
|
-
export declare type TabsMode = '' | 'line' | 'card' | 'radio' | 'vertical' | 'chrome' | 'simple' | 'strong';
|
13
|
+
export declare type TabsMode = '' | 'line' | 'card' | 'radio' | 'vertical' | 'chrome' | 'simple' | 'strong' | 'tiled' | 'sidebar';
|
14
14
|
export interface TabProps extends ThemeProps {
|
15
15
|
title?: string | React.ReactNode;
|
16
16
|
icon?: string;
|
@@ -110,12 +110,14 @@ export interface TabsProps extends ThemeProps {
|
|
110
110
|
scrollable?: boolean;
|
111
111
|
editable?: boolean;
|
112
112
|
onEdit?: (index: number, text: string) => void;
|
113
|
+
sidePosition?: 'left' | 'right';
|
114
|
+
addBtnText?: string;
|
113
115
|
}
|
114
116
|
export interface IDragInfo {
|
115
117
|
nodeId: string;
|
116
118
|
}
|
117
119
|
export declare class Tabs extends React.Component<TabsProps, any> {
|
118
|
-
static defaultProps: Pick<TabsProps, 'mode' | 'contentClassName' | 'showTip' | 'showTipClassName'>;
|
120
|
+
static defaultProps: Pick<TabsProps, 'mode' | 'contentClassName' | 'showTip' | 'showTipClassName' | 'sidePosition' | 'addBtnText'>;
|
119
121
|
static Tab: {
|
120
122
|
new (props: (Omit<TabProps, keyof ThemeProps> & import("../theme").ThemeOutterProps) | Readonly<Omit<TabProps, keyof ThemeProps> & import("../theme").ThemeOutterProps>): {
|
121
123
|
render(): JSX.Element;
|
@@ -173,12 +175,14 @@ export declare class Tabs extends React.Component<TabsProps, any> {
|
|
173
175
|
} & import("hoist-non-react-statics").NonReactStatics<typeof TabComponent, {}> & {
|
174
176
|
ComposedComponent: typeof TabComponent;
|
175
177
|
};
|
176
|
-
navMain: React.RefObject<
|
178
|
+
navMain: React.RefObject<HTMLUListElement>;
|
177
179
|
scroll: boolean;
|
178
180
|
sortable?: Sortable;
|
179
181
|
dragTip?: HTMLElement;
|
180
182
|
id: string;
|
181
183
|
draging: boolean;
|
184
|
+
toDispose: Array<() => void>;
|
185
|
+
resizeDom: React.RefObject<HTMLDivElement>;
|
182
186
|
checkArrowStatus: import("lodash").DebouncedFunc<() => void>;
|
183
187
|
constructor(props: TabsProps);
|
184
188
|
componentDidMount(): void;
|
@@ -211,12 +215,12 @@ export declare class Tabs extends React.Component<TabsProps, any> {
|
|
211
215
|
render(): JSX.Element | null;
|
212
216
|
}
|
213
217
|
declare const _default: {
|
214
|
-
new (props: (Pick<Omit<TabsProps, keyof ThemeProps>, "toolbar" | "onClose" | "onEdit" | "onAdd" | "onSelect" | "tabs" | "draggable" | "addable" | "tabsMode" | "editable" | "activeKey" | "linksClassName" | "scrollable" | "closable" | "additionBtns" | "tabRender" | "onDragChange"> & Partial<Pick<Omit<TabsProps, keyof ThemeProps>, "mode" | "contentClassName" | "showTip" | "showTipClassName">> & Partial<Pick<Pick<TabsProps, "mode" | "contentClassName" | "showTip" | "showTipClassName">, never>> & import("../theme").ThemeOutterProps) | Readonly<Pick<Omit<TabsProps, keyof ThemeProps>, "toolbar" | "onClose" | "onEdit" | "onAdd" | "onSelect" | "tabs" | "draggable" | "addable" | "tabsMode" | "editable" | "activeKey" | "linksClassName" | "scrollable" | "closable" | "additionBtns" | "tabRender" | "onDragChange"> & Partial<Pick<Omit<TabsProps, keyof ThemeProps>, "mode" | "contentClassName" | "showTip" | "showTipClassName">> & Partial<Pick<Pick<TabsProps, "mode" | "contentClassName" | "showTip" | "showTipClassName">, never>> & import("../theme").ThemeOutterProps>): {
|
218
|
+
new (props: (Pick<Omit<TabsProps, keyof ThemeProps>, "toolbar" | "onClose" | "onEdit" | "onAdd" | "onSelect" | "tabs" | "draggable" | "addable" | "tabsMode" | "editable" | "activeKey" | "linksClassName" | "scrollable" | "closable" | "additionBtns" | "tabRender" | "onDragChange"> & Partial<Pick<Omit<TabsProps, keyof ThemeProps>, "mode" | "contentClassName" | "showTip" | "showTipClassName" | "sidePosition" | "addBtnText">> & Partial<Pick<Pick<TabsProps, "mode" | "contentClassName" | "showTip" | "showTipClassName" | "sidePosition" | "addBtnText">, never>> & import("../theme").ThemeOutterProps) | Readonly<Pick<Omit<TabsProps, keyof ThemeProps>, "toolbar" | "onClose" | "onEdit" | "onAdd" | "onSelect" | "tabs" | "draggable" | "addable" | "tabsMode" | "editable" | "activeKey" | "linksClassName" | "scrollable" | "closable" | "additionBtns" | "tabRender" | "onDragChange"> & Partial<Pick<Omit<TabsProps, keyof ThemeProps>, "mode" | "contentClassName" | "showTip" | "showTipClassName" | "sidePosition" | "addBtnText">> & Partial<Pick<Pick<TabsProps, "mode" | "contentClassName" | "showTip" | "showTipClassName" | "sidePosition" | "addBtnText">, never>> & import("../theme").ThemeOutterProps>): {
|
215
219
|
render(): JSX.Element;
|
216
220
|
context: any;
|
217
|
-
setState<K extends never>(state: {} | ((prevState: Readonly<{}>, props: Readonly<Pick<Omit<TabsProps, keyof ThemeProps>, "toolbar" | "onClose" | "onEdit" | "onAdd" | "onSelect" | "tabs" | "draggable" | "addable" | "tabsMode" | "editable" | "activeKey" | "linksClassName" | "scrollable" | "closable" | "additionBtns" | "tabRender" | "onDragChange"> & Partial<Pick<Omit<TabsProps, keyof ThemeProps>, "mode" | "contentClassName" | "showTip" | "showTipClassName">> & Partial<Pick<Pick<TabsProps, "mode" | "contentClassName" | "showTip" | "showTipClassName">, never>> & import("../theme").ThemeOutterProps>) => {} | Pick<{}, K> | null) | Pick<{}, K> | null, callback?: (() => void) | undefined): void;
|
221
|
+
setState<K extends never>(state: {} | ((prevState: Readonly<{}>, props: Readonly<Pick<Omit<TabsProps, keyof ThemeProps>, "toolbar" | "onClose" | "onEdit" | "onAdd" | "onSelect" | "tabs" | "draggable" | "addable" | "tabsMode" | "editable" | "activeKey" | "linksClassName" | "scrollable" | "closable" | "additionBtns" | "tabRender" | "onDragChange"> & Partial<Pick<Omit<TabsProps, keyof ThemeProps>, "mode" | "contentClassName" | "showTip" | "showTipClassName" | "sidePosition" | "addBtnText">> & Partial<Pick<Pick<TabsProps, "mode" | "contentClassName" | "showTip" | "showTipClassName" | "sidePosition" | "addBtnText">, never>> & import("../theme").ThemeOutterProps>) => {} | Pick<{}, K> | null) | Pick<{}, K> | null, callback?: (() => void) | undefined): void;
|
218
222
|
forceUpdate(callback?: (() => void) | undefined): void;
|
219
|
-
readonly props: Readonly<Pick<Omit<TabsProps, keyof ThemeProps>, "toolbar" | "onClose" | "onEdit" | "onAdd" | "onSelect" | "tabs" | "draggable" | "addable" | "tabsMode" | "editable" | "activeKey" | "linksClassName" | "scrollable" | "closable" | "additionBtns" | "tabRender" | "onDragChange"> & Partial<Pick<Omit<TabsProps, keyof ThemeProps>, "mode" | "contentClassName" | "showTip" | "showTipClassName">> & Partial<Pick<Pick<TabsProps, "mode" | "contentClassName" | "showTip" | "showTipClassName">, never>> & import("../theme").ThemeOutterProps> & Readonly<{
|
223
|
+
readonly props: Readonly<Pick<Omit<TabsProps, keyof ThemeProps>, "toolbar" | "onClose" | "onEdit" | "onAdd" | "onSelect" | "tabs" | "draggable" | "addable" | "tabsMode" | "editable" | "activeKey" | "linksClassName" | "scrollable" | "closable" | "additionBtns" | "tabRender" | "onDragChange"> & Partial<Pick<Omit<TabsProps, keyof ThemeProps>, "mode" | "contentClassName" | "showTip" | "showTipClassName" | "sidePosition" | "addBtnText">> & Partial<Pick<Pick<TabsProps, "mode" | "contentClassName" | "showTip" | "showTipClassName" | "sidePosition" | "addBtnText">, never>> & import("../theme").ThemeOutterProps> & Readonly<{
|
220
224
|
children?: React.ReactNode;
|
221
225
|
}>;
|
222
226
|
state: Readonly<{}>;
|
@@ -224,24 +228,24 @@ declare const _default: {
|
|
224
228
|
[key: string]: React.ReactInstance;
|
225
229
|
};
|
226
230
|
componentDidMount?(): void;
|
227
|
-
shouldComponentUpdate?(nextProps: Readonly<Pick<Omit<TabsProps, keyof ThemeProps>, "toolbar" | "onClose" | "onEdit" | "onAdd" | "onSelect" | "tabs" | "draggable" | "addable" | "tabsMode" | "editable" | "activeKey" | "linksClassName" | "scrollable" | "closable" | "additionBtns" | "tabRender" | "onDragChange"> & Partial<Pick<Omit<TabsProps, keyof ThemeProps>, "mode" | "contentClassName" | "showTip" | "showTipClassName">> & Partial<Pick<Pick<TabsProps, "mode" | "contentClassName" | "showTip" | "showTipClassName">, never>> & import("../theme").ThemeOutterProps>, nextState: Readonly<{}>, nextContext: any): boolean;
|
231
|
+
shouldComponentUpdate?(nextProps: Readonly<Pick<Omit<TabsProps, keyof ThemeProps>, "toolbar" | "onClose" | "onEdit" | "onAdd" | "onSelect" | "tabs" | "draggable" | "addable" | "tabsMode" | "editable" | "activeKey" | "linksClassName" | "scrollable" | "closable" | "additionBtns" | "tabRender" | "onDragChange"> & Partial<Pick<Omit<TabsProps, keyof ThemeProps>, "mode" | "contentClassName" | "showTip" | "showTipClassName" | "sidePosition" | "addBtnText">> & Partial<Pick<Pick<TabsProps, "mode" | "contentClassName" | "showTip" | "showTipClassName" | "sidePosition" | "addBtnText">, never>> & import("../theme").ThemeOutterProps>, nextState: Readonly<{}>, nextContext: any): boolean;
|
228
232
|
componentWillUnmount?(): void;
|
229
233
|
componentDidCatch?(error: Error, errorInfo: React.ErrorInfo): void;
|
230
|
-
getSnapshotBeforeUpdate?(prevProps: Readonly<Pick<Omit<TabsProps, keyof ThemeProps>, "toolbar" | "onClose" | "onEdit" | "onAdd" | "onSelect" | "tabs" | "draggable" | "addable" | "tabsMode" | "editable" | "activeKey" | "linksClassName" | "scrollable" | "closable" | "additionBtns" | "tabRender" | "onDragChange"> & Partial<Pick<Omit<TabsProps, keyof ThemeProps>, "mode" | "contentClassName" | "showTip" | "showTipClassName">> & Partial<Pick<Pick<TabsProps, "mode" | "contentClassName" | "showTip" | "showTipClassName">, never>> & import("../theme").ThemeOutterProps>, prevState: Readonly<{}>): any;
|
231
|
-
componentDidUpdate?(prevProps: Readonly<Pick<Omit<TabsProps, keyof ThemeProps>, "toolbar" | "onClose" | "onEdit" | "onAdd" | "onSelect" | "tabs" | "draggable" | "addable" | "tabsMode" | "editable" | "activeKey" | "linksClassName" | "scrollable" | "closable" | "additionBtns" | "tabRender" | "onDragChange"> & Partial<Pick<Omit<TabsProps, keyof ThemeProps>, "mode" | "contentClassName" | "showTip" | "showTipClassName">> & Partial<Pick<Pick<TabsProps, "mode" | "contentClassName" | "showTip" | "showTipClassName">, never>> & import("../theme").ThemeOutterProps>, prevState: Readonly<{}>, snapshot?: any): void;
|
234
|
+
getSnapshotBeforeUpdate?(prevProps: Readonly<Pick<Omit<TabsProps, keyof ThemeProps>, "toolbar" | "onClose" | "onEdit" | "onAdd" | "onSelect" | "tabs" | "draggable" | "addable" | "tabsMode" | "editable" | "activeKey" | "linksClassName" | "scrollable" | "closable" | "additionBtns" | "tabRender" | "onDragChange"> & Partial<Pick<Omit<TabsProps, keyof ThemeProps>, "mode" | "contentClassName" | "showTip" | "showTipClassName" | "sidePosition" | "addBtnText">> & Partial<Pick<Pick<TabsProps, "mode" | "contentClassName" | "showTip" | "showTipClassName" | "sidePosition" | "addBtnText">, never>> & import("../theme").ThemeOutterProps>, prevState: Readonly<{}>): any;
|
235
|
+
componentDidUpdate?(prevProps: Readonly<Pick<Omit<TabsProps, keyof ThemeProps>, "toolbar" | "onClose" | "onEdit" | "onAdd" | "onSelect" | "tabs" | "draggable" | "addable" | "tabsMode" | "editable" | "activeKey" | "linksClassName" | "scrollable" | "closable" | "additionBtns" | "tabRender" | "onDragChange"> & Partial<Pick<Omit<TabsProps, keyof ThemeProps>, "mode" | "contentClassName" | "showTip" | "showTipClassName" | "sidePosition" | "addBtnText">> & Partial<Pick<Pick<TabsProps, "mode" | "contentClassName" | "showTip" | "showTipClassName" | "sidePosition" | "addBtnText">, never>> & import("../theme").ThemeOutterProps>, prevState: Readonly<{}>, snapshot?: any): void;
|
232
236
|
componentWillMount?(): void;
|
233
237
|
UNSAFE_componentWillMount?(): void;
|
234
|
-
componentWillReceiveProps?(nextProps: Readonly<Pick<Omit<TabsProps, keyof ThemeProps>, "toolbar" | "onClose" | "onEdit" | "onAdd" | "onSelect" | "tabs" | "draggable" | "addable" | "tabsMode" | "editable" | "activeKey" | "linksClassName" | "scrollable" | "closable" | "additionBtns" | "tabRender" | "onDragChange"> & Partial<Pick<Omit<TabsProps, keyof ThemeProps>, "mode" | "contentClassName" | "showTip" | "showTipClassName">> & Partial<Pick<Pick<TabsProps, "mode" | "contentClassName" | "showTip" | "showTipClassName">, never>> & import("../theme").ThemeOutterProps>, nextContext: any): void;
|
235
|
-
UNSAFE_componentWillReceiveProps?(nextProps: Readonly<Pick<Omit<TabsProps, keyof ThemeProps>, "toolbar" | "onClose" | "onEdit" | "onAdd" | "onSelect" | "tabs" | "draggable" | "addable" | "tabsMode" | "editable" | "activeKey" | "linksClassName" | "scrollable" | "closable" | "additionBtns" | "tabRender" | "onDragChange"> & Partial<Pick<Omit<TabsProps, keyof ThemeProps>, "mode" | "contentClassName" | "showTip" | "showTipClassName">> & Partial<Pick<Pick<TabsProps, "mode" | "contentClassName" | "showTip" | "showTipClassName">, never>> & import("../theme").ThemeOutterProps>, nextContext: any): void;
|
236
|
-
componentWillUpdate?(nextProps: Readonly<Pick<Omit<TabsProps, keyof ThemeProps>, "toolbar" | "onClose" | "onEdit" | "onAdd" | "onSelect" | "tabs" | "draggable" | "addable" | "tabsMode" | "editable" | "activeKey" | "linksClassName" | "scrollable" | "closable" | "additionBtns" | "tabRender" | "onDragChange"> & Partial<Pick<Omit<TabsProps, keyof ThemeProps>, "mode" | "contentClassName" | "showTip" | "showTipClassName">> & Partial<Pick<Pick<TabsProps, "mode" | "contentClassName" | "showTip" | "showTipClassName">, never>> & import("../theme").ThemeOutterProps>, nextState: Readonly<{}>, nextContext: any): void;
|
237
|
-
UNSAFE_componentWillUpdate?(nextProps: Readonly<Pick<Omit<TabsProps, keyof ThemeProps>, "toolbar" | "onClose" | "onEdit" | "onAdd" | "onSelect" | "tabs" | "draggable" | "addable" | "tabsMode" | "editable" | "activeKey" | "linksClassName" | "scrollable" | "closable" | "additionBtns" | "tabRender" | "onDragChange"> & Partial<Pick<Omit<TabsProps, keyof ThemeProps>, "mode" | "contentClassName" | "showTip" | "showTipClassName">> & Partial<Pick<Pick<TabsProps, "mode" | "contentClassName" | "showTip" | "showTipClassName">, never>> & import("../theme").ThemeOutterProps>, nextState: Readonly<{}>, nextContext: any): void;
|
238
|
+
componentWillReceiveProps?(nextProps: Readonly<Pick<Omit<TabsProps, keyof ThemeProps>, "toolbar" | "onClose" | "onEdit" | "onAdd" | "onSelect" | "tabs" | "draggable" | "addable" | "tabsMode" | "editable" | "activeKey" | "linksClassName" | "scrollable" | "closable" | "additionBtns" | "tabRender" | "onDragChange"> & Partial<Pick<Omit<TabsProps, keyof ThemeProps>, "mode" | "contentClassName" | "showTip" | "showTipClassName" | "sidePosition" | "addBtnText">> & Partial<Pick<Pick<TabsProps, "mode" | "contentClassName" | "showTip" | "showTipClassName" | "sidePosition" | "addBtnText">, never>> & import("../theme").ThemeOutterProps>, nextContext: any): void;
|
239
|
+
UNSAFE_componentWillReceiveProps?(nextProps: Readonly<Pick<Omit<TabsProps, keyof ThemeProps>, "toolbar" | "onClose" | "onEdit" | "onAdd" | "onSelect" | "tabs" | "draggable" | "addable" | "tabsMode" | "editable" | "activeKey" | "linksClassName" | "scrollable" | "closable" | "additionBtns" | "tabRender" | "onDragChange"> & Partial<Pick<Omit<TabsProps, keyof ThemeProps>, "mode" | "contentClassName" | "showTip" | "showTipClassName" | "sidePosition" | "addBtnText">> & Partial<Pick<Pick<TabsProps, "mode" | "contentClassName" | "showTip" | "showTipClassName" | "sidePosition" | "addBtnText">, never>> & import("../theme").ThemeOutterProps>, nextContext: any): void;
|
240
|
+
componentWillUpdate?(nextProps: Readonly<Pick<Omit<TabsProps, keyof ThemeProps>, "toolbar" | "onClose" | "onEdit" | "onAdd" | "onSelect" | "tabs" | "draggable" | "addable" | "tabsMode" | "editable" | "activeKey" | "linksClassName" | "scrollable" | "closable" | "additionBtns" | "tabRender" | "onDragChange"> & Partial<Pick<Omit<TabsProps, keyof ThemeProps>, "mode" | "contentClassName" | "showTip" | "showTipClassName" | "sidePosition" | "addBtnText">> & Partial<Pick<Pick<TabsProps, "mode" | "contentClassName" | "showTip" | "showTipClassName" | "sidePosition" | "addBtnText">, never>> & import("../theme").ThemeOutterProps>, nextState: Readonly<{}>, nextContext: any): void;
|
241
|
+
UNSAFE_componentWillUpdate?(nextProps: Readonly<Pick<Omit<TabsProps, keyof ThemeProps>, "toolbar" | "onClose" | "onEdit" | "onAdd" | "onSelect" | "tabs" | "draggable" | "addable" | "tabsMode" | "editable" | "activeKey" | "linksClassName" | "scrollable" | "closable" | "additionBtns" | "tabRender" | "onDragChange"> & Partial<Pick<Omit<TabsProps, keyof ThemeProps>, "mode" | "contentClassName" | "showTip" | "showTipClassName" | "sidePosition" | "addBtnText">> & Partial<Pick<Pick<TabsProps, "mode" | "contentClassName" | "showTip" | "showTipClassName" | "sidePosition" | "addBtnText">, never>> & import("../theme").ThemeOutterProps>, nextState: Readonly<{}>, nextContext: any): void;
|
238
242
|
};
|
239
|
-
new (props: Pick<Omit<TabsProps, keyof ThemeProps>, "toolbar" | "onClose" | "onEdit" | "onAdd" | "onSelect" | "tabs" | "draggable" | "addable" | "tabsMode" | "editable" | "activeKey" | "linksClassName" | "scrollable" | "closable" | "additionBtns" | "tabRender" | "onDragChange"> & Partial<Pick<Omit<TabsProps, keyof ThemeProps>, "mode" | "contentClassName" | "showTip" | "showTipClassName">> & Partial<Pick<Pick<TabsProps, "mode" | "contentClassName" | "showTip" | "showTipClassName">, never>> & import("../theme").ThemeOutterProps, context: any): {
|
243
|
+
new (props: Pick<Omit<TabsProps, keyof ThemeProps>, "toolbar" | "onClose" | "onEdit" | "onAdd" | "onSelect" | "tabs" | "draggable" | "addable" | "tabsMode" | "editable" | "activeKey" | "linksClassName" | "scrollable" | "closable" | "additionBtns" | "tabRender" | "onDragChange"> & Partial<Pick<Omit<TabsProps, keyof ThemeProps>, "mode" | "contentClassName" | "showTip" | "showTipClassName" | "sidePosition" | "addBtnText">> & Partial<Pick<Pick<TabsProps, "mode" | "contentClassName" | "showTip" | "showTipClassName" | "sidePosition" | "addBtnText">, never>> & import("../theme").ThemeOutterProps, context: any): {
|
240
244
|
render(): JSX.Element;
|
241
245
|
context: any;
|
242
|
-
setState<K extends never>(state: {} | ((prevState: Readonly<{}>, props: Readonly<Pick<Omit<TabsProps, keyof ThemeProps>, "toolbar" | "onClose" | "onEdit" | "onAdd" | "onSelect" | "tabs" | "draggable" | "addable" | "tabsMode" | "editable" | "activeKey" | "linksClassName" | "scrollable" | "closable" | "additionBtns" | "tabRender" | "onDragChange"> & Partial<Pick<Omit<TabsProps, keyof ThemeProps>, "mode" | "contentClassName" | "showTip" | "showTipClassName">> & Partial<Pick<Pick<TabsProps, "mode" | "contentClassName" | "showTip" | "showTipClassName">, never>> & import("../theme").ThemeOutterProps>) => {} | Pick<{}, K> | null) | Pick<{}, K> | null, callback?: (() => void) | undefined): void;
|
246
|
+
setState<K extends never>(state: {} | ((prevState: Readonly<{}>, props: Readonly<Pick<Omit<TabsProps, keyof ThemeProps>, "toolbar" | "onClose" | "onEdit" | "onAdd" | "onSelect" | "tabs" | "draggable" | "addable" | "tabsMode" | "editable" | "activeKey" | "linksClassName" | "scrollable" | "closable" | "additionBtns" | "tabRender" | "onDragChange"> & Partial<Pick<Omit<TabsProps, keyof ThemeProps>, "mode" | "contentClassName" | "showTip" | "showTipClassName" | "sidePosition" | "addBtnText">> & Partial<Pick<Pick<TabsProps, "mode" | "contentClassName" | "showTip" | "showTipClassName" | "sidePosition" | "addBtnText">, never>> & import("../theme").ThemeOutterProps>) => {} | Pick<{}, K> | null) | Pick<{}, K> | null, callback?: (() => void) | undefined): void;
|
243
247
|
forceUpdate(callback?: (() => void) | undefined): void;
|
244
|
-
readonly props: Readonly<Pick<Omit<TabsProps, keyof ThemeProps>, "toolbar" | "onClose" | "onEdit" | "onAdd" | "onSelect" | "tabs" | "draggable" | "addable" | "tabsMode" | "editable" | "activeKey" | "linksClassName" | "scrollable" | "closable" | "additionBtns" | "tabRender" | "onDragChange"> & Partial<Pick<Omit<TabsProps, keyof ThemeProps>, "mode" | "contentClassName" | "showTip" | "showTipClassName">> & Partial<Pick<Pick<TabsProps, "mode" | "contentClassName" | "showTip" | "showTipClassName">, never>> & import("../theme").ThemeOutterProps> & Readonly<{
|
248
|
+
readonly props: Readonly<Pick<Omit<TabsProps, keyof ThemeProps>, "toolbar" | "onClose" | "onEdit" | "onAdd" | "onSelect" | "tabs" | "draggable" | "addable" | "tabsMode" | "editable" | "activeKey" | "linksClassName" | "scrollable" | "closable" | "additionBtns" | "tabRender" | "onDragChange"> & Partial<Pick<Omit<TabsProps, keyof ThemeProps>, "mode" | "contentClassName" | "showTip" | "showTipClassName" | "sidePosition" | "addBtnText">> & Partial<Pick<Pick<TabsProps, "mode" | "contentClassName" | "showTip" | "showTipClassName" | "sidePosition" | "addBtnText">, never>> & import("../theme").ThemeOutterProps> & Readonly<{
|
245
249
|
children?: React.ReactNode;
|
246
250
|
}>;
|
247
251
|
state: Readonly<{}>;
|
@@ -249,17 +253,17 @@ declare const _default: {
|
|
249
253
|
[key: string]: React.ReactInstance;
|
250
254
|
};
|
251
255
|
componentDidMount?(): void;
|
252
|
-
shouldComponentUpdate?(nextProps: Readonly<Pick<Omit<TabsProps, keyof ThemeProps>, "toolbar" | "onClose" | "onEdit" | "onAdd" | "onSelect" | "tabs" | "draggable" | "addable" | "tabsMode" | "editable" | "activeKey" | "linksClassName" | "scrollable" | "closable" | "additionBtns" | "tabRender" | "onDragChange"> & Partial<Pick<Omit<TabsProps, keyof ThemeProps>, "mode" | "contentClassName" | "showTip" | "showTipClassName">> & Partial<Pick<Pick<TabsProps, "mode" | "contentClassName" | "showTip" | "showTipClassName">, never>> & import("../theme").ThemeOutterProps>, nextState: Readonly<{}>, nextContext: any): boolean;
|
256
|
+
shouldComponentUpdate?(nextProps: Readonly<Pick<Omit<TabsProps, keyof ThemeProps>, "toolbar" | "onClose" | "onEdit" | "onAdd" | "onSelect" | "tabs" | "draggable" | "addable" | "tabsMode" | "editable" | "activeKey" | "linksClassName" | "scrollable" | "closable" | "additionBtns" | "tabRender" | "onDragChange"> & Partial<Pick<Omit<TabsProps, keyof ThemeProps>, "mode" | "contentClassName" | "showTip" | "showTipClassName" | "sidePosition" | "addBtnText">> & Partial<Pick<Pick<TabsProps, "mode" | "contentClassName" | "showTip" | "showTipClassName" | "sidePosition" | "addBtnText">, never>> & import("../theme").ThemeOutterProps>, nextState: Readonly<{}>, nextContext: any): boolean;
|
253
257
|
componentWillUnmount?(): void;
|
254
258
|
componentDidCatch?(error: Error, errorInfo: React.ErrorInfo): void;
|
255
|
-
getSnapshotBeforeUpdate?(prevProps: Readonly<Pick<Omit<TabsProps, keyof ThemeProps>, "toolbar" | "onClose" | "onEdit" | "onAdd" | "onSelect" | "tabs" | "draggable" | "addable" | "tabsMode" | "editable" | "activeKey" | "linksClassName" | "scrollable" | "closable" | "additionBtns" | "tabRender" | "onDragChange"> & Partial<Pick<Omit<TabsProps, keyof ThemeProps>, "mode" | "contentClassName" | "showTip" | "showTipClassName">> & Partial<Pick<Pick<TabsProps, "mode" | "contentClassName" | "showTip" | "showTipClassName">, never>> & import("../theme").ThemeOutterProps>, prevState: Readonly<{}>): any;
|
256
|
-
componentDidUpdate?(prevProps: Readonly<Pick<Omit<TabsProps, keyof ThemeProps>, "toolbar" | "onClose" | "onEdit" | "onAdd" | "onSelect" | "tabs" | "draggable" | "addable" | "tabsMode" | "editable" | "activeKey" | "linksClassName" | "scrollable" | "closable" | "additionBtns" | "tabRender" | "onDragChange"> & Partial<Pick<Omit<TabsProps, keyof ThemeProps>, "mode" | "contentClassName" | "showTip" | "showTipClassName">> & Partial<Pick<Pick<TabsProps, "mode" | "contentClassName" | "showTip" | "showTipClassName">, never>> & import("../theme").ThemeOutterProps>, prevState: Readonly<{}>, snapshot?: any): void;
|
259
|
+
getSnapshotBeforeUpdate?(prevProps: Readonly<Pick<Omit<TabsProps, keyof ThemeProps>, "toolbar" | "onClose" | "onEdit" | "onAdd" | "onSelect" | "tabs" | "draggable" | "addable" | "tabsMode" | "editable" | "activeKey" | "linksClassName" | "scrollable" | "closable" | "additionBtns" | "tabRender" | "onDragChange"> & Partial<Pick<Omit<TabsProps, keyof ThemeProps>, "mode" | "contentClassName" | "showTip" | "showTipClassName" | "sidePosition" | "addBtnText">> & Partial<Pick<Pick<TabsProps, "mode" | "contentClassName" | "showTip" | "showTipClassName" | "sidePosition" | "addBtnText">, never>> & import("../theme").ThemeOutterProps>, prevState: Readonly<{}>): any;
|
260
|
+
componentDidUpdate?(prevProps: Readonly<Pick<Omit<TabsProps, keyof ThemeProps>, "toolbar" | "onClose" | "onEdit" | "onAdd" | "onSelect" | "tabs" | "draggable" | "addable" | "tabsMode" | "editable" | "activeKey" | "linksClassName" | "scrollable" | "closable" | "additionBtns" | "tabRender" | "onDragChange"> & Partial<Pick<Omit<TabsProps, keyof ThemeProps>, "mode" | "contentClassName" | "showTip" | "showTipClassName" | "sidePosition" | "addBtnText">> & Partial<Pick<Pick<TabsProps, "mode" | "contentClassName" | "showTip" | "showTipClassName" | "sidePosition" | "addBtnText">, never>> & import("../theme").ThemeOutterProps>, prevState: Readonly<{}>, snapshot?: any): void;
|
257
261
|
componentWillMount?(): void;
|
258
262
|
UNSAFE_componentWillMount?(): void;
|
259
|
-
componentWillReceiveProps?(nextProps: Readonly<Pick<Omit<TabsProps, keyof ThemeProps>, "toolbar" | "onClose" | "onEdit" | "onAdd" | "onSelect" | "tabs" | "draggable" | "addable" | "tabsMode" | "editable" | "activeKey" | "linksClassName" | "scrollable" | "closable" | "additionBtns" | "tabRender" | "onDragChange"> & Partial<Pick<Omit<TabsProps, keyof ThemeProps>, "mode" | "contentClassName" | "showTip" | "showTipClassName">> & Partial<Pick<Pick<TabsProps, "mode" | "contentClassName" | "showTip" | "showTipClassName">, never>> & import("../theme").ThemeOutterProps>, nextContext: any): void;
|
260
|
-
UNSAFE_componentWillReceiveProps?(nextProps: Readonly<Pick<Omit<TabsProps, keyof ThemeProps>, "toolbar" | "onClose" | "onEdit" | "onAdd" | "onSelect" | "tabs" | "draggable" | "addable" | "tabsMode" | "editable" | "activeKey" | "linksClassName" | "scrollable" | "closable" | "additionBtns" | "tabRender" | "onDragChange"> & Partial<Pick<Omit<TabsProps, keyof ThemeProps>, "mode" | "contentClassName" | "showTip" | "showTipClassName">> & Partial<Pick<Pick<TabsProps, "mode" | "contentClassName" | "showTip" | "showTipClassName">, never>> & import("../theme").ThemeOutterProps>, nextContext: any): void;
|
261
|
-
componentWillUpdate?(nextProps: Readonly<Pick<Omit<TabsProps, keyof ThemeProps>, "toolbar" | "onClose" | "onEdit" | "onAdd" | "onSelect" | "tabs" | "draggable" | "addable" | "tabsMode" | "editable" | "activeKey" | "linksClassName" | "scrollable" | "closable" | "additionBtns" | "tabRender" | "onDragChange"> & Partial<Pick<Omit<TabsProps, keyof ThemeProps>, "mode" | "contentClassName" | "showTip" | "showTipClassName">> & Partial<Pick<Pick<TabsProps, "mode" | "contentClassName" | "showTip" | "showTipClassName">, never>> & import("../theme").ThemeOutterProps>, nextState: Readonly<{}>, nextContext: any): void;
|
262
|
-
UNSAFE_componentWillUpdate?(nextProps: Readonly<Pick<Omit<TabsProps, keyof ThemeProps>, "toolbar" | "onClose" | "onEdit" | "onAdd" | "onSelect" | "tabs" | "draggable" | "addable" | "tabsMode" | "editable" | "activeKey" | "linksClassName" | "scrollable" | "closable" | "additionBtns" | "tabRender" | "onDragChange"> & Partial<Pick<Omit<TabsProps, keyof ThemeProps>, "mode" | "contentClassName" | "showTip" | "showTipClassName">> & Partial<Pick<Pick<TabsProps, "mode" | "contentClassName" | "showTip" | "showTipClassName">, never>> & import("../theme").ThemeOutterProps>, nextState: Readonly<{}>, nextContext: any): void;
|
263
|
+
componentWillReceiveProps?(nextProps: Readonly<Pick<Omit<TabsProps, keyof ThemeProps>, "toolbar" | "onClose" | "onEdit" | "onAdd" | "onSelect" | "tabs" | "draggable" | "addable" | "tabsMode" | "editable" | "activeKey" | "linksClassName" | "scrollable" | "closable" | "additionBtns" | "tabRender" | "onDragChange"> & Partial<Pick<Omit<TabsProps, keyof ThemeProps>, "mode" | "contentClassName" | "showTip" | "showTipClassName" | "sidePosition" | "addBtnText">> & Partial<Pick<Pick<TabsProps, "mode" | "contentClassName" | "showTip" | "showTipClassName" | "sidePosition" | "addBtnText">, never>> & import("../theme").ThemeOutterProps>, nextContext: any): void;
|
264
|
+
UNSAFE_componentWillReceiveProps?(nextProps: Readonly<Pick<Omit<TabsProps, keyof ThemeProps>, "toolbar" | "onClose" | "onEdit" | "onAdd" | "onSelect" | "tabs" | "draggable" | "addable" | "tabsMode" | "editable" | "activeKey" | "linksClassName" | "scrollable" | "closable" | "additionBtns" | "tabRender" | "onDragChange"> & Partial<Pick<Omit<TabsProps, keyof ThemeProps>, "mode" | "contentClassName" | "showTip" | "showTipClassName" | "sidePosition" | "addBtnText">> & Partial<Pick<Pick<TabsProps, "mode" | "contentClassName" | "showTip" | "showTipClassName" | "sidePosition" | "addBtnText">, never>> & import("../theme").ThemeOutterProps>, nextContext: any): void;
|
265
|
+
componentWillUpdate?(nextProps: Readonly<Pick<Omit<TabsProps, keyof ThemeProps>, "toolbar" | "onClose" | "onEdit" | "onAdd" | "onSelect" | "tabs" | "draggable" | "addable" | "tabsMode" | "editable" | "activeKey" | "linksClassName" | "scrollable" | "closable" | "additionBtns" | "tabRender" | "onDragChange"> & Partial<Pick<Omit<TabsProps, keyof ThemeProps>, "mode" | "contentClassName" | "showTip" | "showTipClassName" | "sidePosition" | "addBtnText">> & Partial<Pick<Pick<TabsProps, "mode" | "contentClassName" | "showTip" | "showTipClassName" | "sidePosition" | "addBtnText">, never>> & import("../theme").ThemeOutterProps>, nextState: Readonly<{}>, nextContext: any): void;
|
266
|
+
UNSAFE_componentWillUpdate?(nextProps: Readonly<Pick<Omit<TabsProps, keyof ThemeProps>, "toolbar" | "onClose" | "onEdit" | "onAdd" | "onSelect" | "tabs" | "draggable" | "addable" | "tabsMode" | "editable" | "activeKey" | "linksClassName" | "scrollable" | "closable" | "additionBtns" | "tabRender" | "onDragChange"> & Partial<Pick<Omit<TabsProps, keyof ThemeProps>, "mode" | "contentClassName" | "showTip" | "showTipClassName" | "sidePosition" | "addBtnText">> & Partial<Pick<Pick<TabsProps, "mode" | "contentClassName" | "showTip" | "showTipClassName" | "sidePosition" | "addBtnText">, never>> & import("../theme").ThemeOutterProps>, nextState: Readonly<{}>, nextContext: any): void;
|
263
267
|
};
|
264
268
|
displayName: string;
|
265
269
|
contextType: React.Context<string>;
|
package/lib/components/Tabs.js
CHANGED
@@ -18,6 +18,7 @@ var icons_1 = require("./icons");
|
|
18
18
|
var debounce_1 = (0, tslib_1.__importDefault)(require("lodash/debounce"));
|
19
19
|
var react_dom_1 = require("react-dom");
|
20
20
|
var TooltipWrapper_1 = (0, tslib_1.__importDefault)(require("./TooltipWrapper"));
|
21
|
+
var resize_sensor_1 = require("../utils/resize-sensor");
|
21
22
|
var sortablejs_1 = (0, tslib_1.__importDefault)(require("sortablejs"));
|
22
23
|
var transitionStyles = (_a = {},
|
23
24
|
_a[Transition_1.ENTERING] = 'in',
|
@@ -47,10 +48,12 @@ var Tabs = /** @class */ (function (_super) {
|
|
47
48
|
(0, tslib_1.__extends)(Tabs, _super);
|
48
49
|
function Tabs(props) {
|
49
50
|
var _this = _super.call(this, props) || this;
|
50
|
-
_this.navMain = react_1.default.createRef();
|
51
|
+
_this.navMain = react_1.default.createRef(); // HTMLDivElement
|
51
52
|
_this.scroll = false;
|
52
53
|
_this.id = (0, helper_1.guid)();
|
53
54
|
_this.draging = false;
|
55
|
+
_this.toDispose = [];
|
56
|
+
_this.resizeDom = react_1.default.createRef();
|
54
57
|
_this.checkArrowStatus = (0, debounce_1.default)(function () {
|
55
58
|
var _a = _this.navMain.current || {
|
56
59
|
scrollLeft: 0,
|
@@ -98,7 +101,8 @@ var Tabs = /** @class */ (function (_super) {
|
|
98
101
|
return _this;
|
99
102
|
}
|
100
103
|
Tabs.prototype.componentDidMount = function () {
|
101
|
-
var
|
104
|
+
var _this = this;
|
105
|
+
var _a, _b;
|
102
106
|
this.computedWidth();
|
103
107
|
if (this.navMain) {
|
104
108
|
(_a = this.navMain.current) === null || _a === void 0 ? void 0 : _a.addEventListener('wheel', this.handleWheel, {
|
@@ -106,6 +110,9 @@ var Tabs = /** @class */ (function (_super) {
|
|
106
110
|
});
|
107
111
|
this.checkArrowStatus();
|
108
112
|
}
|
113
|
+
((_b = this.resizeDom) === null || _b === void 0 ? void 0 : _b.current) && this.toDispose.push((0, resize_sensor_1.resizeSensor)(this.resizeDom.current, function () {
|
114
|
+
return _this.computedWidth();
|
115
|
+
}));
|
109
116
|
};
|
110
117
|
Tabs.prototype.componentDidUpdate = function () {
|
111
118
|
// 判断是否是由滚动触发的数据更新,如果是则不需要再次判断容器与内容的关系
|
@@ -116,6 +123,8 @@ var Tabs = /** @class */ (function (_super) {
|
|
116
123
|
};
|
117
124
|
Tabs.prototype.componentWillUnmount = function () {
|
118
125
|
this.checkArrowStatus.cancel();
|
126
|
+
this.toDispose.forEach(function (fn) { return fn(); });
|
127
|
+
this.toDispose = [];
|
119
128
|
};
|
120
129
|
/**
|
121
130
|
* 处理内容与容器之间的位置关系
|
@@ -123,7 +132,7 @@ var Tabs = /** @class */ (function (_super) {
|
|
123
132
|
Tabs.prototype.computedWidth = function () {
|
124
133
|
var _a = this.props, dMode = _a.mode, tabsMode = _a.tabsMode;
|
125
134
|
var mode = tabsMode || dMode;
|
126
|
-
if (
|
135
|
+
if (['vertical', 'sidebar'].includes(mode)) {
|
127
136
|
return;
|
128
137
|
}
|
129
138
|
var navMainRef = this.navMain.current;
|
@@ -143,32 +152,32 @@ var Tabs = /** @class */ (function (_super) {
|
|
143
152
|
* 保证选中的tab始终显示在可视区域
|
144
153
|
*/
|
145
154
|
Tabs.prototype.showSelected = function (key) {
|
146
|
-
var _a, _b, _c, _d, _e, _f
|
147
|
-
var
|
155
|
+
var _a, _b, _c, _d, _e, _f;
|
156
|
+
var _g = this.props, dMode = _g.mode, tabsMode = _g.tabsMode;
|
148
157
|
var isOverflow = this.state.isOverflow;
|
149
158
|
var mode = tabsMode || dMode;
|
150
|
-
if (
|
159
|
+
if (['vertical', 'sidebar'].includes(mode) || !isOverflow) {
|
151
160
|
return;
|
152
161
|
}
|
153
|
-
var
|
162
|
+
var _h = this.props, activeKey = _h.activeKey, children = _h.children;
|
154
163
|
var currentKey = key !== undefined ? key : activeKey;
|
155
164
|
var currentIndex = (_a = children) === null || _a === void 0 ? void 0 : _a.findIndex(function (item) { return item.props.eventKey === currentKey; });
|
156
|
-
var li = ((
|
165
|
+
var li = ((_b = this.navMain.current) === null || _b === void 0 ? void 0 : _b.children) || [];
|
157
166
|
var currentLi = li[currentIndex];
|
158
167
|
var liOffsetLeft = currentLi === null || currentLi === void 0 ? void 0 : currentLi.offsetLeft;
|
159
168
|
var liClientWidth = currentLi === null || currentLi === void 0 ? void 0 : currentLi.clientWidth;
|
160
|
-
var scrollLeft = ((
|
161
|
-
var clientWidth = ((
|
169
|
+
var scrollLeft = ((_c = this.navMain.current) === null || _c === void 0 ? void 0 : _c.scrollLeft) || 0;
|
170
|
+
var clientWidth = ((_d = this.navMain.current) === null || _d === void 0 ? void 0 : _d.clientWidth) || 0;
|
162
171
|
// 左边被遮住了
|
163
172
|
if (scrollLeft > liOffsetLeft) {
|
164
|
-
(
|
173
|
+
(_e = this.navMain.current) === null || _e === void 0 ? void 0 : _e.scrollTo({
|
165
174
|
left: liOffsetLeft,
|
166
175
|
behavior: 'smooth'
|
167
176
|
});
|
168
177
|
}
|
169
178
|
// 右边被遮住了
|
170
179
|
if (liOffsetLeft + liClientWidth > scrollLeft + clientWidth) {
|
171
|
-
(
|
180
|
+
(_f = this.navMain.current) === null || _f === void 0 ? void 0 : _f.scrollTo({
|
172
181
|
left: liOffsetLeft + liClientWidth - clientWidth,
|
173
182
|
behavior: 'smooth'
|
174
183
|
});
|
@@ -346,7 +355,7 @@ var Tabs = /** @class */ (function (_super) {
|
|
346
355
|
var _this = this;
|
347
356
|
var _a = this.props, dMode = _a.mode, tabsMode = _a.tabsMode;
|
348
357
|
var mode = tabsMode || dMode;
|
349
|
-
if (
|
358
|
+
if (['vertical', 'sidebar'].includes(mode)) {
|
350
359
|
return;
|
351
360
|
}
|
352
361
|
var cx = this.props.classnames;
|
@@ -362,27 +371,31 @@ var Tabs = /** @class */ (function (_super) {
|
|
362
371
|
Tabs.prototype.render = function () {
|
363
372
|
var _a;
|
364
373
|
var _this = this;
|
365
|
-
var _b = this.props, cx = _b.classnames, contentClassName = _b.contentClassName, className = _b.className, dMode = _b.mode, tabsMode = _b.tabsMode, children = _b.children, additionBtns = _b.additionBtns, toolbar = _b.toolbar, linksClassName = _b.linksClassName, addable = _b.addable, draggable = _b.draggable;
|
374
|
+
var _b = this.props, cx = _b.classnames, contentClassName = _b.contentClassName, className = _b.className, dMode = _b.mode, tabsMode = _b.tabsMode, children = _b.children, additionBtns = _b.additionBtns, toolbar = _b.toolbar, linksClassName = _b.linksClassName, addable = _b.addable, draggable = _b.draggable, sidePosition = _b.sidePosition, addBtnText = _b.addBtnText;
|
366
375
|
var isOverflow = this.state.isOverflow;
|
367
376
|
if (!Array.isArray(children)) {
|
368
377
|
return null;
|
369
378
|
}
|
370
379
|
var mode = tabsMode || dMode;
|
380
|
+
var toolButtons = (react_1.default.createElement(react_1.default.Fragment, null,
|
381
|
+
addable && (react_1.default.createElement("div", { className: cx('Tabs-addable'), onClick: function () { return _this.handleAddBtn(); } },
|
382
|
+
react_1.default.createElement(icons_1.Icon, { icon: "plus", className: cx('Tabs-addable-icon') }),
|
383
|
+
addBtnText)),
|
384
|
+
toolbar));
|
371
385
|
return (react_1.default.createElement("div", { className: cx("Tabs", (_a = {},
|
372
386
|
_a["Tabs--".concat(mode)] = mode,
|
387
|
+
_a["sidebar--".concat(sidePosition)] = mode === 'sidebar',
|
373
388
|
_a), className) },
|
374
|
-
!['vertical', 'chrome'].includes(mode) ? (react_1.default.createElement("div", { className: cx('Tabs-linksContainer-wrapper') },
|
389
|
+
!['vertical', 'sidebar', 'chrome'].includes(mode) ? (react_1.default.createElement("div", { className: cx('Tabs-linksContainer-wrapper', toolbar && 'Tabs-linksContainer-wrapper--toolbar'), ref: this.resizeDom },
|
375
390
|
react_1.default.createElement("div", { className: cx('Tabs-linksContainer', isOverflow && 'Tabs-linksContainer--overflow') },
|
376
391
|
this.renderArrow('left'),
|
377
|
-
react_1.default.createElement("div", { className: cx('Tabs-linksContainer-main')
|
378
|
-
react_1.default.createElement("ul", { className: cx('Tabs-links', linksClassName), role: "tablist" },
|
392
|
+
react_1.default.createElement("div", { className: cx('Tabs-linksContainer-main') },
|
393
|
+
react_1.default.createElement("ul", { className: cx('Tabs-links', linksClassName), role: "tablist", ref: this.navMain },
|
379
394
|
children.map(function (tab, index) { return _this.renderNav(tab, index); }),
|
380
395
|
additionBtns,
|
381
|
-
|
396
|
+
!isOverflow && toolButtons)),
|
382
397
|
this.renderArrow('right')),
|
383
|
-
|
384
|
-
react_1.default.createElement(icons_1.Icon, { icon: "plus", className: cx('Tabs-addable-icon') }),
|
385
|
-
"\u589E\u52A0")))) : (react_1.default.createElement("div", { className: cx('Tabs-linksWrapper') },
|
398
|
+
isOverflow && toolButtons)) : (react_1.default.createElement("div", { className: cx('Tabs-linksWrapper') },
|
386
399
|
react_1.default.createElement("ul", { className: cx('Tabs-links', linksClassName), role: "tablist" },
|
387
400
|
children.map(function (tab, index) { return _this.renderNav(tab, index); }),
|
388
401
|
additionBtns,
|
@@ -397,7 +410,9 @@ var Tabs = /** @class */ (function (_super) {
|
|
397
410
|
mode: '',
|
398
411
|
contentClassName: '',
|
399
412
|
showTip: false,
|
400
|
-
showTipClassName: ''
|
413
|
+
showTipClassName: '',
|
414
|
+
sidePosition: 'left',
|
415
|
+
addBtnText: '增加'
|
401
416
|
};
|
402
417
|
Tabs.Tab = exports.Tab;
|
403
418
|
(0, tslib_1.__decorate)([
|
@@ -6,8 +6,8 @@
|
|
6
6
|
"/src/components/Tabs.tsx"
|
7
7
|
],
|
8
8
|
"names": [],
|
9
|
-
"mappings": ";AAAA;;;;GAIG;;;;;AAEH,6DAA0B;AAE1B,2FAAgF;AAChF,kCAA+C;AAC/C,iDAA8C;AAC9C,sCAA2C;AAE3C,0CAA+C;AAC/C,iCAA6B;AAC7B,0EAAuC;AACvC,uCAAsC;AACtC,iFAAwE;AAExE,uEAAkC;AAElC,IAAM,gBAAgB;IAGpB,GAAC,qBAAQ,IAAG,IAAI;IAChB,GAAC,oBAAO,IAAG,IAAI;OAChB,CAAC;AAmBF;IAA2B,6CAA6B;IAAxD;QAAA,qEA4CC;QA1CC,gBAAU,GAAG,UAAC,GAAQ,IAAK,OAAA,CAAC,KAAI,CAAC,UAAU,GAAG,GAAG,CAAC,EAAvB,CAAuB,CAAC;;IA0CrD,CAAC;IAxCC,6BAAM,GAAN;QAAA,iBAuCC;QAtCO,IAAA,KASF,IAAI,CAAC,KAAK,EARA,EAAE,gBAAA,EACd,YAAY,kBAAA,EACZ,MAAM,YAAA,EACN,aAAa,mBAAA,EACb,QAAQ,cAAA,EACR,SAAS,eAAA,EACT,QAAQ,cAAA,EACR,SAAS,eACG,CAAC;QAEf,OAAO,CACL,8BAAC,oBAAU,IACT,EAAE,EAAE,SAAS,KAAK,QAAQ,EAC1B,YAAY,EAAE,YAAY,EAC1B,aAAa,EAAE,OAAO,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,EACnE,OAAO,EAAE,GAAG,IAEX,UAAC,MAAc;YACd,IAAI,MAAM,KAAK,qBAAQ,EAAE;gBACvB,KAAI,CAAC,UAAU,CAAC,WAAW,CAAC;aAC7B;YACD,OAAO,CACL,uCACE,GAAG,EAAE,KAAI,CAAC,UAAU,EACpB,SAAS,EAAE,EAAE,CACX,gBAAgB,CAAC,MAAM,CAAC,EACxB,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,EACzC,WAAW,EACX,SAAS,CACV,IAEA,QAAQ,CACL,CACP,CAAC;QACJ,CAAC,CACU,CACd,CAAC;IACJ,CAAC;IACH,mBAAC;AAAD,CAAC,AA5CD,CAA2B,eAAK,CAAC,aAAa,GA4C7C;AAEY,QAAA,GAAG,GAAG,IAAA,iBAAS,EAAC,YAAY,CAAC,CAAC;AA+B3C;IAA0B,qCAA+B;IA2DvD,cAAY,KAAgB;QAA5B,YACE,kBAAM,KAAK,CAAC,SAUb;QA3DD,aAAO,GAAG,eAAK,CAAC,SAAS,EAAkB,CAAC;QAC5C,YAAM,GAAY,KAAK,CAAC;QAGxB,QAAE,GAAW,IAAA,aAAI,GAAE,CAAC;QACpB,aAAO,GAAY,KAAK,CAAC;QAEzB,sBAAgB,GAAG,IAAA,kBAAQ,EACzB;YACQ,IAAA,KAAyC,KAAI,CAAC,OAAO,CAAC,OAAO,IAAI;gBACrE,UAAU,EAAE,CAAC;gBACb,WAAW,EAAE,CAAC;gBACd,WAAW,EAAE,CAAC;aACf,EAJM,UAAU,gBAAA,EAAE,WAAW,iBAAA,EAAE,WAAW,iBAI1C,CAAC;YACI,IAAA,KAA0C,KAAI,CAAC,KAAK,EAAnD,kBAAkB,wBAAA,EAAE,iBAAiB,uBAAc,CAAC;YAC3D,IAAI,UAAU,KAAK,CAAC,IAAI,CAAC,iBAAiB,EAAE;gBAC1C,KAAI,CAAC,QAAQ,CAAC;oBACZ,kBAAkB,EAAE,KAAK;oBACzB,iBAAiB,EAAE,IAAI;iBACxB,CAAC,CAAC;aACJ;iBAAM,IACL,WAAW,KAAK,UAAU,GAAG,WAAW;gBACxC,CAAC,kBAAkB,EACnB;gBACA,KAAI,CAAC,QAAQ,CAAC;oBACZ,kBAAkB,EAAE,IAAI;oBACxB,iBAAiB,EAAE,KAAK;iBACzB,CAAC,CAAC;aACJ;iBAAM,IAAI,UAAU,KAAK,CAAC,IAAI,iBAAiB,EAAE;gBAChD,KAAI,CAAC,QAAQ,CAAC;oBACZ,iBAAiB,EAAE,KAAK;iBACzB,CAAC,CAAC;aACJ;iBAAM,IACL,WAAW,KAAK,UAAU,GAAG,WAAW;gBACxC,kBAAkB,EAClB;gBACA,KAAI,CAAC,QAAQ,CAAC;oBACZ,kBAAkB,EAAE,KAAK;iBAC1B,CAAC,CAAC;aACJ;QACH,CAAC,EACD,GAAG,EACH;YACE,QAAQ,EAAE,IAAI;YACd,OAAO,EAAE,KAAK;SACf,CACF,CAAC;QAIA,KAAI,CAAC,KAAK,GAAG;YACX,UAAU,EAAE,KAAK;YACjB,iBAAiB,EAAE,KAAK;YACxB,kBAAkB,EAAE,KAAK;YACzB,aAAa,EAAE,IAAI;YACnB,YAAY,EAAE,IAAI;YAClB,aAAa,EAAE,IAAI;YACnB,cAAc,EAAE,IAAI;SACrB,CAAC;;IACJ,CAAC;IAED,gCAAiB,GAAjB;;QACE,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,MAAA,IAAI,CAAC,OAAO,CAAC,OAAO,0CAAE,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE;gBAChE,OAAO,EAAE,KAAK;aACf,CAAC,CAAC;YACH,IAAI,CAAC,gBAAgB,EAAE,CAAC;SACzB;IACH,CAAC;IAED,iCAAkB,GAAlB;QACE,sCAAsC;QACtC,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACjC,IAAI,CAAC,aAAa,EAAE,CAAC;SACtB;QACD,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACtB,CAAC;IAED,mCAAoB,GAApB;QACE,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,4BAAa,GAAb;QACQ,IAAA,KAA0B,IAAI,CAAC,KAAK,EAA7B,KAAK,UAAA,EAAE,QAAQ,cAAc,CAAC;QAC3C,IAAM,IAAI,GAAG,QAAQ,IAAI,KAAK,CAAC;QAC/B,IAAI,IAAI,KAAK,UAAU,EAAE;YACvB,OAAO;SACR;QAED,IAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;QACxC,IAAM,WAAW,GAAW,CAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,WAAW,KAAI,CAAC,CAAC;QACzD,IAAM,WAAW,GAAW,CAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,WAAW,KAAI,CAAC,CAAC;QACzD,IAAM,UAAU,GAAG,WAAW,GAAG,WAAW,CAAC;QAE7C,eAAe;QACf,IAAI,UAAU,KAAK,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE;YACxC,IAAI,CAAC,QAAQ,CAAC,EAAC,UAAU,YAAA,EAAC,CAAC,CAAC;SAC7B;QAED,aAAa;QACb,IAAI,UAAU,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YAC/B,IAAI,CAAC,YAAY,EAAE,CAAC;SACrB;IACH,CAAC;IACD;;OAEG;IACH,2BAAY,GAAZ,UAAa,GAAqB;;QAC1B,IAAA,KAA0B,IAAI,CAAC,KAAK,EAA7B,KAAK,UAAA,EAAE,QAAQ,cAAc,CAAC;QACpC,IAAA,UAAU,GAAI,IAAI,CAAC,KAAK,WAAd,CAAe;QAChC,IAAM,IAAI,GAAG,QAAQ,IAAI,KAAK,CAAC;QAC/B,IAAI,IAAI,KAAK,UAAU,IAAI,CAAC,UAAU,EAAE;YACtC,OAAO;SACR;QACK,IAAA,KAAwB,IAAI,CAAC,KAAK,EAAjC,SAAS,eAAA,EAAE,QAAQ,cAAc,CAAC;QACzC,IAAM,UAAU,GAAG,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;QACvD,IAAM,YAAY,GAAG,MAAC,QAAkB,0CAAE,SAAS,CACjD,UAAC,IAAS,IAAK,OAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,KAAK,UAAU,EAAlC,CAAkC,CAClD,CAAC;QACF,IAAM,EAAE,GAAG,CAAA,MAAA,MAAA,IAAI,CAAC,OAAO,CAAC,OAAO,0CAAE,QAAQ,CAAC,CAAC,CAAC,0CAAE,QAAQ,KAAI,EAAE,CAAC;QAC7D,IAAM,SAAS,GAAG,EAAE,CAAC,YAAY,CAAgB,CAAC;QAClD,IAAM,YAAY,GAAG,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,UAAU,CAAC;QAC3C,IAAM,aAAa,GAAG,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,WAAW,CAAC;QAC7C,IAAM,UAAU,GAAG,CAAA,MAAA,IAAI,CAAC,OAAO,CAAC,OAAO,0CAAE,UAAU,KAAI,CAAC,CAAC;QACzD,IAAM,WAAW,GAAG,CAAA,MAAA,IAAI,CAAC,OAAO,CAAC,OAAO,0CAAE,WAAW,KAAI,CAAC,CAAC;QAE3D,SAAS;QACT,IAAI,UAAU,GAAG,YAAY,EAAE;YAC7B,MAAA,IAAI,CAAC,OAAO,CAAC,OAAO,0CAAE,QAAQ,CAAC;gBAC7B,IAAI,EAAE,YAAY;gBAClB,QAAQ,EAAE,QAAQ;aACnB,CAAC,CAAC;SACJ;QACD,SAAS;QACT,IAAI,YAAY,GAAG,aAAa,GAAG,UAAU,GAAG,WAAW,EAAE;YAC3D,MAAA,IAAI,CAAC,OAAO,CAAC,OAAO,0CAAE,QAAQ,CAAC;gBAC7B,IAAI,EAAE,YAAY,GAAG,aAAa,GAAG,WAAW;gBAChD,QAAQ,EAAE,QAAQ;aACnB,CAAC,CAAC;SACJ;IACH,CAAC;IAED,2BAAY,GAAZ,UAAa,GAAoB;QAAjC,iBAOC;QANQ,IAAA,QAAQ,GAAI,IAAI,CAAC,KAAK,SAAd,CAAe;QAC9B,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QACvB,UAAU,CAAC;YACT,KAAI,CAAC,gBAAgB,EAAE,CAAC;QAC1B,CAAC,EAAE,GAAG,CAAC,CAAC;QACR,QAAQ,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC5B,CAAC;IAGD,8BAAe,GAAf,UAAgB,KAAa,EAAE,KAAa;QAC1C,IAAI,CAAC,QAAQ,CAAC;YACZ,YAAY,EAAE,KAAK;YACnB,aAAa,EAAE,KAAK;YACpB,cAAc,EAAE,KAAK;SACtB,CAAC,CAAC;IACL,CAAC;IAGD,oCAAqB,GAArB,UAAsB,CAAsC;QAC1D,IAAI,CAAC,QAAQ,CAAC;YACZ,aAAa,EAAE,CAAC,CAAC,aAAa,CAAC,KAAK;SACrC,CAAC,CAAA;IACJ,CAAC;IAGD,yBAAU,GAAV;QACM,IAAA,KAAgD,IAAI,CAAC,KAAK,EAAzD,YAAY,kBAAA,EAAE,aAAa,mBAAA,EAAE,cAAc,oBAAc,CAAC;QACxD,IAAA,MAAM,GAAI,IAAI,CAAC,KAAK,OAAd,CAAe;QAG5B,IAAI,CAAC,QAAQ,CAAC;YACZ,YAAY,EAAE,IAAI;YAClB,aAAa,EAAE,IAAI;YACnB,cAAc,EAAE,IAAI;SACrB,CAAC,CAAC;QAEH,MAAM;eACD,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,EAAE,CAAC;eAC9C,CAAC,aAAa,KAAK,cAAc,CAAC;eAClC,MAAM,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;IAC3C,CAAC;IAGD,yBAAU,GAAV,UAAW,GAAQ;QACjB,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,GAAG,EAAE;YACxB,IAAI,CAAC,YAAY,EAAE,CAAC;SACrB;aAAM,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,GAAG,EAAE;YAC/B,IAAI,CAAC,eAAe,EAAE,CAAC;SACxB;QAED,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC;IACrB,CAAC;IAGD,8BAAe,GAAf;QACE,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;IAC3C,CAAC;IAGD,2BAAY,GAAZ;QADA,iBAwCC;QAtCO,IAAA,KAAkC,IAAI,CAAC,KAAK,EAA9B,EAAE,iBAAA,EAAE,YAAY,kBAAc,CAAC;QACnD,IAAM,GAAG,GAAG,IAAA,uBAAW,EAAC,IAAI,CAAgB,CAAC;QAE7C,IAAI,CAAC,QAAQ,GAAG,IAAI,oBAAQ,CAC1B,GAAG,CAAC,aAAa,CAAC,WAAI,EAAE,eAAY,CAAgB,EACpD;YACE,KAAK,EAAE,IAAI,CAAC,EAAE;YACd,SAAS,EAAE,GAAG;YACd,MAAM,EAAE,WAAI,EAAE,cAAW;YACzB,UAAU,EAAE,UAAG,EAAE,wBAAqB;YACtC,OAAO,EAAE;gBACP,KAAI,CAAC,OAAO,GAAG,IAAI,CAAC;YACtB,CAAC;YACD,KAAK,EAAE,UAAC,CAAM;gBACZ,OAAO;gBACP,IAAI,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,QAAQ,EAAE;oBAC7B,OAAO;iBACR;gBAED,QAAQ;gBACR,IAAM,MAAM,GAAG,CAAC,CAAC,EAAiB,CAAC;gBACnC,IAAI,CAAC,CAAC,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;oBAC7C,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,UAAU,CAC3C,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,QAAQ,CACvD,CAAC,CAAC;iBACJ;qBACI;oBACH,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;iBAC5B;gBAED,UAAU,CAAC;oBACT,KAAI,CAAC,OAAO,GAAG,KAAK,CAAC;gBACvB,CAAC,CAAC,CAAC;gBAEH,YAAY,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC;YAClC,CAAC;SACF,CACF,CAAC;IACJ,CAAC;IAED,0BAAW,GAAX,UAAY,IAAsB;;QAC1B,IAAA,KAAyC,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI;YACrE,UAAU,EAAE,CAAC;YACb,WAAW,EAAE,CAAC;YACd,WAAW,EAAE,CAAC;SACf,EAJM,UAAU,gBAAA,EAAE,WAAW,iBAAA,EAAE,WAAW,iBAI1C,CAAC;QACF,IAAI,IAAI,KAAK,MAAM,IAAI,UAAU,GAAG,CAAC,EAAE;YACrC,MAAA,IAAI,CAAC,OAAO,CAAC,OAAO,0CAAE,QAAQ,CAAC;gBAC7B,IAAI,EAAE,CAAC;gBACP,QAAQ,EAAE,QAAQ;aACnB,CAAC,CAAC;YACH,IAAI,CAAC,QAAQ,CAAC;gBACZ,kBAAkB,EAAE,KAAK;gBACzB,iBAAiB,EAAE,IAAI;aACxB,CAAC,CAAC;SACJ;aAAM,IAAI,IAAI,KAAK,OAAO,IAAI,WAAW,GAAG,UAAU,GAAG,WAAW,EAAE;YACrE,MAAA,IAAI,CAAC,OAAO,CAAC,OAAO,0CAAE,QAAQ,CAAC;gBAC7B,IAAI,EAAE,MAAA,IAAI,CAAC,OAAO,CAAC,OAAO,0CAAE,WAAW;gBACvC,QAAQ,EAAE,QAAQ;aACnB,CAAC,CAAC;YACH,IAAI,CAAC,QAAQ,CAAC;gBACZ,kBAAkB,EAAE,IAAI;gBACxB,iBAAiB,EAAE,KAAK;aACzB,CAAC,CAAC;SACJ;QACD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;IACrB,CAAC;IAED;;OAEG;IAEH,0BAAW,GAAX,UAAY,CAAa;;QAChB,IAAA,MAAM,GAAY,CAAC,OAAb,EAAE,MAAM,GAAI,CAAC,OAAL,CAAM;QAC3B,IAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC9B,IAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAE9B,kBAAkB;QAClB,IAAI,IAAI,GAAG,IAAI,EAAE;YACf,MAAA,IAAI,CAAC,OAAO,CAAC,OAAO,0CAAE,QAAQ,CAAC;gBAC7B,IAAI,EAAE,CAAA,MAAA,IAAI,CAAC,OAAO,CAAC,OAAO,0CAAE,UAAU,IAAG,MAAM;aAChD,CAAC,CAAC;YACH,CAAC,CAAC,cAAc,EAAE,CAAC;SACpB;QACD,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;IACrB,CAAC;IAED,wBAAS,GAAT,UAAU,KAAU,EAAE,KAAa;QAAnC,iBAwHC;QAvHC,IAAI,CAAC,KAAK,EAAE;YACV,OAAO;SACR;QAEK,IAAA,KASF,IAAI,CAAC,KAAK,EARA,EAAE,gBAAA,EACH,aAAa,eAAA,EACxB,IAAI,UAAA,EACJ,QAAQ,cAAA,EACR,SAAS,eAAA,EACT,OAAO,aAAA,EACP,gBAAgB,sBAAA,EAChB,QAAQ,cACI,CAAC;QAET,IAAA,KASF,KAAK,CAAC,KAAK,EARb,QAAQ,cAAA,EACR,QAAQ,cAAA,EACR,IAAI,UAAA,EACJ,YAAY,kBAAA,EACZ,KAAK,WAAA,EACL,OAAO,aAAA,EACP,YAAY,kBAAA,EACF,WAAW,cACR,CAAC;QAGV,IAAA,KAAgC,IAAI,CAAC,KAAK,EAAzC,YAAY,kBAAA,EAAE,aAAa,mBAAc,CAAC;QAEjD,IAAM,SAAS,GACb,aAAa,KAAK,SAAS,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC;QAExE,IAAM,WAAW,GAAG,IAAA,mBAAY,EAAC,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QAEnD,IAAM,IAAI,GAAG,CACX,yCAEI,QAAQ,IAAI,YAAY,KAAK,KAAK,CAAC,CAAC,CAAC,CACnC,yCACE,SAAS,EAAE,EAAE,CAAC,gBAAgB,CAAC,EAC/B,IAAI,EAAC,MAAM,EACX,KAAK,EAAE,aAAa,EACpB,SAAS,QACT,OAAO,EAAE,UAAC,CAAsC,IAAK,OAAA,CAAC,CAAC,aAAa,CAAC,MAAM,EAAE,EAAxB,CAAwB,EAC7E,QAAQ,EAAE,IAAI,CAAC,qBAAqB,EACpC,MAAM,EAAE,IAAI,CAAC,UAAU,EACvB,UAAU,EAAE,UAAC,CAAsB,IAAK,OAAA,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,IAAI,KAAI,CAAC,UAAU,EAAE,EAA3C,CAA2C,GACnF,CACH,CAAC,CAAC,CAAC,CACF;YACG,IAAI,CAAC,CAAC,CAAC,CACN,YAAY,KAAK,OAAO,CAAC,CAAC,CAAC,CACzB;gBACG,KAAK;;gBAAG,WAAW,CACnB,CACJ,CAAC,CAAC,CAAC,CACF;gBACG,WAAW;;gBAAG,KAAK,CACnB,CACJ,CACF,CAAC,CAAC,CAAC,CACF,KAAK,CACN;YACA,eAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAC9C,CACJ,CAED,CACL,CAAC;QAEF,OAAO,CACL,sCACE,SAAS,EAAE,EAAE,CACX,WAAW,EACX,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,EACzC,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,EAC7B,YAAY,CACb,EACD,GAAG,EAAE,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,KAAK,EACtB,OAAO,EAAE,cAAM,OAAA,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,EAA7C,CAA6C,EAC5D,aAAa,EAAE;gBACb,QAAQ,IAAI,KAAI,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YACjD,CAAC;YAGC,OAAO,CAAC,CAAC,CAAC,CACR,8BAAC,wBAAc,IACb,SAAS,EAAC,KAAK,EACf,OAAO,EAAE,KAAK,EACd,OAAO,EAAC,OAAO,EACf,gBAAgB,EAAE,gBAAgB,IAEjC,IAAI,CACU,CAClB,CAAC,CAAC,CAAC,IAAI;YAIR,CAAC,WAAW,aAAX,WAAW,cAAX,WAAW,GAAI,QAAQ,CAAC,IAAI,CAC3B,wCAAM,SAAS,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,OAAO,EAAE,UAAC,CAAmB;oBACnE,CAAC,CAAC,eAAe,EAAE,CAAC;oBACpB,KAAI,CAAC,KAAK,CAAC,OAAO,IAAI,KAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,KAAK,CAAC,CAAC;gBACrE,CAAC;gBACC,8BAAC,YAAI,IAAC,IAAI,EAAC,OAAO,EAAC,SAAS,EAAE,EAAE,CAAC,sBAAsB,CAAC,GAAI,CACvD,CACR;YAEF,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CACnB,uCAAK,SAAS,EAAC,uBAAuB;gBACpC,uCAAK,OAAO,EAAC,aAAa,EAAC,SAAS,EAAC,8BAA8B;oBACjE,wCAAM,CAAC,EAAC,uGAAuG,GAAQ,CACnH;gBACN,uCAAK,OAAO,EAAC,aAAa,EAAC,SAAS,EAAC,6BAA6B;oBAChE,wCAAM,CAAC,EAAC,sFAAsF,GAAQ,CAClG,CACF,CACP,CAAC,CAAC,CAAC,IAAI,CACL,CACN,CAAC;IACJ,CAAC;IAED,wBAAS,GAAT,UAAU,KAAU,EAAE,KAAa;QACjC,IAAI,CAAC,KAAK,EAAE;YACV,OAAO;SACR;QAEK,IAAA,KAAyC,IAAI,CAAC,KAAK,EAAvC,aAAa,eAAA,EAAE,UAAU,gBAAc,CAAC;QAC1D,IAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC;QACtC,IAAM,SAAS,GACb,aAAa,KAAK,SAAS,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC;QAExE,OAAO,eAAK,CAAC,YAAY,CAAC,KAAK,kDAC1B,KAAK,CAAC,KAAK,KACd,GAAG,EAAE,QAAQ,EACb,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,SAAS,IACpB,CAAC;IACL,CAAC;IAED,0BAAW,GAAX,UAAY,IAAsB;QAAlC,iBAqBC;QApBO,IAAA,KAA0B,IAAI,CAAC,KAAK,EAA7B,KAAK,UAAA,EAAE,QAAQ,cAAc,CAAC;QAC3C,IAAM,IAAI,GAAG,QAAQ,IAAI,KAAK,CAAC;QAC/B,IAAI,IAAI,KAAK,UAAU,EAAE;YACvB,OAAO;SACR;QACM,IAAY,EAAE,GAAI,IAAI,CAAC,KAAK,WAAd,CAAe;QAC9B,IAAA,KAAsD,IAAI,CAAC,KAAK,EAA/D,UAAU,gBAAA,EAAE,iBAAiB,uBAAA,EAAE,kBAAkB,wBAAc,CAAC;QACvE,IAAM,QAAQ,GAAG,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,kBAAkB,CAAC;QAC1E,OAAO,UAAU,CAAC,CAAC,CAAC,CAClB,uCACE,OAAO,EAAE,cAAM,OAAA,KAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAtB,CAAsB,EACrC,SAAS,EAAE,EAAE,CACX,2BAA2B,EAC3B,6BAA6B,GAAG,IAAI,EACpC,QAAQ,IAAI,qCAAqC,CAClD;YAED,qCAAG,SAAS,EAAE,sBAAsB,GAAG,IAAI,GAAI,CAC3C,CACP,CAAC,CAAC,CAAC,IAAI,CAAC;IACX,CAAC;IAED,2BAAY,GAAZ;QACS,IAAA,KAAK,GAAI,IAAI,CAAC,KAAK,MAAd,CAAe;QAE3B,KAAK,IAAI,KAAK,EAAE,CAAC;IACnB,CAAC;IAED,qBAAM,GAAN;;QAAA,iBAqFC;QApFO,IAAA,KAYF,IAAI,CAAC,KAAK,EAXA,EAAE,gBAAA,EACd,gBAAgB,sBAAA,EAChB,SAAS,eAAA,EACH,KAAK,UAAA,EACX,QAAQ,cAAA,EACR,QAAQ,cAAA,EACR,YAAY,kBAAA,EACZ,OAAO,aAAA,EACP,cAAc,oBAAA,EACd,OAAO,aAAA,EACP,SAAS,eACG,CAAC;QAER,IAAA,UAAU,GAAI,IAAI,CAAC,KAAK,WAAd,CAAe;QAChC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;YAC5B,OAAO,IAAI,CAAC;SACb;QAED,IAAM,IAAI,GAAG,QAAQ,IAAI,KAAK,CAAC;QAE/B,OAAO,CACL,uCACE,SAAS,EAAE,EAAE,CACX,MAAM;gBAEJ,GAAC,gBAAS,IAAI,CAAE,IAAG,IAAI;qBAEzB,SAAS,CACV;YAGD,CAAC,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CACvC,uCAAK,SAAS,EAAE,EAAE,CAAC,6BAA6B,CAAC;gBAC/C,uCACE,SAAS,EAAE,EAAE,CACX,qBAAqB,EACrB,UAAU,IAAI,+BAA+B,CAC9C;oBAEA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;oBACzB,uCAAK,SAAS,EAAE,EAAE,CAAC,0BAA0B,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,OAAO;wBAC/D,sCAAI,SAAS,EAAE,EAAE,CAAC,YAAY,EAAE,cAAc,CAAC,EAAE,IAAI,EAAC,SAAS;4BAC5D,QAAQ,CAAC,GAAG,CAAC,UAAC,GAAG,EAAE,KAAK,IAAK,OAAA,KAAI,CAAC,SAAS,CAAC,GAAG,EAAE,KAAK,CAAC,EAA1B,CAA0B,CAAC;4BACxD,YAAY;4BACZ,OAAO,CACL,CACD;oBACL,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CACtB;gBAEJ,OAAO,IAAI,CACT,uCAAK,SAAS,EAAE,EAAE,CAAC,cAAc,CAAC,EAAE,OAAO,EAAE,cAAM,OAAA,KAAI,CAAC,YAAY,EAAE,EAAnB,CAAmB;oBACpE,8BAAC,YAAI,IAAC,IAAI,EAAC,MAAM,EAAC,SAAS,EAAE,EAAE,CAAC,mBAAmB,CAAC,GAAI;mCAEpD,CACP,CAEC,CACP,CAAC,CAAC,CAAC,CACF,uCAAK,SAAS,EAAE,EAAE,CAAC,mBAAmB,CAAC;gBACrC,sCAAI,SAAS,EAAE,EAAE,CAAC,YAAY,EAAE,cAAc,CAAC,EAAE,IAAI,EAAC,SAAS;oBAC5D,QAAQ,CAAC,GAAG,CAAC,UAAC,GAAG,EAAE,KAAK,IAAK,OAAA,KAAI,CAAC,SAAS,CAAC,GAAG,EAAE,KAAK,CAAC,EAA1B,CAA0B,CAAC;oBACxD,YAAY;oBACZ,OAAO,CACL,CACD,CACP;YAED,uCAAK,SAAS,EAAE,EAAE,CAAC,cAAc,EAAE,gBAAgB,CAAC,IACjD,QAAQ,CAAC,GAAG,CAAC,UAAC,KAAK,EAAE,KAAK;gBACzB,OAAO,KAAI,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YACtC,CAAC,CAAC,CACE;YAEJ,SAAS,IAAI,CACX,uCACE,SAAS,EAAE,EAAE,CAAC,eAAe,CAAC,EAC9B,GAAG,EAAE,IAAI,CAAC,UAAU,GACpB,CACH,CAEC,CACP,CAAC;IACJ,CAAC;;IA/iBM,iBAAY,GAEf;QACF,IAAI,EAAE,EAAE;QACR,gBAAgB,EAAE,EAAE;QACpB,OAAO,EAAE,KAAK;QACd,gBAAgB,EAAE,EAAE;KACrB,CAAC;IAEK,QAAG,GAAG,WAAG,CAAC;IA6JjB;QADC,iBAAQ;;;;+CAOR;IAGD;QADC,iBAAQ;;0EACgB,eAAK,oBAAL,eAAK,CAAC,WAAW;;qDAIzC;IAGD;QADC,iBAAQ;;;;0CAgBR;IAGD;QADC,iBAAQ;;;;0CASR;IAGD;QADC,iBAAQ;;;;+CAGR;IAGD;QADC,iBAAQ;;;;4CAwCR;IAkCD;QADC,iBAAQ;;0EACM,UAAU,oBAAV,UAAU;;2CAcxB;IAiQH,WAAC;CAAA,AAjjBD,CAA0B,eAAK,CAAC,SAAS,GAijBxC;AAjjBY,oBAAI;AAmjBjB,IAAM,UAAU,GAAG,IAAA,iBAAS,EAC1B,IAAA,+BAAc,EAAC,IAAI,EAAE;IACnB,SAAS,EAAE,UAAU;CACtB,CAAC,CACH,CAAC;AAEF,kBAAe,UAEd,CAAC",
|
9
|
+
"mappings": "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",
|
10
10
|
"sourcesContent": [
|
11
|
-
"/**\n * @file Tabs\n * @description 选项卡\n * @author fex\n */\n\nimport React from 'react';\nimport {Schema} from '../types';\nimport Transition, {ENTERED, ENTERING} from 'react-transition-group/Transition';\nimport {themeable, ThemeProps} from '../theme';\nimport {uncontrollable} from 'uncontrollable';\nimport {generateIcon} from '../utils/icon';\nimport {SchemaClassName} from '../Schema';\nimport {autobind, guid} from '../utils/helper';\nimport {Icon} from './icons';\nimport debounce from 'lodash/debounce';\nimport {findDOMNode} from 'react-dom';\nimport TooltipWrapper, {TooltipObject, Trigger} from './TooltipWrapper';\n\nimport Sortable from 'sortablejs';\n\nconst transitionStyles: {\n [propName: string]: string;\n} = {\n [ENTERING]: 'in',\n [ENTERED]: 'in'\n};\n\nexport type TabsMode = '' | 'line' | 'card' | 'radio' | 'vertical' | 'chrome' | 'simple' | 'strong';\n\nexport interface TabProps extends ThemeProps {\n title?: string | React.ReactNode; // 标题\n icon?: string;\n iconPosition?: 'left' | 'right';\n disabled?: boolean | string;\n eventKey: string | number;\n tab?: Schema;\n className?: string;\n activeKey?: string | number;\n reload?: boolean;\n mountOnEnter?: boolean;\n unmountOnExit?: boolean;\n toolbar?: React.ReactNode;\n}\n\nclass TabComponent extends React.PureComponent<TabProps> {\n contentDom: any;\n contentRef = (ref: any) => (this.contentDom = ref);\n\n render() {\n const {\n classnames: cx,\n mountOnEnter,\n reload,\n unmountOnExit,\n eventKey,\n activeKey,\n children,\n className\n } = this.props;\n\n return (\n <Transition\n in={activeKey === eventKey}\n mountOnEnter={mountOnEnter}\n unmountOnExit={typeof reload === 'boolean' ? reload : unmountOnExit}\n timeout={500}\n >\n {(status: string) => {\n if (status === ENTERING) {\n this.contentDom.offsetWidth;\n }\n return (\n <div\n ref={this.contentRef}\n className={cx(\n transitionStyles[status],\n activeKey === eventKey ? 'is-active' : '',\n 'Tabs-pane',\n className\n )}\n >\n {children}\n </div>\n );\n }}\n </Transition>\n );\n }\n}\n\nexport const Tab = themeable(TabComponent);\n\nexport interface TabsProps extends ThemeProps {\n mode: TabsMode;\n tabsMode?: TabsMode;\n additionBtns?: React.ReactNode;\n onSelect?: (key: string | number) => void;\n activeKey?: string | number;\n contentClassName: string;\n linksClassName?: SchemaClassName;\n className?: string;\n tabs?: Array<TabProps>;\n tabRender?: (tab: TabProps, props?: TabsProps) => JSX.Element;\n toolbar?: React.ReactNode;\n addable?: boolean; // 是否显示增加按钮\n onAdd?: () => void;\n closable?: boolean;\n onClose?: (index: number, key: string | number) => void;\n draggable?: boolean;\n onDragChange?: (e: any) => void;\n showTip?: boolean;\n showTipClassName?: string;\n scrollable?: boolean; // 属性废弃,为了兼容暂且保留\n editable?: boolean;\n onEdit?: (index: number, text: string) => void;\n}\n\nexport interface IDragInfo {\n nodeId: string;\n}\n\nexport class Tabs extends React.Component<TabsProps, any> {\n static defaultProps: Pick<TabsProps,\n 'mode' | 'contentClassName' | 'showTip' | 'showTipClassName'\n > = {\n mode: '',\n contentClassName: '',\n showTip: false,\n showTipClassName: ''\n };\n\n static Tab = Tab;\n navMain = React.createRef<HTMLDivElement>();\n scroll: boolean = false;\n sortable?: Sortable;\n dragTip?: HTMLElement;\n id: string = guid();\n draging: boolean = false;\n\n checkArrowStatus = debounce(\n () => {\n const {scrollLeft, scrollWidth, clientWidth} = this.navMain.current || {\n scrollLeft: 0,\n scrollWidth: 0,\n clientWidth: 0\n };\n const {arrowRightDisabled, arrowLeftDisabled} = this.state;\n if (scrollLeft === 0 && !arrowLeftDisabled) {\n this.setState({\n arrowRightDisabled: false,\n arrowLeftDisabled: true\n });\n } else if (\n scrollWidth === scrollLeft + clientWidth &&\n !arrowRightDisabled\n ) {\n this.setState({\n arrowRightDisabled: true,\n arrowLeftDisabled: false\n });\n } else if (scrollLeft !== 0 && arrowLeftDisabled) {\n this.setState({\n arrowLeftDisabled: false\n });\n } else if (\n scrollWidth !== scrollLeft + clientWidth &&\n arrowRightDisabled\n ) {\n this.setState({\n arrowRightDisabled: false\n });\n }\n },\n 100,\n {\n trailing: true,\n leading: false\n }\n );\n\n constructor(props: TabsProps) {\n super(props);\n this.state = {\n isOverflow: false,\n arrowLeftDisabled: false,\n arrowRightDisabled: false,\n dragIndicator: null,\n editingIndex: null,\n editInputText: null,\n editOriginText: null\n };\n }\n\n componentDidMount() {\n this.computedWidth();\n if (this.navMain) {\n this.navMain.current?.addEventListener('wheel', this.handleWheel, {\n passive: false\n });\n this.checkArrowStatus();\n }\n }\n\n componentDidUpdate() {\n // 判断是否是由滚动触发的数据更新,如果是则不需要再次判断容器与内容的关系\n if (!this.scroll && !this.draging) {\n this.computedWidth();\n }\n this.scroll = false;\n }\n\n componentWillUnmount() {\n this.checkArrowStatus.cancel();\n }\n\n /**\n * 处理内容与容器之间的位置关系\n */\n computedWidth() {\n const {mode: dMode, tabsMode} = this.props;\n const mode = tabsMode || dMode;\n if (mode === 'vertical') {\n return;\n }\n \n const navMainRef = this.navMain.current;\n const clientWidth: number = navMainRef?.clientWidth || 0;\n const scrollWidth: number = navMainRef?.scrollWidth || 0;\n const isOverflow = scrollWidth > clientWidth;\n\n // 内容超出容器长度标记溢出\n if (isOverflow !== this.state.isOverflow) {\n this.setState({isOverflow});\n }\n\n // 正在拖动的不自动定位\n if (isOverflow && !this.draging) {\n this.showSelected();\n }\n }\n /**\n * 保证选中的tab始终显示在可视区域\n */\n showSelected(key?: string | number) {\n const {mode: dMode, tabsMode} = this.props;\n const {isOverflow} = this.state;\n const mode = tabsMode || dMode;\n if (mode === 'vertical' || !isOverflow) {\n return;\n }\n const {activeKey, children} = this.props;\n const currentKey = key !== undefined ? key : activeKey;\n const currentIndex = (children as any[])?.findIndex(\n (item: any) => item.props.eventKey === currentKey\n );\n const li = this.navMain.current?.children[0]?.children || [];\n const currentLi = li[currentIndex] as HTMLElement;\n const liOffsetLeft = currentLi?.offsetLeft;\n const liClientWidth = currentLi?.clientWidth;\n const scrollLeft = this.navMain.current?.scrollLeft || 0;\n const clientWidth = this.navMain.current?.clientWidth || 0;\n\n // 左边被遮住了\n if (scrollLeft > liOffsetLeft) {\n this.navMain.current?.scrollTo({\n left: liOffsetLeft,\n behavior: 'smooth'\n });\n }\n // 右边被遮住了\n if (liOffsetLeft + liClientWidth > scrollLeft + clientWidth) {\n this.navMain.current?.scrollTo({\n left: liOffsetLeft + liClientWidth - clientWidth,\n behavior: 'smooth'\n });\n }\n }\n\n handleSelect(key: string | number) {\n const {onSelect} = this.props;\n this.showSelected(key);\n setTimeout(() => {\n this.checkArrowStatus();\n }, 500);\n onSelect && onSelect(key);\n }\n\n @autobind\n handleStartEdit(index: number, title: string) {\n this.setState({\n editingIndex: index,\n editInputText: title,\n editOriginText: title\n });\n }\n\n @autobind\n handleEditInputChange(e: React.ChangeEvent<HTMLInputElement>) {\n this.setState({\n editInputText: e.currentTarget.value\n })\n }\n\n @autobind\n handleEdit() {\n let {editingIndex, editInputText, editOriginText} = this.state;\n const {onEdit} = this.props;\n\n\n this.setState({\n editingIndex: null,\n editInputText: null,\n editOriginText: null\n });\n\n onEdit\n && (editInputText = String(editInputText).trim())\n && (editInputText !== editOriginText)\n && onEdit(editingIndex, editInputText);\n }\n\n @autobind\n dragTipRef(ref: any) {\n if (!this.dragTip && ref) {\n this.initDragging();\n } else if (this.dragTip && !ref) {\n this.destroyDragging();\n }\n\n this.dragTip = ref;\n }\n\n @autobind\n destroyDragging() {\n this.sortable && this.sortable.destroy();\n }\n\n @autobind\n initDragging() {\n const {classPrefix: ns, onDragChange} = this.props;\n const dom = findDOMNode(this) as HTMLElement;\n\n this.sortable = new Sortable(\n dom.querySelector(`.${ns}Tabs-links`) as HTMLElement,\n {\n group: this.id,\n animation: 250,\n handle: `.${ns}Tabs-link`,\n ghostClass: `${ns}Tabs-link--dragging`,\n onStart: () => {\n this.draging = true;\n },\n onEnd: (e: any) => {\n // 没有移动\n if (e.newIndex === e.oldIndex) {\n return;\n }\n\n // 再交换回来\n const parent = e.to as HTMLElement;\n if (e.oldIndex < parent.childNodes.length - 1) {\n parent.insertBefore(e.item, parent.childNodes[\n e.oldIndex > e.newIndex ? e.oldIndex + 1 : e.oldIndex\n ]);\n }\n else {\n parent.appendChild(e.item);\n }\n\n setTimeout(() => {\n this.draging = false;\n });\n\n onDragChange && onDragChange(e);\n }\n }\n );\n }\n\n handleArrow(type: 'left' | 'right') {\n const {scrollLeft, scrollWidth, clientWidth} = this.navMain.current || {\n scrollLeft: 0,\n scrollWidth: 0,\n clientWidth: 0\n };\n if (type === 'left' && scrollLeft > 0) {\n this.navMain.current?.scrollTo({\n left: 0,\n behavior: 'smooth'\n });\n this.setState({\n arrowRightDisabled: false,\n arrowLeftDisabled: true\n });\n } else if (type === 'right' && scrollWidth > scrollLeft + clientWidth) {\n this.navMain.current?.scrollTo({\n left: this.navMain.current?.scrollWidth,\n behavior: 'smooth'\n });\n this.setState({\n arrowRightDisabled: true,\n arrowLeftDisabled: false\n });\n }\n this.scroll = true;\n }\n\n /**\n * 监听导航上的滚动事件\n */\n @autobind\n handleWheel(e: WheelEvent) {\n const {deltaY, deltaX} = e;\n const absX = Math.abs(deltaX);\n const absY = Math.abs(deltaY);\n\n // 当鼠标上下滚动时转换为左右滚动\n if (absY > absX) {\n this.navMain.current?.scrollTo({\n left: this.navMain.current?.scrollLeft + deltaY\n });\n e.preventDefault();\n }\n this.checkArrowStatus();\n this.scroll = true;\n }\n\n renderNav(child: any, index: number) {\n if (!child) {\n return;\n }\n\n const {\n classnames: cx,\n activeKey: activeKeyProp,\n mode,\n closable,\n draggable,\n showTip,\n showTipClassName,\n editable\n } = this.props;\n\n const {\n eventKey,\n disabled,\n icon,\n iconPosition,\n title,\n toolbar,\n tabClassName,\n closable: tabClosable\n } = child.props;\n\n\n const {editingIndex, editInputText} = this.state;\n\n const activeKey =\n activeKeyProp === undefined && index === 0 ? eventKey : activeKeyProp;\n\n const iconElement = generateIcon(cx, icon, 'Icon');\n\n const link = (\n <a>\n {\n editable && editingIndex === index ? (\n <input\n className={cx('Tabs-link-edit')}\n type=\"text\"\n value={editInputText}\n autoFocus\n onFocus={(e: React.ChangeEvent<HTMLInputElement>) => e.currentTarget.select()}\n onChange={this.handleEditInputChange}\n onBlur={this.handleEdit}\n onKeyPress={(e: React.KeyboardEvent) => e && e.key === 'Enter' && this.handleEdit()}\n />\n ) : (\n <>\n {icon ? (\n iconPosition === 'right' ? (\n <>\n {title} {iconElement}\n </>\n ) : (\n <>\n {iconElement} {title}\n </>\n )\n ) : (\n title\n )}\n {React.isValidElement(toolbar) ? toolbar : null}\n </>\n )\n }\n </a>\n );\n\n return (\n <li\n className={cx(\n 'Tabs-link',\n activeKey === eventKey ? 'is-active' : '',\n disabled ? 'is-disabled' : '',\n tabClassName\n )}\n key={eventKey ?? index}\n onClick={() => (disabled ? '' : this.handleSelect(eventKey))}\n onDoubleClick={() => {\n editable && this.handleStartEdit(index, title);\n }}\n >\n {\n showTip ? (\n <TooltipWrapper\n placement='top'\n tooltip={title}\n trigger='hover'\n tooltipClassName={showTipClassName}\n >\n {link}\n </TooltipWrapper>\n ) : link\n }\n\n {\n (tabClosable ?? closable) && (\n <span className={cx('Tabs-link-close')} onClick={(e: React.MouseEvent) => {\n e.stopPropagation();\n this.props.onClose && this.props.onClose(index, eventKey ?? index);\n }}>\n <Icon icon=\"close\" className={cx('Tabs-link-close-icon')} />\n </span>\n )\n }\n {mode === 'chrome' ? (\n <div className=\"chrome-tab-background\">\n <svg viewBox=\"0 0 124 124\" className=\"chrome-tab-background--right\">\n <path d=\"M0,0 C0,68.483309 55.516691,124 124,124 L0,124 L0,-1 C0.00132103964,-0.667821298 0,-0.334064922 0,0 Z\"></path>\n </svg>\n <svg viewBox=\"0 0 124 124\" className=\"chrome-tab-background--left\">\n <path d=\"M124,0 L124,125 L0,125 L0,125 C68.483309,125 124,69.483309 124,1 L123.992,0 L124,0 Z\"></path>\n </svg>\n </div>\n ) : null}\n </li>\n );\n }\n\n renderTab(child: any, index: number) {\n if (!child) {\n return;\n }\n\n const {activeKey: activeKeyProp, classnames} = this.props;\n const eventKey = child.props.eventKey;\n const activeKey =\n activeKeyProp === undefined && index === 0 ? eventKey : activeKeyProp;\n\n return React.cloneElement(child, {\n ...child.props,\n key: eventKey,\n classnames: classnames,\n activeKey: activeKey\n });\n }\n\n renderArrow(type: 'left' | 'right') {\n const {mode: dMode, tabsMode} = this.props;\n const mode = tabsMode || dMode;\n if (mode === 'vertical') {\n return;\n }\n const {classnames: cx} = this.props;\n const {isOverflow, arrowLeftDisabled, arrowRightDisabled} = this.state;\n const disabled = type === 'left' ? arrowLeftDisabled : arrowRightDisabled;\n return isOverflow ? (\n <div\n onClick={() => this.handleArrow(type)}\n className={cx(\n 'Tabs-linksContainer-arrow',\n 'Tabs-linksContainer-arrow--' + type,\n disabled && 'Tabs-linksContainer-arrow--disabled'\n )}\n >\n <i className={'iconfont icon-arrow-' + type} />\n </div>\n ) : null;\n }\n\n handleAddBtn() {\n const {onAdd} = this.props;\n\n onAdd && onAdd();\n }\n\n render() {\n const {\n classnames: cx,\n contentClassName,\n className,\n mode: dMode,\n tabsMode,\n children,\n additionBtns,\n toolbar,\n linksClassName,\n addable,\n draggable\n } = this.props;\n\n const {isOverflow} = this.state;\n if (!Array.isArray(children)) {\n return null;\n }\n\n const mode = tabsMode || dMode;\n\n return (\n <div\n className={cx(\n `Tabs`,\n {\n [`Tabs--${mode}`]: mode\n },\n className\n )}\n >\n {\n !['vertical', 'chrome'].includes(mode) ? (\n <div className={cx('Tabs-linksContainer-wrapper')}>\n <div\n className={cx(\n 'Tabs-linksContainer',\n isOverflow && 'Tabs-linksContainer--overflow'\n )}\n >\n {this.renderArrow('left')}\n <div className={cx('Tabs-linksContainer-main')} ref={this.navMain}>\n <ul className={cx('Tabs-links', linksClassName)} role=\"tablist\">\n {children.map((tab, index) => this.renderNav(tab, index))}\n {additionBtns}\n {toolbar}\n </ul>\n </div>\n {this.renderArrow('right')}\n </div>\n {\n addable && (\n <div className={cx('Tabs-addable')} onClick={() => this.handleAddBtn()}>\n <Icon icon=\"plus\" className={cx('Tabs-addable-icon')} />\n 增加\n </div>\n )\n }\n </div>\n ) : (\n <div className={cx('Tabs-linksWrapper')}>\n <ul className={cx('Tabs-links', linksClassName)} role=\"tablist\">\n {children.map((tab, index) => this.renderNav(tab, index))}\n {additionBtns}\n {toolbar}\n </ul>\n </div>\n )}\n\n <div className={cx('Tabs-content', contentClassName)}>\n {children.map((child, index) => {\n return this.renderTab(child, index);\n })}\n </div>\n {\n draggable && (\n <div\n className={cx('Tabs-drag-tip')}\n ref={this.dragTipRef}\n />\n )\n }\n </div>\n );\n }\n}\n\nconst ThemedTabs = themeable(\n uncontrollable(Tabs, {\n activeKey: 'onSelect'\n })\n);\n\nexport default ThemedTabs as typeof ThemedTabs & {\n Tab: typeof Tab;\n};\n"
|
11
|
+
"/**\n * @file Tabs\n * @description 选项卡\n * @author fex\n */\n\nimport React from 'react';\nimport {Schema} from '../types';\nimport Transition, {ENTERED, ENTERING} from 'react-transition-group/Transition';\nimport {themeable, ThemeProps} from '../theme';\nimport {uncontrollable} from 'uncontrollable';\nimport {generateIcon} from '../utils/icon';\nimport {SchemaClassName} from '../Schema';\nimport {autobind, guid} from '../utils/helper';\nimport {Icon} from './icons';\nimport debounce from 'lodash/debounce';\nimport {findDOMNode} from 'react-dom';\nimport TooltipWrapper, {TooltipObject, Trigger} from './TooltipWrapper';\nimport {resizeSensor} from '../utils/resize-sensor';\n\nimport Sortable from 'sortablejs';\n\nconst transitionStyles: {\n [propName: string]: string;\n} = {\n [ENTERING]: 'in',\n [ENTERED]: 'in'\n};\n\nexport type TabsMode = '' | 'line' | 'card' | 'radio' | 'vertical' | 'chrome' | 'simple' | 'strong' | 'tiled' |'sidebar';\n\nexport interface TabProps extends ThemeProps {\n title?: string | React.ReactNode; // 标题\n icon?: string;\n iconPosition?: 'left' | 'right';\n disabled?: boolean | string;\n eventKey: string | number;\n tab?: Schema;\n className?: string;\n activeKey?: string | number;\n reload?: boolean;\n mountOnEnter?: boolean;\n unmountOnExit?: boolean;\n toolbar?: React.ReactNode;\n}\n\nclass TabComponent extends React.PureComponent<TabProps> {\n contentDom: any;\n contentRef = (ref: any) => (this.contentDom = ref);\n\n render() {\n const {\n classnames: cx,\n mountOnEnter,\n reload,\n unmountOnExit,\n eventKey,\n activeKey,\n children,\n className\n } = this.props;\n\n return (\n <Transition\n in={activeKey === eventKey}\n mountOnEnter={mountOnEnter}\n unmountOnExit={typeof reload === 'boolean' ? reload : unmountOnExit}\n timeout={500}\n >\n {(status: string) => {\n if (status === ENTERING) {\n this.contentDom.offsetWidth;\n }\n return (\n <div\n ref={this.contentRef}\n className={cx(\n transitionStyles[status],\n activeKey === eventKey ? 'is-active' : '',\n 'Tabs-pane',\n className\n )}\n >\n {children}\n </div>\n );\n }}\n </Transition>\n );\n }\n}\n\nexport const Tab = themeable(TabComponent);\n\nexport interface TabsProps extends ThemeProps {\n mode: TabsMode;\n tabsMode?: TabsMode;\n additionBtns?: React.ReactNode;\n onSelect?: (key: string | number) => void;\n activeKey?: string | number;\n contentClassName: string;\n linksClassName?: SchemaClassName;\n className?: string;\n tabs?: Array<TabProps>;\n tabRender?: (tab: TabProps, props?: TabsProps) => JSX.Element;\n toolbar?: React.ReactNode;\n addable?: boolean; // 是否显示增加按钮\n onAdd?: () => void;\n closable?: boolean;\n onClose?: (index: number, key: string | number) => void;\n draggable?: boolean;\n onDragChange?: (e: any) => void;\n showTip?: boolean;\n showTipClassName?: string;\n scrollable?: boolean; // 属性废弃,为了兼容暂且保留\n editable?: boolean;\n onEdit?: (index: number, text: string) => void;\n sidePosition?: 'left' | 'right';\n addBtnText?: string;\n}\n\nexport interface IDragInfo {\n nodeId: string;\n}\n\nexport class Tabs extends React.Component<TabsProps, any> {\n static defaultProps: Pick<TabsProps,\n 'mode' | 'contentClassName' | 'showTip' | 'showTipClassName' | 'sidePosition' | 'addBtnText'\n > = {\n mode: '',\n contentClassName: '',\n showTip: false,\n showTipClassName: '',\n sidePosition: 'left',\n addBtnText: '增加'\n };\n\n static Tab = Tab;\n navMain = React.createRef<HTMLUListElement>(); // HTMLDivElement\n scroll: boolean = false;\n sortable?: Sortable;\n dragTip?: HTMLElement;\n id: string = guid();\n draging: boolean = false;\n toDispose: Array<() => void> = [];\n resizeDom = React.createRef<HTMLDivElement>();\n\n checkArrowStatus = debounce(\n () => {\n const {scrollLeft, scrollWidth, clientWidth} = this.navMain.current || {\n scrollLeft: 0,\n scrollWidth: 0,\n clientWidth: 0\n };\n const {arrowRightDisabled, arrowLeftDisabled} = this.state;\n if (scrollLeft === 0 && !arrowLeftDisabled) {\n this.setState({\n arrowRightDisabled: false,\n arrowLeftDisabled: true\n });\n } else if (\n scrollWidth === scrollLeft + clientWidth &&\n !arrowRightDisabled\n ) {\n this.setState({\n arrowRightDisabled: true,\n arrowLeftDisabled: false\n });\n } else if (scrollLeft !== 0 && arrowLeftDisabled) {\n this.setState({\n arrowLeftDisabled: false\n });\n } else if (\n scrollWidth !== scrollLeft + clientWidth &&\n arrowRightDisabled\n ) {\n this.setState({\n arrowRightDisabled: false\n });\n }\n },\n 100,\n {\n trailing: true,\n leading: false\n }\n );\n\n constructor(props: TabsProps) {\n super(props);\n this.state = {\n isOverflow: false,\n arrowLeftDisabled: false,\n arrowRightDisabled: false,\n dragIndicator: null,\n editingIndex: null,\n editInputText: null,\n editOriginText: null\n };\n }\n\n componentDidMount() {\n this.computedWidth();\n if (this.navMain) {\n this.navMain.current?.addEventListener('wheel', this.handleWheel, {\n passive: false\n });\n this.checkArrowStatus();\n }\n\n this.resizeDom?.current && this.toDispose.push(\n resizeSensor(this.resizeDom.current as HTMLElement, () =>\n this.computedWidth()\n )\n );\n }\n\n componentDidUpdate() {\n // 判断是否是由滚动触发的数据更新,如果是则不需要再次判断容器与内容的关系\n if (!this.scroll && !this.draging) {\n this.computedWidth();\n }\n this.scroll = false;\n }\n\n componentWillUnmount() {\n this.checkArrowStatus.cancel();\n this.toDispose.forEach(fn => fn());\n this.toDispose = [];\n }\n\n /**\n * 处理内容与容器之间的位置关系\n */\n computedWidth() {\n const {mode: dMode, tabsMode} = this.props;\n const mode = tabsMode || dMode;\n if (['vertical', 'sidebar'].includes(mode)) {\n return;\n }\n \n const navMainRef = this.navMain.current;\n const clientWidth: number = navMainRef?.clientWidth || 0;\n const scrollWidth: number = navMainRef?.scrollWidth || 0;\n const isOverflow = scrollWidth > clientWidth;\n\n // 内容超出容器长度标记溢出\n if (isOverflow !== this.state.isOverflow) {\n this.setState({isOverflow});\n }\n\n // 正在拖动的不自动定位\n if (isOverflow && !this.draging) {\n this.showSelected();\n }\n }\n /**\n * 保证选中的tab始终显示在可视区域\n */\n showSelected(key?: string | number) {\n const {mode: dMode, tabsMode} = this.props;\n const {isOverflow} = this.state;\n const mode = tabsMode || dMode;\n if (['vertical', 'sidebar'].includes(mode) || !isOverflow) {\n return;\n }\n const {activeKey, children} = this.props;\n const currentKey = key !== undefined ? key : activeKey;\n const currentIndex = (children as any[])?.findIndex(\n (item: any) => item.props.eventKey === currentKey\n );\n const li = this.navMain.current?.children || [];\n const currentLi = li[currentIndex] as HTMLElement;\n const liOffsetLeft = currentLi?.offsetLeft;\n const liClientWidth = currentLi?.clientWidth;\n const scrollLeft = this.navMain.current?.scrollLeft || 0;\n const clientWidth = this.navMain.current?.clientWidth || 0;\n\n // 左边被遮住了\n if (scrollLeft > liOffsetLeft) {\n this.navMain.current?.scrollTo({\n left: liOffsetLeft,\n behavior: 'smooth'\n });\n }\n // 右边被遮住了\n if (liOffsetLeft + liClientWidth > scrollLeft + clientWidth) {\n this.navMain.current?.scrollTo({\n left: liOffsetLeft + liClientWidth - clientWidth,\n behavior: 'smooth'\n });\n }\n }\n\n handleSelect(key: string | number) {\n const {onSelect} = this.props;\n this.showSelected(key);\n setTimeout(() => {\n this.checkArrowStatus();\n }, 500);\n onSelect && onSelect(key);\n }\n\n @autobind\n handleStartEdit(index: number, title: string) {\n this.setState({\n editingIndex: index,\n editInputText: title,\n editOriginText: title\n });\n }\n\n @autobind\n handleEditInputChange(e: React.ChangeEvent<HTMLInputElement>) {\n this.setState({\n editInputText: e.currentTarget.value\n })\n }\n\n @autobind\n handleEdit() {\n let {editingIndex, editInputText, editOriginText} = this.state;\n const {onEdit} = this.props;\n\n\n this.setState({\n editingIndex: null,\n editInputText: null,\n editOriginText: null\n });\n\n onEdit\n && (editInputText = String(editInputText).trim())\n && (editInputText !== editOriginText)\n && onEdit(editingIndex, editInputText);\n }\n\n @autobind\n dragTipRef(ref: any) {\n if (!this.dragTip && ref) {\n this.initDragging();\n } else if (this.dragTip && !ref) {\n this.destroyDragging();\n }\n\n this.dragTip = ref;\n }\n\n @autobind\n destroyDragging() {\n this.sortable && this.sortable.destroy();\n }\n\n @autobind\n initDragging() {\n const {classPrefix: ns, onDragChange} = this.props;\n const dom = findDOMNode(this) as HTMLElement;\n\n this.sortable = new Sortable(\n dom.querySelector(`.${ns}Tabs-links`) as HTMLElement,\n {\n group: this.id,\n animation: 250,\n handle: `.${ns}Tabs-link`,\n ghostClass: `${ns}Tabs-link--dragging`,\n onStart: () => {\n this.draging = true;\n },\n onEnd: (e: any) => {\n // 没有移动\n if (e.newIndex === e.oldIndex) {\n return;\n }\n\n // 再交换回来\n const parent = e.to as HTMLElement;\n if (e.oldIndex < parent.childNodes.length - 1) {\n parent.insertBefore(e.item, parent.childNodes[\n e.oldIndex > e.newIndex ? e.oldIndex + 1 : e.oldIndex\n ]);\n }\n else {\n parent.appendChild(e.item);\n }\n\n setTimeout(() => {\n this.draging = false;\n });\n\n onDragChange && onDragChange(e);\n }\n }\n );\n }\n\n handleArrow(type: 'left' | 'right') {\n const {scrollLeft, scrollWidth, clientWidth} = this.navMain.current || {\n scrollLeft: 0,\n scrollWidth: 0,\n clientWidth: 0\n };\n if (type === 'left' && scrollLeft > 0) {\n this.navMain.current?.scrollTo({\n left: 0,\n behavior: 'smooth'\n });\n this.setState({\n arrowRightDisabled: false,\n arrowLeftDisabled: true\n });\n } else if (type === 'right' && scrollWidth > scrollLeft + clientWidth) {\n this.navMain.current?.scrollTo({\n left: this.navMain.current?.scrollWidth,\n behavior: 'smooth'\n });\n this.setState({\n arrowRightDisabled: true,\n arrowLeftDisabled: false\n });\n }\n this.scroll = true;\n }\n\n /**\n * 监听导航上的滚动事件\n */\n @autobind\n handleWheel(e: WheelEvent) {\n const {deltaY, deltaX} = e;\n const absX = Math.abs(deltaX);\n const absY = Math.abs(deltaY);\n\n // 当鼠标上下滚动时转换为左右滚动\n if (absY > absX) {\n this.navMain.current?.scrollTo({\n left: this.navMain.current?.scrollLeft + deltaY\n });\n e.preventDefault();\n }\n this.checkArrowStatus();\n this.scroll = true;\n }\n\n renderNav(child: any, index: number) {\n if (!child) {\n return;\n }\n\n const {\n classnames: cx,\n activeKey: activeKeyProp,\n mode,\n closable,\n draggable,\n showTip,\n showTipClassName,\n editable\n } = this.props;\n\n const {\n eventKey,\n disabled,\n icon,\n iconPosition,\n title,\n toolbar,\n tabClassName,\n closable: tabClosable\n } = child.props;\n\n\n const {editingIndex, editInputText} = this.state;\n\n const activeKey =\n activeKeyProp === undefined && index === 0 ? eventKey : activeKeyProp;\n\n const iconElement = generateIcon(cx, icon, 'Icon');\n\n const link = (\n <a>\n {\n editable && editingIndex === index ? (\n <input\n className={cx('Tabs-link-edit')}\n type=\"text\"\n value={editInputText}\n autoFocus\n onFocus={(e: React.ChangeEvent<HTMLInputElement>) => e.currentTarget.select()}\n onChange={this.handleEditInputChange}\n onBlur={this.handleEdit}\n onKeyPress={(e: React.KeyboardEvent) => e && e.key === 'Enter' && this.handleEdit()}\n />\n ) : (\n <>\n {icon ? (\n iconPosition === 'right' ? (\n <>\n {title} {iconElement}\n </>\n ) : (\n <>\n {iconElement} {title}\n </>\n )\n ) : (\n title\n )}\n {React.isValidElement(toolbar) ? toolbar : null}\n </>\n )\n }\n </a>\n );\n\n return (\n <li\n className={cx(\n 'Tabs-link',\n activeKey === eventKey ? 'is-active' : '',\n disabled ? 'is-disabled' : '',\n tabClassName\n )}\n key={eventKey ?? index}\n onClick={() => (disabled ? '' : this.handleSelect(eventKey))}\n onDoubleClick={() => {\n editable && this.handleStartEdit(index, title);\n }}\n >\n {\n showTip ? (\n <TooltipWrapper\n placement='top'\n tooltip={title}\n trigger='hover'\n tooltipClassName={showTipClassName}\n >\n {link}\n </TooltipWrapper>\n ) : link\n }\n\n {\n (tabClosable ?? closable) && (\n <span className={cx('Tabs-link-close')} onClick={(e: React.MouseEvent) => {\n e.stopPropagation();\n this.props.onClose && this.props.onClose(index, eventKey ?? index);\n }}>\n <Icon icon=\"close\" className={cx('Tabs-link-close-icon')} />\n </span>\n )\n }\n {mode === 'chrome' ? (\n <div className=\"chrome-tab-background\">\n <svg viewBox=\"0 0 124 124\" className=\"chrome-tab-background--right\">\n <path d=\"M0,0 C0,68.483309 55.516691,124 124,124 L0,124 L0,-1 C0.00132103964,-0.667821298 0,-0.334064922 0,0 Z\"></path>\n </svg>\n <svg viewBox=\"0 0 124 124\" className=\"chrome-tab-background--left\">\n <path d=\"M124,0 L124,125 L0,125 L0,125 C68.483309,125 124,69.483309 124,1 L123.992,0 L124,0 Z\"></path>\n </svg>\n </div>\n ) : null}\n </li>\n );\n }\n\n renderTab(child: any, index: number) {\n if (!child) {\n return;\n }\n\n const {activeKey: activeKeyProp, classnames} = this.props;\n const eventKey = child.props.eventKey;\n const activeKey =\n activeKeyProp === undefined && index === 0 ? eventKey : activeKeyProp;\n\n return React.cloneElement(child, {\n ...child.props,\n key: eventKey,\n classnames: classnames,\n activeKey: activeKey\n });\n }\n\n renderArrow(type: 'left' | 'right') {\n const {mode: dMode, tabsMode} = this.props;\n const mode = tabsMode || dMode;\n if (['vertical', 'sidebar'].includes(mode)) {\n return;\n }\n const {classnames: cx} = this.props;\n const {isOverflow, arrowLeftDisabled, arrowRightDisabled} = this.state;\n const disabled = type === 'left' ? arrowLeftDisabled : arrowRightDisabled;\n return isOverflow ? (\n <div\n onClick={() => this.handleArrow(type)}\n className={cx(\n 'Tabs-linksContainer-arrow',\n 'Tabs-linksContainer-arrow--' + type,\n disabled && 'Tabs-linksContainer-arrow--disabled'\n )}\n >\n <i className={'iconfont icon-arrow-' + type} />\n </div>\n ) : null;\n }\n\n handleAddBtn() {\n const {onAdd} = this.props;\n\n onAdd && onAdd();\n }\n\n render() {\n const {\n classnames: cx,\n contentClassName,\n className,\n mode: dMode,\n tabsMode,\n children,\n additionBtns,\n toolbar,\n linksClassName,\n addable,\n draggable,\n sidePosition,\n addBtnText\n } = this.props;\n\n const {isOverflow} = this.state;\n if (!Array.isArray(children)) {\n return null;\n }\n\n const mode = tabsMode || dMode;\n\n const toolButtons = (\n <>\n {addable && (\n <div className={cx('Tabs-addable')} onClick={() => this.handleAddBtn()}>\n <Icon icon=\"plus\" className={cx('Tabs-addable-icon')} />\n {addBtnText}\n </div>\n )}\n {toolbar}\n </>\n );\n\n return (\n <div\n className={cx(\n `Tabs`,\n {\n [`Tabs--${mode}`]: mode,\n [`sidebar--${sidePosition}`]: mode === 'sidebar'\n },\n className\n )}\n >\n {\n !['vertical', 'sidebar', 'chrome'].includes(mode) ? (\n <div\n className={cx('Tabs-linksContainer-wrapper', toolbar && 'Tabs-linksContainer-wrapper--toolbar')}\n ref={this.resizeDom}\n >\n <div\n className={cx(\n 'Tabs-linksContainer',\n isOverflow && 'Tabs-linksContainer--overflow'\n )}\n >\n {this.renderArrow('left')}\n <div className={cx('Tabs-linksContainer-main')}>\n <ul className={cx('Tabs-links', linksClassName)} role=\"tablist\" ref={this.navMain}>\n {children.map((tab, index) => this.renderNav(tab, index))}\n {additionBtns}\n {\n !isOverflow && toolButtons\n }\n </ul>\n </div>\n {this.renderArrow('right')}\n </div>\n {\n isOverflow && toolButtons\n }\n </div>\n ) : (\n <div className={cx('Tabs-linksWrapper')}>\n <ul className={cx('Tabs-links', linksClassName)} role=\"tablist\">\n {children.map((tab, index) => this.renderNav(tab, index))}\n {additionBtns}\n {toolbar}\n </ul>\n </div>\n )}\n\n <div className={cx('Tabs-content', contentClassName)}>\n {children.map((child, index) => {\n return this.renderTab(child, index);\n })}\n </div>\n {\n draggable && (\n <div\n className={cx('Tabs-drag-tip')}\n ref={this.dragTipRef}\n />\n )\n }\n </div>\n );\n }\n}\n\nconst ThemedTabs = themeable(\n uncontrollable(Tabs, {\n activeKey: 'onSelect'\n })\n);\n\nexport default ThemedTabs as typeof ThemedTabs & {\n Tab: typeof Tab;\n};\n"
|
12
12
|
]
|
13
13
|
}
|