amis 1.6.5-beta.3 → 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.
Files changed (238) hide show
  1. package/lib/Schema.d.ts +3 -2
  2. package/lib/Schema.js +0 -1
  3. package/lib/Schema.js.map +2 -2
  4. package/lib/components/Alert2.js +4 -2
  5. package/lib/components/Alert2.js.map +2 -2
  6. package/lib/components/AssociatedSelection.d.ts +84 -84
  7. package/lib/components/Avatar.d.ts +20 -20
  8. package/lib/components/Breadcrumb.d.ts +130 -0
  9. package/lib/components/Breadcrumb.js +161 -0
  10. package/lib/components/Breadcrumb.js.map +13 -0
  11. package/lib/components/Card.d.ts +20 -20
  12. package/lib/components/ChainedSelection.d.ts +84 -84
  13. package/lib/components/CityArea.js +3 -0
  14. package/lib/components/CityArea.js.map +2 -2
  15. package/lib/components/Collapse.d.ts +20 -20
  16. package/lib/components/CollapseGroup.d.ts +20 -20
  17. package/lib/components/DatePicker.d.ts +84 -84
  18. package/lib/components/DateRangePicker.d.ts +2 -2
  19. package/lib/components/DateRangePicker.js +36 -45
  20. package/lib/components/DateRangePicker.js.map +2 -2
  21. package/lib/components/GroupedSelection.d.ts +84 -84
  22. package/lib/components/Layout.d.ts +21 -21
  23. package/lib/components/ListGroup.d.ts +21 -21
  24. package/lib/components/PopUp.js +2 -1
  25. package/lib/components/PopUp.js.map +2 -2
  26. package/lib/components/Radios.d.ts +21 -21
  27. package/lib/components/Range.js.map +2 -2
  28. package/lib/components/Selection.d.ts +84 -84
  29. package/lib/components/TableSelection.d.ts +84 -84
  30. package/lib/components/Tabs.d.ts +52 -23
  31. package/lib/components/Tabs.js +198 -46
  32. package/lib/components/Tabs.js.map +2 -2
  33. package/lib/components/TooltipWrapper.d.ts +21 -20
  34. package/lib/components/TooltipWrapper.js +2 -2
  35. package/lib/components/TooltipWrapper.js.map +2 -2
  36. package/lib/components/Transfer.d.ts +84 -84
  37. package/lib/components/TransferDropDown.d.ts +84 -84
  38. package/lib/components/Tree.d.ts +84 -84
  39. package/lib/components/TreeSelection.d.ts +84 -84
  40. package/lib/components/calendar/Calendar.js +5 -0
  41. package/lib/components/calendar/Calendar.js.map +2 -2
  42. package/lib/components/calendar/DaysView.js.map +1 -1
  43. package/lib/components/icons.js +8 -0
  44. package/lib/components/icons.js.map +2 -2
  45. package/lib/components/index.d.ts +2 -1
  46. package/lib/components/index.js +4 -2
  47. package/lib/components/index.js.map +2 -2
  48. package/lib/icons/cloud-upload.js +17 -0
  49. package/lib/icons/image.js +7 -0
  50. package/lib/icons/refresh.js +9 -0
  51. package/lib/icons/trash.js +10 -0
  52. package/lib/icons/upload.js +3 -8
  53. package/lib/index.d.ts +1 -0
  54. package/lib/index.js +2 -1
  55. package/lib/index.js.map +2 -2
  56. package/lib/locale/en-US.js +3 -1
  57. package/lib/locale/en-US.js.map +2 -2
  58. package/lib/locale/zh-CN.js +4 -2
  59. package/lib/locale/zh-CN.js.map +2 -2
  60. package/lib/renderers/Action.d.ts +1 -1
  61. package/lib/renderers/Action.js.map +2 -2
  62. package/lib/renderers/Breadcrumb.d.ts +41 -6
  63. package/lib/renderers/Breadcrumb.js +23 -19
  64. package/lib/renderers/Breadcrumb.js.map +2 -2
  65. package/lib/renderers/ButtonGroup.d.ts +2 -2
  66. package/lib/renderers/ButtonGroup.js.map +1 -1
  67. package/lib/renderers/Form/ChainedSelect.d.ts +4 -1
  68. package/lib/renderers/Form/ChainedSelect.js +83 -34
  69. package/lib/renderers/Form/ChainedSelect.js.map +2 -2
  70. package/lib/renderers/Form/Checkbox.d.ts +3 -0
  71. package/lib/renderers/Form/Checkbox.js +38 -1
  72. package/lib/renderers/Form/Checkbox.js.map +2 -2
  73. package/lib/renderers/Form/Combo.d.ts +4 -3
  74. package/lib/renderers/Form/Combo.js +81 -32
  75. package/lib/renderers/Form/Combo.js.map +2 -2
  76. package/lib/renderers/Form/DiffEditor.d.ts +1 -1
  77. package/lib/renderers/Form/InputCity.d.ts +84 -84
  78. package/lib/renderers/Form/InputCity.js +4 -1
  79. package/lib/renderers/Form/InputCity.js.map +2 -2
  80. package/lib/renderers/Form/InputColor.js +3 -1
  81. package/lib/renderers/Form/InputColor.js.map +2 -2
  82. package/lib/renderers/Form/InputDate.js +3 -1
  83. package/lib/renderers/Form/InputDate.js.map +2 -2
  84. package/lib/renderers/Form/InputDateRange.js +3 -1
  85. package/lib/renderers/Form/InputDateRange.js.map +2 -2
  86. package/lib/renderers/Form/InputExcel.d.ts +4 -0
  87. package/lib/renderers/Form/InputExcel.js +33 -6
  88. package/lib/renderers/Form/InputExcel.js.map +2 -2
  89. package/lib/renderers/Form/InputFile.d.ts +8 -1
  90. package/lib/renderers/Form/InputFile.js +71 -42
  91. package/lib/renderers/Form/InputFile.js.map +2 -2
  92. package/lib/renderers/Form/InputImage.d.ts +4 -1
  93. package/lib/renderers/Form/InputImage.js +21 -9
  94. package/lib/renderers/Form/InputImage.js.map +2 -2
  95. package/lib/renderers/Form/InputRange.d.ts +27 -9
  96. package/lib/renderers/Form/InputRange.js +88 -23
  97. package/lib/renderers/Form/InputRange.js.map +2 -2
  98. package/lib/renderers/Form/InputSubForm.js +2 -1
  99. package/lib/renderers/Form/InputSubForm.js.map +2 -2
  100. package/lib/renderers/Form/InputTag.js +2 -1
  101. package/lib/renderers/Form/InputTag.js.map +2 -2
  102. package/lib/renderers/Form/MatrixCheckboxes.js +2 -1
  103. package/lib/renderers/Form/MatrixCheckboxes.js.map +2 -2
  104. package/lib/renderers/Form/NestedSelect.d.ts +9 -6
  105. package/lib/renderers/Form/NestedSelect.js +247 -130
  106. package/lib/renderers/Form/NestedSelect.js.map +2 -2
  107. package/lib/renderers/Form/Options.js +2 -1
  108. package/lib/renderers/Form/Options.js.map +2 -2
  109. package/lib/renderers/Form/Radios.js +2 -1
  110. package/lib/renderers/Form/Radios.js.map +2 -2
  111. package/lib/renderers/Form/Select.js +6 -3
  112. package/lib/renderers/Form/Select.js.map +2 -2
  113. package/lib/renderers/Form/Switch.d.ts +7 -6
  114. package/lib/renderers/Form/Switch.js +4 -1
  115. package/lib/renderers/Form/Switch.js.map +2 -2
  116. package/lib/renderers/Log.js +2 -1
  117. package/lib/renderers/Log.js.map +2 -2
  118. package/lib/renderers/PopOver.js +1 -1
  119. package/lib/renderers/PopOver.js.map +2 -2
  120. package/lib/renderers/Tabs.d.ts +58 -5
  121. package/lib/renderers/Tabs.js +170 -58
  122. package/lib/renderers/Tabs.js.map +2 -2
  123. package/lib/renderers/TooltipWrapper.d.ts +104 -0
  124. package/lib/renderers/TooltipWrapper.js +59 -0
  125. package/lib/renderers/TooltipWrapper.js.map +13 -0
  126. package/lib/renderers/Video.d.ts +6 -0
  127. package/lib/renderers/Video.js +13 -6
  128. package/lib/renderers/Video.js.map +2 -2
  129. package/lib/store/form.js +4 -13
  130. package/lib/store/form.js.map +2 -2
  131. package/lib/store/table.js +1 -1
  132. package/lib/store/table.js.map +2 -2
  133. package/lib/themes/ang-ie11.css +742 -160
  134. package/lib/themes/ang.css +793 -163
  135. package/lib/themes/ang.css.map +1 -1
  136. package/lib/themes/antd-ie11.css +757 -175
  137. package/lib/themes/antd.css +793 -163
  138. package/lib/themes/antd.css.map +1 -1
  139. package/lib/themes/cxd-ie11.css +1249 -667
  140. package/lib/themes/cxd.css +970 -321
  141. package/lib/themes/cxd.css.map +1 -1
  142. package/lib/themes/dark-ie11.css +742 -160
  143. package/lib/themes/dark.css +793 -163
  144. package/lib/themes/dark.css.map +1 -1
  145. package/lib/themes/default-ie11.css +1249 -667
  146. package/lib/themes/default.css +970 -321
  147. package/lib/themes/default.css.map +1 -1
  148. package/package.json +1 -1
  149. package/schema.json +16012 -736
  150. package/scss/_properties.scss +56 -2
  151. package/scss/components/_alert.scss +1 -1
  152. package/scss/components/_breadcrumb.scss +90 -1
  153. package/scss/components/_button-group.scss +15 -0
  154. package/scss/components/_city-area.scss +2 -0
  155. package/scss/components/_popup.scss +13 -3
  156. package/scss/components/_tabs.scss +629 -132
  157. package/scss/components/_tooltip.scss +72 -0
  158. package/scss/components/form/_file.scss +82 -24
  159. package/scss/components/form/_image.scss +30 -25
  160. package/scss/components/form/_number.scss +2 -0
  161. package/scss/components/form/_switch.scss +1 -3
  162. package/scss/themes/_cxd-colors.scss +47 -47
  163. package/scss/themes/_cxd-variables.scss +20 -0
  164. package/sdk/ang-ie11.css +879 -196
  165. package/sdk/ang.css +931 -200
  166. package/sdk/antd-ie11.css +951 -268
  167. package/sdk/antd.css +931 -200
  168. package/sdk/barcode.js +51 -51
  169. package/sdk/charts.js +14 -14
  170. package/sdk/codemirror.js +7 -7
  171. package/sdk/color-picker.js +65 -65
  172. package/sdk/cropperjs.js +2 -2
  173. package/sdk/cxd-ie11.css +1386 -703
  174. package/sdk/cxd.css +1107 -357
  175. package/sdk/dark-ie11.css +879 -196
  176. package/sdk/dark.css +931 -200
  177. package/sdk/exceljs.js +1 -1
  178. package/sdk/markdown.js +69 -69
  179. package/sdk/papaparse.js +1 -1
  180. package/sdk/renderers/Form/CityDB.js +1 -1
  181. package/sdk/rest.js +17 -17
  182. package/sdk/rich-text.js +62 -62
  183. package/sdk/sdk-ie11.css +1386 -703
  184. package/sdk/sdk.css +1107 -357
  185. package/sdk/sdk.js +1260 -1248
  186. package/sdk/thirds/hls.js/hls.js +1 -1
  187. package/sdk/thirds/mpegts.js/mpegts.js +1 -1
  188. package/sdk/tinymce.js +57 -57
  189. package/src/Schema.ts +5 -2
  190. package/src/components/Alert2.tsx +9 -3
  191. package/src/components/Breadcrumb.tsx +294 -0
  192. package/src/components/CityArea.tsx +3 -0
  193. package/src/components/DateRangePicker.tsx +40 -68
  194. package/src/components/PopUp.tsx +6 -5
  195. package/src/components/Range.tsx +7 -1
  196. package/src/components/Tabs.tsx +300 -54
  197. package/src/components/TooltipWrapper.tsx +4 -1
  198. package/src/components/calendar/Calendar.tsx +5 -0
  199. package/src/components/calendar/DaysView.tsx +2 -2
  200. package/src/components/icons.tsx +8 -0
  201. package/src/components/index.tsx +2 -0
  202. package/src/icons/cloud-upload.svg +22 -0
  203. package/src/icons/image.svg +1 -0
  204. package/src/icons/refresh.svg +7 -0
  205. package/src/icons/trash.svg +8 -0
  206. package/src/icons/upload.svg +4 -9
  207. package/src/index.tsx +1 -0
  208. package/src/locale/en-US.ts +3 -1
  209. package/src/locale/zh-CN.ts +4 -2
  210. package/src/renderers/Action.tsx +2 -1
  211. package/src/renderers/Breadcrumb.tsx +89 -45
  212. package/src/renderers/ButtonGroup.tsx +2 -2
  213. package/src/renderers/Form/ChainedSelect.tsx +56 -12
  214. package/src/renderers/Form/Checkbox.tsx +30 -1
  215. package/src/renderers/Form/Combo.tsx +84 -26
  216. package/src/renderers/Form/InputCity.tsx +13 -1
  217. package/src/renderers/Form/InputColor.tsx +2 -0
  218. package/src/renderers/Form/InputDate.tsx +2 -0
  219. package/src/renderers/Form/InputDateRange.tsx +2 -0
  220. package/src/renderers/Form/InputExcel.tsx +27 -5
  221. package/src/renderers/Form/InputFile.tsx +167 -115
  222. package/src/renderers/Form/InputImage.tsx +61 -35
  223. package/src/renderers/Form/InputRange.tsx +95 -40
  224. package/src/renderers/Form/InputSubForm.tsx +2 -1
  225. package/src/renderers/Form/InputTag.tsx +3 -1
  226. package/src/renderers/Form/MatrixCheckboxes.tsx +3 -1
  227. package/src/renderers/Form/NestedSelect.tsx +75 -26
  228. package/src/renderers/Form/Options.tsx +3 -1
  229. package/src/renderers/Form/Radios.tsx +3 -1
  230. package/src/renderers/Form/Select.tsx +6 -2
  231. package/src/renderers/Form/Switch.tsx +16 -9
  232. package/src/renderers/Log.tsx +2 -1
  233. package/src/renderers/PopOver.tsx +1 -1
  234. package/src/renderers/Tabs.tsx +254 -93
  235. package/src/renderers/TooltipWrapper.tsx +219 -0
  236. package/src/renderers/Video.tsx +21 -6
  237. package/src/store/form.ts +0 -9
  238. package/src/store/table.ts +1 -1
@@ -9,7 +9,8 @@ import React from 'react';
9
9
  import { Schema } from '../types';
10
10
  import { ThemeProps } from '../theme';
11
11
  import { SchemaClassName } from '../Schema';
12
- export declare type TabsMode = '' | 'line' | 'card' | 'radio' | 'vertical' | 'chrome';
12
+ import Sortable from 'sortablejs';
13
+ export declare type TabsMode = '' | 'line' | 'card' | 'radio' | 'vertical' | 'chrome' | 'simple' | 'strong' | 'tiled' | 'sidebar';
13
14
  export interface TabProps extends ThemeProps {
14
15
  title?: string | React.ReactNode;
15
16
  icon?: string;
@@ -98,10 +99,25 @@ export interface TabsProps extends ThemeProps {
98
99
  tabs?: Array<TabProps>;
99
100
  tabRender?: (tab: TabProps, props?: TabsProps) => JSX.Element;
100
101
  toolbar?: React.ReactNode;
102
+ addable?: boolean;
103
+ onAdd?: () => void;
104
+ closable?: boolean;
105
+ onClose?: (index: number, key: string | number) => void;
106
+ draggable?: boolean;
107
+ onDragChange?: (e: any) => void;
108
+ showTip?: boolean;
109
+ showTipClassName?: string;
101
110
  scrollable?: boolean;
111
+ editable?: boolean;
112
+ onEdit?: (index: number, text: string) => void;
113
+ sidePosition?: 'left' | 'right';
114
+ addBtnText?: string;
115
+ }
116
+ export interface IDragInfo {
117
+ nodeId: string;
102
118
  }
103
119
  export declare class Tabs extends React.Component<TabsProps, any> {
104
- static defaultProps: Pick<TabsProps, 'mode' | 'contentClassName'>;
120
+ static defaultProps: Pick<TabsProps, 'mode' | 'contentClassName' | 'showTip' | 'showTipClassName' | 'sidePosition' | 'addBtnText'>;
105
121
  static Tab: {
106
122
  new (props: (Omit<TabProps, keyof ThemeProps> & import("../theme").ThemeOutterProps) | Readonly<Omit<TabProps, keyof ThemeProps> & import("../theme").ThemeOutterProps>): {
107
123
  render(): JSX.Element;
@@ -159,8 +175,14 @@ export declare class Tabs extends React.Component<TabsProps, any> {
159
175
  } & import("hoist-non-react-statics").NonReactStatics<typeof TabComponent, {}> & {
160
176
  ComposedComponent: typeof TabComponent;
161
177
  };
162
- navMain: React.RefObject<HTMLDivElement>;
178
+ navMain: React.RefObject<HTMLUListElement>;
163
179
  scroll: boolean;
180
+ sortable?: Sortable;
181
+ dragTip?: HTMLElement;
182
+ id: string;
183
+ draging: boolean;
184
+ toDispose: Array<() => void>;
185
+ resizeDom: React.RefObject<HTMLDivElement>;
164
186
  checkArrowStatus: import("lodash").DebouncedFunc<() => void>;
165
187
  constructor(props: TabsProps);
166
188
  componentDidMount(): void;
@@ -175,6 +197,12 @@ export declare class Tabs extends React.Component<TabsProps, any> {
175
197
  */
176
198
  showSelected(key?: string | number): void;
177
199
  handleSelect(key: string | number): void;
200
+ handleStartEdit(index: number, title: string): void;
201
+ handleEditInputChange(e: React.ChangeEvent<HTMLInputElement>): void;
202
+ handleEdit(): void;
203
+ dragTipRef(ref: any): void;
204
+ destroyDragging(): void;
205
+ initDragging(): void;
178
206
  handleArrow(type: 'left' | 'right'): void;
179
207
  /**
180
208
  * 监听导航上的滚动事件
@@ -183,15 +211,16 @@ export declare class Tabs extends React.Component<TabsProps, any> {
183
211
  renderNav(child: any, index: number): JSX.Element | undefined;
184
212
  renderTab(child: any, index: number): React.DetailedReactHTMLElement<any, HTMLElement> | undefined;
185
213
  renderArrow(type: 'left' | 'right'): JSX.Element | null | undefined;
214
+ handleAddBtn(): void;
186
215
  render(): JSX.Element | null;
187
216
  }
188
217
  declare const _default: {
189
- new (props: (Pick<Omit<TabsProps, keyof ThemeProps>, "toolbar" | "onSelect" | "tabs" | "tabsMode" | "activeKey" | "linksClassName" | "scrollable" | "additionBtns" | "tabRender"> & Partial<Pick<Omit<TabsProps, keyof ThemeProps>, "mode" | "contentClassName">> & Partial<Pick<Pick<TabsProps, "mode" | "contentClassName">, never>> & import("../theme").ThemeOutterProps) | Readonly<Pick<Omit<TabsProps, keyof ThemeProps>, "toolbar" | "onSelect" | "tabs" | "tabsMode" | "activeKey" | "linksClassName" | "scrollable" | "additionBtns" | "tabRender"> & Partial<Pick<Omit<TabsProps, keyof ThemeProps>, "mode" | "contentClassName">> & Partial<Pick<Pick<TabsProps, "mode" | "contentClassName">, 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>): {
190
219
  render(): JSX.Element;
191
220
  context: any;
192
- setState<K extends never>(state: {} | ((prevState: Readonly<{}>, props: Readonly<Pick<Omit<TabsProps, keyof ThemeProps>, "toolbar" | "onSelect" | "tabs" | "tabsMode" | "activeKey" | "linksClassName" | "scrollable" | "additionBtns" | "tabRender"> & Partial<Pick<Omit<TabsProps, keyof ThemeProps>, "mode" | "contentClassName">> & Partial<Pick<Pick<TabsProps, "mode" | "contentClassName">, 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;
193
222
  forceUpdate(callback?: (() => void) | undefined): void;
194
- readonly props: Readonly<Pick<Omit<TabsProps, keyof ThemeProps>, "toolbar" | "onSelect" | "tabs" | "tabsMode" | "activeKey" | "linksClassName" | "scrollable" | "additionBtns" | "tabRender"> & Partial<Pick<Omit<TabsProps, keyof ThemeProps>, "mode" | "contentClassName">> & Partial<Pick<Pick<TabsProps, "mode" | "contentClassName">, 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<{
195
224
  children?: React.ReactNode;
196
225
  }>;
197
226
  state: Readonly<{}>;
@@ -199,24 +228,24 @@ declare const _default: {
199
228
  [key: string]: React.ReactInstance;
200
229
  };
201
230
  componentDidMount?(): void;
202
- shouldComponentUpdate?(nextProps: Readonly<Pick<Omit<TabsProps, keyof ThemeProps>, "toolbar" | "onSelect" | "tabs" | "tabsMode" | "activeKey" | "linksClassName" | "scrollable" | "additionBtns" | "tabRender"> & Partial<Pick<Omit<TabsProps, keyof ThemeProps>, "mode" | "contentClassName">> & Partial<Pick<Pick<TabsProps, "mode" | "contentClassName">, 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;
203
232
  componentWillUnmount?(): void;
204
233
  componentDidCatch?(error: Error, errorInfo: React.ErrorInfo): void;
205
- getSnapshotBeforeUpdate?(prevProps: Readonly<Pick<Omit<TabsProps, keyof ThemeProps>, "toolbar" | "onSelect" | "tabs" | "tabsMode" | "activeKey" | "linksClassName" | "scrollable" | "additionBtns" | "tabRender"> & Partial<Pick<Omit<TabsProps, keyof ThemeProps>, "mode" | "contentClassName">> & Partial<Pick<Pick<TabsProps, "mode" | "contentClassName">, never>> & import("../theme").ThemeOutterProps>, prevState: Readonly<{}>): any;
206
- componentDidUpdate?(prevProps: Readonly<Pick<Omit<TabsProps, keyof ThemeProps>, "toolbar" | "onSelect" | "tabs" | "tabsMode" | "activeKey" | "linksClassName" | "scrollable" | "additionBtns" | "tabRender"> & Partial<Pick<Omit<TabsProps, keyof ThemeProps>, "mode" | "contentClassName">> & Partial<Pick<Pick<TabsProps, "mode" | "contentClassName">, 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;
207
236
  componentWillMount?(): void;
208
237
  UNSAFE_componentWillMount?(): void;
209
- componentWillReceiveProps?(nextProps: Readonly<Pick<Omit<TabsProps, keyof ThemeProps>, "toolbar" | "onSelect" | "tabs" | "tabsMode" | "activeKey" | "linksClassName" | "scrollable" | "additionBtns" | "tabRender"> & Partial<Pick<Omit<TabsProps, keyof ThemeProps>, "mode" | "contentClassName">> & Partial<Pick<Pick<TabsProps, "mode" | "contentClassName">, never>> & import("../theme").ThemeOutterProps>, nextContext: any): void;
210
- UNSAFE_componentWillReceiveProps?(nextProps: Readonly<Pick<Omit<TabsProps, keyof ThemeProps>, "toolbar" | "onSelect" | "tabs" | "tabsMode" | "activeKey" | "linksClassName" | "scrollable" | "additionBtns" | "tabRender"> & Partial<Pick<Omit<TabsProps, keyof ThemeProps>, "mode" | "contentClassName">> & Partial<Pick<Pick<TabsProps, "mode" | "contentClassName">, never>> & import("../theme").ThemeOutterProps>, nextContext: any): void;
211
- componentWillUpdate?(nextProps: Readonly<Pick<Omit<TabsProps, keyof ThemeProps>, "toolbar" | "onSelect" | "tabs" | "tabsMode" | "activeKey" | "linksClassName" | "scrollable" | "additionBtns" | "tabRender"> & Partial<Pick<Omit<TabsProps, keyof ThemeProps>, "mode" | "contentClassName">> & Partial<Pick<Pick<TabsProps, "mode" | "contentClassName">, never>> & import("../theme").ThemeOutterProps>, nextState: Readonly<{}>, nextContext: any): void;
212
- UNSAFE_componentWillUpdate?(nextProps: Readonly<Pick<Omit<TabsProps, keyof ThemeProps>, "toolbar" | "onSelect" | "tabs" | "tabsMode" | "activeKey" | "linksClassName" | "scrollable" | "additionBtns" | "tabRender"> & Partial<Pick<Omit<TabsProps, keyof ThemeProps>, "mode" | "contentClassName">> & Partial<Pick<Pick<TabsProps, "mode" | "contentClassName">, 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;
213
242
  };
214
- new (props: Pick<Omit<TabsProps, keyof ThemeProps>, "toolbar" | "onSelect" | "tabs" | "tabsMode" | "activeKey" | "linksClassName" | "scrollable" | "additionBtns" | "tabRender"> & Partial<Pick<Omit<TabsProps, keyof ThemeProps>, "mode" | "contentClassName">> & Partial<Pick<Pick<TabsProps, "mode" | "contentClassName">, 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): {
215
244
  render(): JSX.Element;
216
245
  context: any;
217
- setState<K extends never>(state: {} | ((prevState: Readonly<{}>, props: Readonly<Pick<Omit<TabsProps, keyof ThemeProps>, "toolbar" | "onSelect" | "tabs" | "tabsMode" | "activeKey" | "linksClassName" | "scrollable" | "additionBtns" | "tabRender"> & Partial<Pick<Omit<TabsProps, keyof ThemeProps>, "mode" | "contentClassName">> & Partial<Pick<Pick<TabsProps, "mode" | "contentClassName">, 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;
218
247
  forceUpdate(callback?: (() => void) | undefined): void;
219
- readonly props: Readonly<Pick<Omit<TabsProps, keyof ThemeProps>, "toolbar" | "onSelect" | "tabs" | "tabsMode" | "activeKey" | "linksClassName" | "scrollable" | "additionBtns" | "tabRender"> & Partial<Pick<Omit<TabsProps, keyof ThemeProps>, "mode" | "contentClassName">> & Partial<Pick<Pick<TabsProps, "mode" | "contentClassName">, 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<{
220
249
  children?: React.ReactNode;
221
250
  }>;
222
251
  state: Readonly<{}>;
@@ -224,17 +253,17 @@ declare const _default: {
224
253
  [key: string]: React.ReactInstance;
225
254
  };
226
255
  componentDidMount?(): void;
227
- shouldComponentUpdate?(nextProps: Readonly<Pick<Omit<TabsProps, keyof ThemeProps>, "toolbar" | "onSelect" | "tabs" | "tabsMode" | "activeKey" | "linksClassName" | "scrollable" | "additionBtns" | "tabRender"> & Partial<Pick<Omit<TabsProps, keyof ThemeProps>, "mode" | "contentClassName">> & Partial<Pick<Pick<TabsProps, "mode" | "contentClassName">, 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;
228
257
  componentWillUnmount?(): void;
229
258
  componentDidCatch?(error: Error, errorInfo: React.ErrorInfo): void;
230
- getSnapshotBeforeUpdate?(prevProps: Readonly<Pick<Omit<TabsProps, keyof ThemeProps>, "toolbar" | "onSelect" | "tabs" | "tabsMode" | "activeKey" | "linksClassName" | "scrollable" | "additionBtns" | "tabRender"> & Partial<Pick<Omit<TabsProps, keyof ThemeProps>, "mode" | "contentClassName">> & Partial<Pick<Pick<TabsProps, "mode" | "contentClassName">, never>> & import("../theme").ThemeOutterProps>, prevState: Readonly<{}>): any;
231
- componentDidUpdate?(prevProps: Readonly<Pick<Omit<TabsProps, keyof ThemeProps>, "toolbar" | "onSelect" | "tabs" | "tabsMode" | "activeKey" | "linksClassName" | "scrollable" | "additionBtns" | "tabRender"> & Partial<Pick<Omit<TabsProps, keyof ThemeProps>, "mode" | "contentClassName">> & Partial<Pick<Pick<TabsProps, "mode" | "contentClassName">, 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;
232
261
  componentWillMount?(): void;
233
262
  UNSAFE_componentWillMount?(): void;
234
- componentWillReceiveProps?(nextProps: Readonly<Pick<Omit<TabsProps, keyof ThemeProps>, "toolbar" | "onSelect" | "tabs" | "tabsMode" | "activeKey" | "linksClassName" | "scrollable" | "additionBtns" | "tabRender"> & Partial<Pick<Omit<TabsProps, keyof ThemeProps>, "mode" | "contentClassName">> & Partial<Pick<Pick<TabsProps, "mode" | "contentClassName">, never>> & import("../theme").ThemeOutterProps>, nextContext: any): void;
235
- UNSAFE_componentWillReceiveProps?(nextProps: Readonly<Pick<Omit<TabsProps, keyof ThemeProps>, "toolbar" | "onSelect" | "tabs" | "tabsMode" | "activeKey" | "linksClassName" | "scrollable" | "additionBtns" | "tabRender"> & Partial<Pick<Omit<TabsProps, keyof ThemeProps>, "mode" | "contentClassName">> & Partial<Pick<Pick<TabsProps, "mode" | "contentClassName">, never>> & import("../theme").ThemeOutterProps>, nextContext: any): void;
236
- componentWillUpdate?(nextProps: Readonly<Pick<Omit<TabsProps, keyof ThemeProps>, "toolbar" | "onSelect" | "tabs" | "tabsMode" | "activeKey" | "linksClassName" | "scrollable" | "additionBtns" | "tabRender"> & Partial<Pick<Omit<TabsProps, keyof ThemeProps>, "mode" | "contentClassName">> & Partial<Pick<Pick<TabsProps, "mode" | "contentClassName">, never>> & import("../theme").ThemeOutterProps>, nextState: Readonly<{}>, nextContext: any): void;
237
- UNSAFE_componentWillUpdate?(nextProps: Readonly<Pick<Omit<TabsProps, keyof ThemeProps>, "toolbar" | "onSelect" | "tabs" | "tabsMode" | "activeKey" | "linksClassName" | "scrollable" | "additionBtns" | "tabRender"> & Partial<Pick<Omit<TabsProps, keyof ThemeProps>, "mode" | "contentClassName">> & Partial<Pick<Pick<TabsProps, "mode" | "contentClassName">, 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;
238
267
  };
239
268
  displayName: string;
240
269
  contextType: React.Context<string>;
@@ -14,7 +14,12 @@ var theme_1 = require("../theme");
14
14
  var uncontrollable_1 = require("uncontrollable");
15
15
  var icon_1 = require("../utils/icon");
16
16
  var helper_1 = require("../utils/helper");
17
+ var icons_1 = require("./icons");
17
18
  var debounce_1 = (0, tslib_1.__importDefault)(require("lodash/debounce"));
19
+ var react_dom_1 = require("react-dom");
20
+ var TooltipWrapper_1 = (0, tslib_1.__importDefault)(require("./TooltipWrapper"));
21
+ var resize_sensor_1 = require("../utils/resize-sensor");
22
+ var sortablejs_1 = (0, tslib_1.__importDefault)(require("sortablejs"));
18
23
  var transitionStyles = (_a = {},
19
24
  _a[Transition_1.ENTERING] = 'in',
20
25
  _a[Transition_1.ENTERED] = 'in',
@@ -43,8 +48,12 @@ var Tabs = /** @class */ (function (_super) {
43
48
  (0, tslib_1.__extends)(Tabs, _super);
44
49
  function Tabs(props) {
45
50
  var _this = _super.call(this, props) || this;
46
- _this.navMain = react_1.default.createRef();
51
+ _this.navMain = react_1.default.createRef(); // HTMLDivElement
47
52
  _this.scroll = false;
53
+ _this.id = (0, helper_1.guid)();
54
+ _this.draging = false;
55
+ _this.toDispose = [];
56
+ _this.resizeDom = react_1.default.createRef();
48
57
  _this.checkArrowStatus = (0, debounce_1.default)(function () {
49
58
  var _a = _this.navMain.current || {
50
59
  scrollLeft: 0,
@@ -83,12 +92,17 @@ var Tabs = /** @class */ (function (_super) {
83
92
  _this.state = {
84
93
  isOverflow: false,
85
94
  arrowLeftDisabled: false,
86
- arrowRightDisabled: false
95
+ arrowRightDisabled: false,
96
+ dragIndicator: null,
97
+ editingIndex: null,
98
+ editInputText: null,
99
+ editOriginText: null
87
100
  };
88
101
  return _this;
89
102
  }
90
103
  Tabs.prototype.componentDidMount = function () {
91
- var _a;
104
+ var _this = this;
105
+ var _a, _b;
92
106
  this.computedWidth();
93
107
  if (this.navMain) {
94
108
  (_a = this.navMain.current) === null || _a === void 0 ? void 0 : _a.addEventListener('wheel', this.handleWheel, {
@@ -96,24 +110,29 @@ var Tabs = /** @class */ (function (_super) {
96
110
  });
97
111
  this.checkArrowStatus();
98
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
+ }));
99
116
  };
100
117
  Tabs.prototype.componentDidUpdate = function () {
101
118
  // 判断是否是由滚动触发的数据更新,如果是则不需要再次判断容器与内容的关系
102
- if (!this.scroll) {
119
+ if (!this.scroll && !this.draging) {
103
120
  this.computedWidth();
104
121
  }
105
122
  this.scroll = false;
106
123
  };
107
124
  Tabs.prototype.componentWillUnmount = function () {
108
125
  this.checkArrowStatus.cancel();
126
+ this.toDispose.forEach(function (fn) { return fn(); });
127
+ this.toDispose = [];
109
128
  };
110
129
  /**
111
130
  * 处理内容与容器之间的位置关系
112
131
  */
113
132
  Tabs.prototype.computedWidth = function () {
114
- var _a = this.props, dMode = _a.mode, tabsMode = _a.tabsMode, scrollable = _a.scrollable;
133
+ var _a = this.props, dMode = _a.mode, tabsMode = _a.tabsMode;
115
134
  var mode = tabsMode || dMode;
116
- if (!scrollable || mode === 'vertical') {
135
+ if (['vertical', 'sidebar'].includes(mode)) {
117
136
  return;
118
137
  }
119
138
  var navMainRef = this.navMain.current;
@@ -124,7 +143,8 @@ var Tabs = /** @class */ (function (_super) {
124
143
  if (isOverflow !== this.state.isOverflow) {
125
144
  this.setState({ isOverflow: isOverflow });
126
145
  }
127
- if (isOverflow) {
146
+ // 正在拖动的不自动定位
147
+ if (isOverflow && !this.draging) {
128
148
  this.showSelected();
129
149
  }
130
150
  };
@@ -132,32 +152,32 @@ var Tabs = /** @class */ (function (_super) {
132
152
  * 保证选中的tab始终显示在可视区域
133
153
  */
134
154
  Tabs.prototype.showSelected = function (key) {
135
- var _a, _b, _c, _d, _e, _f, _g;
136
- var _h = this.props, dMode = _h.mode, tabsMode = _h.tabsMode, scrollable = _h.scrollable;
155
+ var _a, _b, _c, _d, _e, _f;
156
+ var _g = this.props, dMode = _g.mode, tabsMode = _g.tabsMode;
137
157
  var isOverflow = this.state.isOverflow;
138
158
  var mode = tabsMode || dMode;
139
- if (!scrollable || mode === 'vertical' || !isOverflow) {
159
+ if (['vertical', 'sidebar'].includes(mode) || !isOverflow) {
140
160
  return;
141
161
  }
142
- var _j = this.props, activeKey = _j.activeKey, children = _j.children;
162
+ var _h = this.props, activeKey = _h.activeKey, children = _h.children;
143
163
  var currentKey = key !== undefined ? key : activeKey;
144
164
  var currentIndex = (_a = children) === null || _a === void 0 ? void 0 : _a.findIndex(function (item) { return item.props.eventKey === currentKey; });
145
- var li = ((_c = (_b = this.navMain.current) === null || _b === void 0 ? void 0 : _b.children[0]) === null || _c === void 0 ? void 0 : _c.children) || [];
165
+ var li = ((_b = this.navMain.current) === null || _b === void 0 ? void 0 : _b.children) || [];
146
166
  var currentLi = li[currentIndex];
147
- var liOffsetLeft = (currentLi === null || currentLi === void 0 ? void 0 : currentLi.offsetLeft) - 20;
167
+ var liOffsetLeft = currentLi === null || currentLi === void 0 ? void 0 : currentLi.offsetLeft;
148
168
  var liClientWidth = currentLi === null || currentLi === void 0 ? void 0 : currentLi.clientWidth;
149
- var scrollLeft = ((_d = this.navMain.current) === null || _d === void 0 ? void 0 : _d.scrollLeft) || 0;
150
- var clientWidth = ((_e = this.navMain.current) === null || _e === void 0 ? void 0 : _e.clientWidth) || 0;
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;
151
171
  // 左边被遮住了
152
172
  if (scrollLeft > liOffsetLeft) {
153
- (_f = this.navMain.current) === null || _f === void 0 ? void 0 : _f.scrollTo({
173
+ (_e = this.navMain.current) === null || _e === void 0 ? void 0 : _e.scrollTo({
154
174
  left: liOffsetLeft,
155
175
  behavior: 'smooth'
156
176
  });
157
177
  }
158
178
  // 右边被遮住了
159
179
  if (liOffsetLeft + liClientWidth > scrollLeft + clientWidth) {
160
- (_g = this.navMain.current) === null || _g === void 0 ? void 0 : _g.scrollTo({
180
+ (_f = this.navMain.current) === null || _f === void 0 ? void 0 : _f.scrollTo({
161
181
  left: liOffsetLeft + liClientWidth - clientWidth,
162
182
  behavior: 'smooth'
163
183
  });
@@ -172,6 +192,75 @@ var Tabs = /** @class */ (function (_super) {
172
192
  }, 500);
173
193
  onSelect && onSelect(key);
174
194
  };
195
+ Tabs.prototype.handleStartEdit = function (index, title) {
196
+ this.setState({
197
+ editingIndex: index,
198
+ editInputText: title,
199
+ editOriginText: title
200
+ });
201
+ };
202
+ Tabs.prototype.handleEditInputChange = function (e) {
203
+ this.setState({
204
+ editInputText: e.currentTarget.value
205
+ });
206
+ };
207
+ Tabs.prototype.handleEdit = function () {
208
+ var _a = this.state, editingIndex = _a.editingIndex, editInputText = _a.editInputText, editOriginText = _a.editOriginText;
209
+ var onEdit = this.props.onEdit;
210
+ this.setState({
211
+ editingIndex: null,
212
+ editInputText: null,
213
+ editOriginText: null
214
+ });
215
+ onEdit
216
+ && (editInputText = String(editInputText).trim())
217
+ && (editInputText !== editOriginText)
218
+ && onEdit(editingIndex, editInputText);
219
+ };
220
+ Tabs.prototype.dragTipRef = function (ref) {
221
+ if (!this.dragTip && ref) {
222
+ this.initDragging();
223
+ }
224
+ else if (this.dragTip && !ref) {
225
+ this.destroyDragging();
226
+ }
227
+ this.dragTip = ref;
228
+ };
229
+ Tabs.prototype.destroyDragging = function () {
230
+ this.sortable && this.sortable.destroy();
231
+ };
232
+ Tabs.prototype.initDragging = function () {
233
+ var _this = this;
234
+ var _a = this.props, ns = _a.classPrefix, onDragChange = _a.onDragChange;
235
+ var dom = (0, react_dom_1.findDOMNode)(this);
236
+ this.sortable = new sortablejs_1.default(dom.querySelector(".".concat(ns, "Tabs-links")), {
237
+ group: this.id,
238
+ animation: 250,
239
+ handle: ".".concat(ns, "Tabs-link"),
240
+ ghostClass: "".concat(ns, "Tabs-link--dragging"),
241
+ onStart: function () {
242
+ _this.draging = true;
243
+ },
244
+ onEnd: function (e) {
245
+ // 没有移动
246
+ if (e.newIndex === e.oldIndex) {
247
+ return;
248
+ }
249
+ // 再交换回来
250
+ var parent = e.to;
251
+ if (e.oldIndex < parent.childNodes.length - 1) {
252
+ parent.insertBefore(e.item, parent.childNodes[e.oldIndex > e.newIndex ? e.oldIndex + 1 : e.oldIndex]);
253
+ }
254
+ else {
255
+ parent.appendChild(e.item);
256
+ }
257
+ setTimeout(function () {
258
+ _this.draging = false;
259
+ });
260
+ onDragChange && onDragChange(e);
261
+ }
262
+ });
263
+ };
175
264
  Tabs.prototype.handleArrow = function (type) {
176
265
  var _a, _b, _c;
177
266
  var _d = this.navMain.current || {
@@ -224,20 +313,29 @@ var Tabs = /** @class */ (function (_super) {
224
313
  if (!child) {
225
314
  return;
226
315
  }
227
- var _a = this.props, cx = _a.classnames, activeKeyProp = _a.activeKey, mode = _a.mode;
228
- var _b = child.props, eventKey = _b.eventKey, disabled = _b.disabled, icon = _b.icon, iconPosition = _b.iconPosition, title = _b.title, toolbar = _b.toolbar, tabClassName = _b.tabClassName;
316
+ var _a = this.props, cx = _a.classnames, activeKeyProp = _a.activeKey, mode = _a.mode, closable = _a.closable, draggable = _a.draggable, showTip = _a.showTip, showTipClassName = _a.showTipClassName, editable = _a.editable;
317
+ var _b = child.props, eventKey = _b.eventKey, disabled = _b.disabled, icon = _b.icon, iconPosition = _b.iconPosition, title = _b.title, toolbar = _b.toolbar, tabClassName = _b.tabClassName, tabClosable = _b.closable;
318
+ var _c = this.state, editingIndex = _c.editingIndex, editInputText = _c.editInputText;
229
319
  var activeKey = activeKeyProp === undefined && index === 0 ? eventKey : activeKeyProp;
230
320
  var iconElement = (0, icon_1.generateIcon)(cx, icon, 'Icon');
231
- return (react_1.default.createElement("li", { className: cx('Tabs-link', activeKey === eventKey ? 'is-active' : '', disabled ? 'is-disabled' : '', tabClassName), key: eventKey !== null && eventKey !== void 0 ? eventKey : index, onClick: function () { return (disabled ? '' : _this.handleSelect(eventKey)); } },
232
- react_1.default.createElement("a", null,
233
- icon ? (iconPosition === 'right' ? (react_1.default.createElement(react_1.default.Fragment, null,
234
- title,
235
- " ",
236
- iconElement)) : (react_1.default.createElement(react_1.default.Fragment, null,
237
- iconElement,
238
- " ",
239
- title))) : (title),
240
- react_1.default.isValidElement(toolbar) ? toolbar : null),
321
+ var link = (react_1.default.createElement("a", null, editable && editingIndex === index ? (react_1.default.createElement("input", { className: cx('Tabs-link-edit'), type: "text", value: editInputText, autoFocus: true, onFocus: function (e) { return e.currentTarget.select(); }, onChange: this.handleEditInputChange, onBlur: this.handleEdit, onKeyPress: function (e) { return e && e.key === 'Enter' && _this.handleEdit(); } })) : (react_1.default.createElement(react_1.default.Fragment, null,
322
+ icon ? (iconPosition === 'right' ? (react_1.default.createElement(react_1.default.Fragment, null,
323
+ title,
324
+ " ",
325
+ iconElement)) : (react_1.default.createElement(react_1.default.Fragment, null,
326
+ iconElement,
327
+ " ",
328
+ title))) : (title),
329
+ react_1.default.isValidElement(toolbar) ? toolbar : null))));
330
+ return (react_1.default.createElement("li", { className: cx('Tabs-link', activeKey === eventKey ? 'is-active' : '', disabled ? 'is-disabled' : '', tabClassName), key: eventKey !== null && eventKey !== void 0 ? eventKey : index, onClick: function () { return (disabled ? '' : _this.handleSelect(eventKey)); }, onDoubleClick: function () {
331
+ editable && _this.handleStartEdit(index, title);
332
+ } },
333
+ showTip ? (react_1.default.createElement(TooltipWrapper_1.default, { placement: 'top', tooltip: title, trigger: 'hover', tooltipClassName: showTipClassName }, link)) : link,
334
+ (tabClosable !== null && tabClosable !== void 0 ? tabClosable : closable) && (react_1.default.createElement("span", { className: cx('Tabs-link-close'), onClick: function (e) {
335
+ e.stopPropagation();
336
+ _this.props.onClose && _this.props.onClose(index, eventKey !== null && eventKey !== void 0 ? eventKey : index);
337
+ } },
338
+ react_1.default.createElement(icons_1.Icon, { icon: "close", className: cx('Tabs-link-close-icon') }))),
241
339
  mode === 'chrome' ? (react_1.default.createElement("div", { className: "chrome-tab-background" },
242
340
  react_1.default.createElement("svg", { viewBox: "0 0 124 124", className: "chrome-tab-background--right" },
243
341
  react_1.default.createElement("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" })),
@@ -257,7 +355,7 @@ var Tabs = /** @class */ (function (_super) {
257
355
  var _this = this;
258
356
  var _a = this.props, dMode = _a.mode, tabsMode = _a.tabsMode;
259
357
  var mode = tabsMode || dMode;
260
- if (mode === 'vertical') {
358
+ if (['vertical', 'sidebar'].includes(mode)) {
261
359
  return;
262
360
  }
263
361
  var cx = this.props.classnames;
@@ -266,43 +364,97 @@ var Tabs = /** @class */ (function (_super) {
266
364
  return isOverflow ? (react_1.default.createElement("div", { onClick: function () { return _this.handleArrow(type); }, className: cx('Tabs-linksContainer-arrow', 'Tabs-linksContainer-arrow--' + type, disabled && 'Tabs-linksContainer-arrow--disabled') },
267
365
  react_1.default.createElement("i", { className: 'iconfont icon-arrow-' + type }))) : null;
268
366
  };
367
+ Tabs.prototype.handleAddBtn = function () {
368
+ var onAdd = this.props.onAdd;
369
+ onAdd && onAdd();
370
+ };
269
371
  Tabs.prototype.render = function () {
270
372
  var _a;
271
373
  var _this = this;
272
- 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, scrollable = _b.scrollable;
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;
273
375
  var isOverflow = this.state.isOverflow;
274
376
  if (!Array.isArray(children)) {
275
377
  return null;
276
378
  }
277
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));
278
385
  return (react_1.default.createElement("div", { className: cx("Tabs", (_a = {},
279
386
  _a["Tabs--".concat(mode)] = mode,
387
+ _a["sidebar--".concat(sidePosition)] = mode === 'sidebar',
280
388
  _a), className) },
281
- scrollable && !['vertical', 'chrome'].includes(mode) ? (react_1.default.createElement("div", { className: cx('Tabs-linksContainer', isOverflow && 'Tabs-linksContainer--overflow') },
282
- this.renderArrow('left'),
283
- react_1.default.createElement("div", { className: cx('Tabs-linksContainer-main'), ref: this.navMain },
284
- react_1.default.createElement("ul", { className: cx('Tabs-links', linksClassName), role: "tablist" },
285
- children.map(function (tab, index) { return _this.renderNav(tab, index); }),
286
- additionBtns,
287
- toolbar)),
288
- this.renderArrow('right'))) : (react_1.default.createElement("ul", { className: cx('Tabs-links', linksClassName), role: "tablist" },
289
- children.map(function (tab, index) { return _this.renderNav(tab, index); }),
290
- additionBtns,
291
- toolbar)),
389
+ !['vertical', 'sidebar', 'chrome'].includes(mode) ? (react_1.default.createElement("div", { className: cx('Tabs-linksContainer-wrapper', toolbar && 'Tabs-linksContainer-wrapper--toolbar'), ref: this.resizeDom },
390
+ react_1.default.createElement("div", { className: cx('Tabs-linksContainer', isOverflow && 'Tabs-linksContainer--overflow') },
391
+ this.renderArrow('left'),
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 },
394
+ children.map(function (tab, index) { return _this.renderNav(tab, index); }),
395
+ additionBtns,
396
+ !isOverflow && toolButtons)),
397
+ this.renderArrow('right')),
398
+ isOverflow && toolButtons)) : (react_1.default.createElement("div", { className: cx('Tabs-linksWrapper') },
399
+ react_1.default.createElement("ul", { className: cx('Tabs-links', linksClassName), role: "tablist" },
400
+ children.map(function (tab, index) { return _this.renderNav(tab, index); }),
401
+ additionBtns,
402
+ toolbar))),
292
403
  react_1.default.createElement("div", { className: cx('Tabs-content', contentClassName) }, children.map(function (child, index) {
293
404
  return _this.renderTab(child, index);
294
- }))));
405
+ })),
406
+ draggable && (react_1.default.createElement("div", { className: cx('Tabs-drag-tip'), ref: this.dragTipRef }))));
295
407
  };
296
- var _b;
408
+ var _b, _c;
297
409
  Tabs.defaultProps = {
298
410
  mode: '',
299
- contentClassName: ''
411
+ contentClassName: '',
412
+ showTip: false,
413
+ showTipClassName: '',
414
+ sidePosition: 'left',
415
+ addBtnText: '增加'
300
416
  };
301
417
  Tabs.Tab = exports.Tab;
302
418
  (0, tslib_1.__decorate)([
303
419
  helper_1.autobind,
304
420
  (0, tslib_1.__metadata)("design:type", Function),
305
- (0, tslib_1.__metadata)("design:paramtypes", [typeof (_b = typeof WheelEvent !== "undefined" && WheelEvent) === "function" ? _b : Object]),
421
+ (0, tslib_1.__metadata)("design:paramtypes", [Number, String]),
422
+ (0, tslib_1.__metadata)("design:returntype", void 0)
423
+ ], Tabs.prototype, "handleStartEdit", null);
424
+ (0, tslib_1.__decorate)([
425
+ helper_1.autobind,
426
+ (0, tslib_1.__metadata)("design:type", Function),
427
+ (0, tslib_1.__metadata)("design:paramtypes", [typeof (_b = typeof react_1.default !== "undefined" && react_1.default.ChangeEvent) === "function" ? _b : Object]),
428
+ (0, tslib_1.__metadata)("design:returntype", void 0)
429
+ ], Tabs.prototype, "handleEditInputChange", null);
430
+ (0, tslib_1.__decorate)([
431
+ helper_1.autobind,
432
+ (0, tslib_1.__metadata)("design:type", Function),
433
+ (0, tslib_1.__metadata)("design:paramtypes", []),
434
+ (0, tslib_1.__metadata)("design:returntype", void 0)
435
+ ], Tabs.prototype, "handleEdit", null);
436
+ (0, tslib_1.__decorate)([
437
+ helper_1.autobind,
438
+ (0, tslib_1.__metadata)("design:type", Function),
439
+ (0, tslib_1.__metadata)("design:paramtypes", [Object]),
440
+ (0, tslib_1.__metadata)("design:returntype", void 0)
441
+ ], Tabs.prototype, "dragTipRef", null);
442
+ (0, tslib_1.__decorate)([
443
+ helper_1.autobind,
444
+ (0, tslib_1.__metadata)("design:type", Function),
445
+ (0, tslib_1.__metadata)("design:paramtypes", []),
446
+ (0, tslib_1.__metadata)("design:returntype", void 0)
447
+ ], Tabs.prototype, "destroyDragging", null);
448
+ (0, tslib_1.__decorate)([
449
+ helper_1.autobind,
450
+ (0, tslib_1.__metadata)("design:type", Function),
451
+ (0, tslib_1.__metadata)("design:paramtypes", []),
452
+ (0, tslib_1.__metadata)("design:returntype", void 0)
453
+ ], Tabs.prototype, "initDragging", null);
454
+ (0, tslib_1.__decorate)([
455
+ helper_1.autobind,
456
+ (0, tslib_1.__metadata)("design:type", Function),
457
+ (0, tslib_1.__metadata)("design:paramtypes", [typeof (_c = typeof WheelEvent !== "undefined" && WheelEvent) === "function" ? _c : Object]),
306
458
  (0, tslib_1.__metadata)("design:returntype", void 0)
307
459
  ], Tabs.prototype, "handleWheel", null);
308
460
  return Tabs;