@hi-ui/tabs 4.1.0 → 4.1.2
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/CHANGELOG.md +29 -0
- package/lib/cjs/TabInk.js +6 -28
- package/lib/cjs/TabItem.js +34 -67
- package/lib/cjs/TabList.js +67 -120
- package/lib/cjs/TabPane.js +11 -38
- package/lib/cjs/Tabs.js +43 -73
- package/lib/cjs/hooks/index.js +5 -17
- package/lib/cjs/index.js +0 -5
- package/lib/cjs/styles/index.scss.js +1 -4
- package/lib/cjs/utils/index.js +0 -8
- package/lib/esm/TabInk.js +5 -11
- package/lib/esm/TabItem.js +29 -44
- package/lib/esm/TabList.js +56 -82
- package/lib/esm/TabPane.js +8 -17
- package/lib/esm/Tabs.js +37 -46
- package/lib/esm/hooks/index.js +5 -10
- package/lib/esm/index.js +1 -3
- package/lib/esm/styles/index.scss.js +1 -3
- package/lib/esm/utils/index.js +0 -4
- package/package.json +13 -13
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,34 @@
|
|
|
1
1
|
# @hi-ui/tabs
|
|
2
2
|
|
|
3
|
+
## 4.1.2
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [#2672](https://github.com/XiaoMi/hiui/pull/2672) [`1ebe27830`](https://github.com/XiaoMi/hiui/commit/1ebe2783098b3a8cd980bd10076d67635463800e) Thanks [@zyprepare](https://github.com/zyprepare)! - build: 升级到 rollup3,重新构建发布组件
|
|
8
|
+
|
|
9
|
+
- Updated dependencies [[`1ebe27830`](https://github.com/XiaoMi/hiui/commit/1ebe2783098b3a8cd980bd10076d67635463800e)]:
|
|
10
|
+
- @hi-ui/core@4.0.6
|
|
11
|
+
- @hi-ui/use-latest@4.0.2
|
|
12
|
+
- @hi-ui/use-uncontrolled-state@4.0.2
|
|
13
|
+
- @hi-ui/use-unmount-effect@4.0.2
|
|
14
|
+
- @hi-ui/icons@4.0.16
|
|
15
|
+
- @hi-ui/icon-button@4.0.6
|
|
16
|
+
- @hi-ui/classname@4.0.2
|
|
17
|
+
- @hi-ui/env@4.0.2
|
|
18
|
+
- @hi-ui/react-utils@4.0.2
|
|
19
|
+
- @hi-ui/type-assertion@4.0.2
|
|
20
|
+
|
|
21
|
+
## 4.1.1
|
|
22
|
+
|
|
23
|
+
### Patch Changes
|
|
24
|
+
|
|
25
|
+
- [#2652](https://github.com/XiaoMi/hiui/pull/2652) [`d4f74c723`](https://github.com/XiaoMi/hiui/commit/d4f74c723d7fb619320dac5cdb4444480a3b7880) Thanks [@zyprepare](https://github.com/zyprepare)! - chore: 胶囊样式下标签之间增加竖线展示
|
|
26
|
+
|
|
27
|
+
- [#2653](https://github.com/XiaoMi/hiui/pull/2653) [`b477d91db`](https://github.com/XiaoMi/hiui/commit/b477d91db15bbc92c8712a9a771af5b332779315) Thanks [@zyprepare](https://github.com/zyprepare)! - chore: 更新使用到的 G40 颜色值
|
|
28
|
+
|
|
29
|
+
- Updated dependencies [[`b477d91db`](https://github.com/XiaoMi/hiui/commit/b477d91db15bbc92c8712a9a771af5b332779315)]:
|
|
30
|
+
- @hi-ui/icon-button@4.0.5
|
|
31
|
+
|
|
3
32
|
## 4.1.0
|
|
4
33
|
|
|
5
34
|
### Minor Changes
|
package/lib/cjs/TabInk.js
CHANGED
|
@@ -9,35 +9,17 @@
|
|
|
9
9
|
*/
|
|
10
10
|
'use strict';
|
|
11
11
|
|
|
12
|
-
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
13
|
-
|
|
14
|
-
Object.defineProperty(exports, '__esModule', {
|
|
15
|
-
value: true
|
|
16
|
-
});
|
|
17
|
-
|
|
18
12
|
var React = require('react');
|
|
19
|
-
|
|
20
13
|
var classname = require('@hi-ui/classname');
|
|
21
|
-
|
|
22
14
|
var index = require('./hooks/index.js');
|
|
23
|
-
|
|
24
|
-
function _interopDefaultLegacy(e) {
|
|
25
|
-
return e && _typeof(e) === 'object' && 'default' in e ? e : {
|
|
26
|
-
'default': e
|
|
27
|
-
};
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
31
|
-
|
|
32
15
|
var TabInk = function TabInk(_ref) {
|
|
33
16
|
var _cx;
|
|
34
|
-
|
|
35
17
|
var disabled = _ref.disabled,
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
18
|
+
prefixCls = _ref.prefixCls,
|
|
19
|
+
activeItemElement = _ref.activeItemElement,
|
|
20
|
+
activeTabId = _ref.activeTabId,
|
|
21
|
+
getTabOffset = _ref.getTabOffset,
|
|
22
|
+
showHorizontal = _ref.showHorizontal;
|
|
41
23
|
var inkRef = React.useRef(null);
|
|
42
24
|
var setTabLnkPositionStyle = React.useCallback(function () {
|
|
43
25
|
if (!inkRef.current) return;
|
|
@@ -45,9 +27,7 @@ var TabInk = function TabInk(_ref) {
|
|
|
45
27
|
var computedStyle = getComputedStyle(activeItemElement);
|
|
46
28
|
var itemRect = activeItemElement.getBoundingClientRect();
|
|
47
29
|
var offset = getTabOffset(activeTabId);
|
|
48
|
-
|
|
49
30
|
var _style;
|
|
50
|
-
|
|
51
31
|
if (!showHorizontal) {
|
|
52
32
|
var paddingTop = parseFloat(computedStyle.getPropertyValue('padding-top'));
|
|
53
33
|
var paddingBottom = parseFloat(computedStyle.getPropertyValue('padding-bottom'));
|
|
@@ -68,7 +48,6 @@ var TabInk = function TabInk(_ref) {
|
|
|
68
48
|
height: ''
|
|
69
49
|
};
|
|
70
50
|
}
|
|
71
|
-
|
|
72
51
|
Object.assign(inkRef.current.style, _style);
|
|
73
52
|
}, [activeItemElement, activeTabId, getTabOffset, showHorizontal]);
|
|
74
53
|
React.useEffect(function () {
|
|
@@ -82,10 +61,9 @@ var TabInk = function TabInk(_ref) {
|
|
|
82
61
|
},
|
|
83
62
|
onResize: setTabLnkPositionStyle
|
|
84
63
|
});
|
|
85
|
-
return /*#__PURE__*/
|
|
64
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
86
65
|
className: classname.cx(prefixCls + "__ink", (_cx = {}, _cx[prefixCls + "__ink--disabled"] = disabled, _cx)),
|
|
87
66
|
ref: inkRef
|
|
88
67
|
});
|
|
89
68
|
};
|
|
90
|
-
|
|
91
69
|
exports.TabInk = TabInk;
|
package/lib/cjs/TabItem.js
CHANGED
|
@@ -9,71 +9,48 @@
|
|
|
9
9
|
*/
|
|
10
10
|
'use strict';
|
|
11
11
|
|
|
12
|
-
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
13
|
-
|
|
14
|
-
Object.defineProperty(exports, '__esModule', {
|
|
15
|
-
value: true
|
|
16
|
-
});
|
|
17
|
-
|
|
18
12
|
var React = require('react');
|
|
19
|
-
|
|
20
13
|
var classname = require('@hi-ui/classname');
|
|
21
|
-
|
|
22
14
|
var env = require('@hi-ui/env');
|
|
23
|
-
|
|
24
15
|
var icons = require('@hi-ui/icons');
|
|
25
|
-
|
|
26
|
-
function _interopDefaultLegacy(e) {
|
|
27
|
-
return e && _typeof(e) === 'object' && 'default' in e ? e : {
|
|
28
|
-
'default': e
|
|
29
|
-
};
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
33
|
-
|
|
34
16
|
var TabItem = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
35
17
|
var _cx;
|
|
36
|
-
|
|
37
18
|
var className = _ref.className,
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
19
|
+
style = _ref.style,
|
|
20
|
+
disabled = _ref.disabled,
|
|
21
|
+
tabTitle = _ref.tabTitle,
|
|
22
|
+
tabDesc = _ref.tabDesc,
|
|
23
|
+
prefixCls = _ref.prefixCls,
|
|
24
|
+
tabId = _ref.tabId,
|
|
25
|
+
onTabClick = _ref.onTabClick,
|
|
26
|
+
active = _ref.active,
|
|
27
|
+
editable = _ref.editable,
|
|
28
|
+
onDelete = _ref.onDelete,
|
|
29
|
+
index = _ref.index,
|
|
30
|
+
_onDragStart = _ref.onDragStart,
|
|
31
|
+
_onDragOver = _ref.onDragOver,
|
|
32
|
+
_onDrop = _ref.onDrop,
|
|
33
|
+
_onDragEnd = _ref.onDragEnd,
|
|
34
|
+
itemRef = _ref.itemRef,
|
|
35
|
+
draggable = _ref.draggable,
|
|
36
|
+
_ref$type = _ref.type,
|
|
37
|
+
type = _ref$type === void 0 ? 'line' : _ref$type,
|
|
38
|
+
_ref$closeable = _ref.closeable,
|
|
39
|
+
closeable = _ref$closeable === void 0 ? true : _ref$closeable,
|
|
40
|
+
_ref$direction = _ref.direction,
|
|
41
|
+
layout = _ref$direction === void 0 ? 'horizontal' : _ref$direction;
|
|
62
42
|
var _useState = React.useState(null),
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
43
|
+
dragId = _useState[0],
|
|
44
|
+
setDragId = _useState[1];
|
|
66
45
|
var _useState2 = React.useState(null),
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
46
|
+
direction = _useState2[0],
|
|
47
|
+
setDirection = _useState2[1];
|
|
70
48
|
var _onClick = React.useCallback(function (e) {
|
|
71
49
|
if (onTabClick) {
|
|
72
50
|
onTabClick(tabId, e);
|
|
73
51
|
}
|
|
74
52
|
}, [onTabClick, tabId]);
|
|
75
|
-
|
|
76
|
-
return /*#__PURE__*/React__default["default"].createElement("div", {
|
|
53
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
77
54
|
style: style,
|
|
78
55
|
className: classname.cx(prefixCls + "__item", className, (_cx = {}, _cx[prefixCls + "__item--active"] = active, _cx[prefixCls + "__item--disabled"] = disabled, _cx[prefixCls + "__item--" + direction] = direction, _cx)),
|
|
79
56
|
ref: ref,
|
|
@@ -87,7 +64,6 @@ var TabItem = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
87
64
|
tabTitle: tabTitle
|
|
88
65
|
}));
|
|
89
66
|
setDragId(tabId);
|
|
90
|
-
|
|
91
67
|
if (_onDragStart) {
|
|
92
68
|
_onDragStart(e, {
|
|
93
69
|
dragNode: {
|
|
@@ -102,7 +78,6 @@ var TabItem = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
102
78
|
e.stopPropagation();
|
|
103
79
|
e.dataTransfer.clearData();
|
|
104
80
|
setDragId(null);
|
|
105
|
-
|
|
106
81
|
if (_onDragEnd) {
|
|
107
82
|
_onDragEnd(e, {
|
|
108
83
|
dragNode: {
|
|
@@ -120,15 +95,13 @@ var TabItem = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
120
95
|
onDragOver: function onDragOver(e) {
|
|
121
96
|
e.preventDefault();
|
|
122
97
|
e.stopPropagation();
|
|
123
|
-
|
|
124
98
|
if (dragId !== tabId && itemRef) {
|
|
125
99
|
var targetBoundingRect = itemRef.getBoundingClientRect();
|
|
126
100
|
var hoverTargetSortY = (targetBoundingRect.bottom - targetBoundingRect.top) / 2;
|
|
127
|
-
var hoverTargetSortX = (targetBoundingRect.right - targetBoundingRect.left) / 2;
|
|
128
|
-
|
|
101
|
+
var hoverTargetSortX = (targetBoundingRect.right - targetBoundingRect.left) / 2;
|
|
102
|
+
// 鼠标垂直移动距离
|
|
129
103
|
var hoverClientY = e.clientY - targetBoundingRect.top;
|
|
130
104
|
var hoverClientX = e.clientX - targetBoundingRect.left;
|
|
131
|
-
|
|
132
105
|
if (layout === 'vertical') {
|
|
133
106
|
if (hoverClientY < hoverTargetSortY) {
|
|
134
107
|
setDirection('prev');
|
|
@@ -143,7 +116,6 @@ var TabItem = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
143
116
|
}
|
|
144
117
|
}
|
|
145
118
|
}
|
|
146
|
-
|
|
147
119
|
if (_onDragOver) {
|
|
148
120
|
_onDragOver(e, {
|
|
149
121
|
targetNode: {
|
|
@@ -157,10 +129,8 @@ var TabItem = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
157
129
|
e.preventDefault();
|
|
158
130
|
e.stopPropagation();
|
|
159
131
|
setDirection(null);
|
|
160
|
-
|
|
161
132
|
if (_onDrop && dragId !== tabId) {
|
|
162
133
|
var passedData = JSON.parse(e.dataTransfer.getData('tab'));
|
|
163
|
-
|
|
164
134
|
_onDrop(e, {
|
|
165
135
|
dragNode: {
|
|
166
136
|
tabId: tabId,
|
|
@@ -174,15 +144,14 @@ var TabItem = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
174
144
|
});
|
|
175
145
|
}
|
|
176
146
|
}
|
|
177
|
-
}, /*#__PURE__*/
|
|
147
|
+
}, /*#__PURE__*/React.createElement("span", {
|
|
178
148
|
className: prefixCls + "-item__title"
|
|
179
|
-
}, tabTitle), type === 'desc' && /*#__PURE__*/
|
|
149
|
+
}, tabTitle), type === 'desc' && /*#__PURE__*/React.createElement("span", {
|
|
180
150
|
className: prefixCls + "-item__desc"
|
|
181
|
-
}, tabDesc), editable && closeable && /*#__PURE__*/
|
|
151
|
+
}, tabDesc), editable && closeable && /*#__PURE__*/React.createElement("span", {
|
|
182
152
|
className: prefixCls + "__close-btn",
|
|
183
153
|
onClick: function onClick(e) {
|
|
184
154
|
e.stopPropagation();
|
|
185
|
-
|
|
186
155
|
if (onDelete) {
|
|
187
156
|
onDelete({
|
|
188
157
|
tabId: tabId,
|
|
@@ -190,11 +159,9 @@ var TabItem = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
190
159
|
}, index);
|
|
191
160
|
}
|
|
192
161
|
}
|
|
193
|
-
}, /*#__PURE__*/
|
|
162
|
+
}, /*#__PURE__*/React.createElement(icons.CloseOutlined, null)));
|
|
194
163
|
});
|
|
195
|
-
|
|
196
164
|
if (env.__DEV__) {
|
|
197
165
|
TabItem.displayName = 'TabItem';
|
|
198
166
|
}
|
|
199
|
-
|
|
200
167
|
exports.TabItem = TabItem;
|
package/lib/cjs/TabList.js
CHANGED
|
@@ -9,129 +9,85 @@
|
|
|
9
9
|
*/
|
|
10
10
|
'use strict';
|
|
11
11
|
|
|
12
|
-
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
13
|
-
|
|
14
|
-
Object.defineProperty(exports, '__esModule', {
|
|
15
|
-
value: true
|
|
16
|
-
});
|
|
17
|
-
|
|
18
12
|
var tslib = require('tslib');
|
|
19
|
-
|
|
20
13
|
var React = require('react');
|
|
21
|
-
|
|
22
14
|
var env = require('@hi-ui/env');
|
|
23
|
-
|
|
24
15
|
var TabItem = require('./TabItem.js');
|
|
25
|
-
|
|
26
16
|
var useUncontrolledState = require('@hi-ui/use-uncontrolled-state');
|
|
27
|
-
|
|
28
17
|
var classname = require('@hi-ui/classname');
|
|
29
|
-
|
|
30
18
|
var TabInk = require('./TabInk.js');
|
|
31
|
-
|
|
32
19
|
var icons = require('@hi-ui/icons');
|
|
33
|
-
|
|
34
20
|
var typeAssertion = require('@hi-ui/type-assertion');
|
|
35
|
-
|
|
36
21
|
var iconButton = require('@hi-ui/icon-button');
|
|
37
|
-
|
|
38
22
|
var index = require('./hooks/index.js');
|
|
39
|
-
|
|
40
23
|
var useLatest = require('@hi-ui/use-latest');
|
|
41
|
-
|
|
42
24
|
var index$1 = require('./utils/index.js');
|
|
43
|
-
|
|
44
|
-
function _interopDefaultLegacy(e) {
|
|
45
|
-
return e && _typeof(e) === 'object' && 'default' in e ? e : {
|
|
46
|
-
'default': e
|
|
47
|
-
};
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
51
|
-
|
|
52
25
|
var _role = 'tabs';
|
|
53
|
-
|
|
54
26
|
var _prefix = classname.getPrefixCls(_role);
|
|
55
|
-
|
|
56
27
|
var TabList = /*#__PURE__*/React.forwardRef(function (_a, ref) {
|
|
57
28
|
var _cx;
|
|
58
|
-
|
|
59
29
|
var _b;
|
|
60
|
-
|
|
61
30
|
var data = _a.data,
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
31
|
+
className = _a.className,
|
|
32
|
+
style = _a.style,
|
|
33
|
+
activeId = _a.activeId,
|
|
34
|
+
defaultActiveId = _a.defaultActiveId,
|
|
35
|
+
onChange = _a.onChange,
|
|
36
|
+
onTabClick = _a.onTabClick,
|
|
37
|
+
_a$prefixCls = _a.prefixCls,
|
|
38
|
+
prefixCls = _a$prefixCls === void 0 ? _prefix : _a$prefixCls,
|
|
39
|
+
directionProp = _a.direction,
|
|
40
|
+
_a$placement = _a.placement,
|
|
41
|
+
placement = _a$placement === void 0 ? 'horizontal' : _a$placement,
|
|
42
|
+
editable = _a.editable,
|
|
43
|
+
onAdd = _a.onAdd,
|
|
44
|
+
onDelete = _a.onDelete,
|
|
45
|
+
draggable = _a.draggable,
|
|
46
|
+
onDragStart = _a.onDragStart,
|
|
47
|
+
onDragOver = _a.onDragOver,
|
|
48
|
+
onDrop = _a.onDrop,
|
|
49
|
+
onDragEnd = _a.onDragEnd,
|
|
50
|
+
_a$type = _a.type,
|
|
51
|
+
type = _a$type === void 0 ? 'line' : _a$type,
|
|
52
|
+
extra = _a.extra,
|
|
53
|
+
rest = tslib.__rest(_a, ["data", "className", "style", "activeId", "defaultActiveId", "onChange", "onTabClick", "prefixCls", "direction", "placement", "editable", "onAdd", "onDelete", "draggable", "onDragStart", "onDragOver", "onDrop", "onDragEnd", "type", "extra"]);
|
|
86
54
|
var direction = (_b = placement !== null && placement !== void 0 ? placement : directionProp) !== null && _b !== void 0 ? _b : 'horizontal';
|
|
87
|
-
|
|
88
55
|
var _useUncontrolledState = useUncontrolledState.useUncontrolledState(function () {
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
setActiveTabId = _useUncontrolledState[1];
|
|
97
|
-
|
|
56
|
+
if (typeAssertion.isUndef(defaultActiveId)) {
|
|
57
|
+
return data[0] ? data[0].tabId : '';
|
|
58
|
+
}
|
|
59
|
+
return defaultActiveId;
|
|
60
|
+
}, activeId, onChange, Object.is),
|
|
61
|
+
activeTabId = _useUncontrolledState[0],
|
|
62
|
+
setActiveTabId = _useUncontrolledState[1];
|
|
98
63
|
var _useState = React.useState(null),
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
64
|
+
innerElement = _useState[0],
|
|
65
|
+
setInnerElement = _useState[1];
|
|
102
66
|
var _useState2 = React.useState(null),
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
67
|
+
scrollElement = _useState2[0],
|
|
68
|
+
setScrollElement = _useState2[1];
|
|
106
69
|
var showHorizontal = direction === 'horizontal';
|
|
107
70
|
var getClientSize = React.useCallback(function (element) {
|
|
108
71
|
return showHorizontal ? element.clientWidth : element.clientHeight;
|
|
109
72
|
}, [showHorizontal]);
|
|
110
|
-
|
|
111
73
|
var _useState3 = React.useState(0),
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
74
|
+
translatePos = _useState3[0],
|
|
75
|
+
setTranslatePos = _useState3[1];
|
|
115
76
|
var _useState4 = React.useState(0),
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
77
|
+
translateBoundPos = _useState4[0],
|
|
78
|
+
setTranslateBoundPos = _useState4[1];
|
|
119
79
|
var itemsRef = React.useRef({});
|
|
120
|
-
|
|
121
80
|
var _useState5 = React.useState(false),
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
81
|
+
showScrollBtn = _useState5[0],
|
|
82
|
+
setShowScrollBtn = _useState5[1];
|
|
125
83
|
var resizeScroll = function resizeScroll(scrollSize, innerSize) {
|
|
126
84
|
var showScrollBtn = scrollSize > innerSize;
|
|
127
85
|
setShowScrollBtn(showScrollBtn);
|
|
128
|
-
|
|
129
86
|
if (showScrollBtn) {
|
|
130
87
|
setTranslateBoundPos(scrollSize - innerSize);
|
|
131
88
|
}
|
|
132
|
-
};
|
|
133
|
-
|
|
134
|
-
|
|
89
|
+
};
|
|
90
|
+
// 响应式滚动按钮展示
|
|
135
91
|
index.useResizeObserver({
|
|
136
92
|
element: innerElement,
|
|
137
93
|
getSize: getClientSize,
|
|
@@ -148,36 +104,32 @@ var TabList = /*#__PURE__*/React.forwardRef(function (_a, ref) {
|
|
|
148
104
|
onResize: function onResize(_, scrollSize) {
|
|
149
105
|
if (innerElement) {
|
|
150
106
|
var innerSize = getClientSize(innerElement);
|
|
151
|
-
resizeScroll(scrollSize, innerSize);
|
|
152
|
-
|
|
107
|
+
resizeScroll(scrollSize, innerSize);
|
|
108
|
+
// 每次滚动容器大小改变后,需要同步更新滚动位置
|
|
153
109
|
initScrollPosition(activeId);
|
|
154
110
|
}
|
|
155
111
|
}
|
|
156
112
|
});
|
|
157
113
|
var getTabPos = React.useCallback(function (tabId) {
|
|
158
|
-
var target = 0;
|
|
159
|
-
|
|
114
|
+
var target = 0;
|
|
115
|
+
// 获取目标元素的位置
|
|
160
116
|
var targetElement = itemsRef.current[tabId];
|
|
161
|
-
|
|
162
117
|
if (targetElement) {
|
|
163
118
|
var rect = targetElement.getBoundingClientRect();
|
|
164
119
|
target = showHorizontal ? rect.left : rect.top;
|
|
165
120
|
}
|
|
166
|
-
|
|
167
121
|
return target;
|
|
168
122
|
}, [showHorizontal]);
|
|
169
123
|
var getTabOffset = React.useCallback(function (tabId) {
|
|
170
124
|
// 获取目标元素的位置
|
|
171
|
-
var targetPos = getTabPos(tabId);
|
|
172
|
-
|
|
125
|
+
var targetPos = getTabPos(tabId);
|
|
126
|
+
// 获取基准元素的位置(第一个)
|
|
173
127
|
var basePos = 0;
|
|
174
|
-
|
|
175
128
|
if (typeAssertion.isArrayNonEmpty(data)) {
|
|
176
129
|
var baseItem = data[0];
|
|
177
130
|
basePos = getTabPos(baseItem.tabId);
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
|
|
131
|
+
}
|
|
132
|
+
// 返回目标元素相对基准元素的偏移量
|
|
181
133
|
return targetPos ? targetPos - basePos : 0;
|
|
182
134
|
}, [data, getTabPos]);
|
|
183
135
|
var syncScrollPosition = React.useCallback(function (tabId) {
|
|
@@ -185,19 +137,16 @@ var TabList = /*#__PURE__*/React.forwardRef(function (_a, ref) {
|
|
|
185
137
|
if (!scrollElement) return;
|
|
186
138
|
var scrollSize = getClientSize(scrollElement);
|
|
187
139
|
var innerSize = getClientSize(innerElement);
|
|
188
|
-
var offsetValue = getTabOffset(tabId);
|
|
189
|
-
|
|
140
|
+
var offsetValue = getTabOffset(tabId);
|
|
141
|
+
// 左边或上半部内容展示不全
|
|
190
142
|
var currentOffset = -translatePos;
|
|
191
|
-
|
|
192
143
|
if (offsetValue < currentOffset) {
|
|
193
144
|
setTranslatePos(-offsetValue);
|
|
194
145
|
} else {
|
|
195
146
|
// 右边或下半部内容展示不全
|
|
196
147
|
var nextTabId = index$1.getNextTabId(data, tabId);
|
|
197
148
|
var nextOffsetValue = nextTabId !== null ? getTabOffset(nextTabId) : scrollSize;
|
|
198
|
-
|
|
199
149
|
var _currentOffset = -translatePos + innerSize;
|
|
200
|
-
|
|
201
150
|
if (nextOffsetValue > _currentOffset) {
|
|
202
151
|
setTranslatePos(translatePos - (nextOffsetValue - _currentOffset));
|
|
203
152
|
}
|
|
@@ -215,19 +164,19 @@ var TabList = /*#__PURE__*/React.forwardRef(function (_a, ref) {
|
|
|
215
164
|
// activeId 受控模式下改变后,同步更新滚动位置
|
|
216
165
|
initScrollPosition(activeId);
|
|
217
166
|
}, [activeId, initScrollPosition]);
|
|
218
|
-
return /*#__PURE__*/
|
|
167
|
+
return /*#__PURE__*/React.createElement("div", Object.assign({
|
|
219
168
|
style: style,
|
|
220
169
|
className: classname.cx(prefixCls + "__list", prefixCls + "__list--placement-" + direction, (_cx = {}, _cx[prefixCls + "__list--" + type] = type, _cx), className),
|
|
221
170
|
ref: ref
|
|
222
|
-
}, rest), showScrollBtn ? /*#__PURE__*/
|
|
171
|
+
}, rest), showScrollBtn ? /*#__PURE__*/React.createElement(iconButton.IconButton, {
|
|
223
172
|
className: showHorizontal ? prefixCls + "__left-btn" : prefixCls + "__up-btn",
|
|
224
173
|
effect: true,
|
|
225
174
|
disabled: translatePos === 0,
|
|
226
|
-
icon: showHorizontal ? /*#__PURE__*/
|
|
175
|
+
icon: showHorizontal ? /*#__PURE__*/React.createElement(icons.LeftOutlined, null) : /*#__PURE__*/React.createElement(icons.UpOutlined, null),
|
|
227
176
|
onClick: function onClick() {
|
|
228
177
|
if (!scrollElement) return;
|
|
229
|
-
if (!innerElement) return;
|
|
230
|
-
|
|
178
|
+
if (!innerElement) return;
|
|
179
|
+
// 向前面滚动
|
|
231
180
|
var clientSize = getClientSize(innerElement);
|
|
232
181
|
var canScroll = -translatePos - clientSize;
|
|
233
182
|
var moveWidth = canScroll >= 0 ? clientSize : -translatePos;
|
|
@@ -235,17 +184,17 @@ var TabList = /*#__PURE__*/React.forwardRef(function (_a, ref) {
|
|
|
235
184
|
return prev + moveWidth;
|
|
236
185
|
});
|
|
237
186
|
}
|
|
238
|
-
}) : null, /*#__PURE__*/
|
|
187
|
+
}) : null, /*#__PURE__*/React.createElement("div", {
|
|
239
188
|
className: classname.cx(prefixCls + "__list--inner"),
|
|
240
189
|
ref: setInnerElement
|
|
241
|
-
}, /*#__PURE__*/
|
|
190
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
242
191
|
className: classname.cx(prefixCls + "__list--scroll"),
|
|
243
192
|
ref: setScrollElement,
|
|
244
193
|
style: showScrollBtn ? {
|
|
245
194
|
transform: direction === 'horizontal' ? "translateX(" + translatePos + "px)" : "translateY(" + translatePos + "px)"
|
|
246
195
|
} : undefined
|
|
247
196
|
}, data.map(function (item, index) {
|
|
248
|
-
return /*#__PURE__*/
|
|
197
|
+
return /*#__PURE__*/React.createElement(TabItem.TabItem, Object.assign({
|
|
249
198
|
key: index
|
|
250
199
|
}, item, {
|
|
251
200
|
ref: function ref(node) {
|
|
@@ -266,21 +215,21 @@ var TabList = /*#__PURE__*/React.forwardRef(function (_a, ref) {
|
|
|
266
215
|
onDragEnd: onDragEnd,
|
|
267
216
|
direction: direction
|
|
268
217
|
}));
|
|
269
|
-
}), type === 'line' ? /*#__PURE__*/
|
|
218
|
+
}), type === 'line' ? /*#__PURE__*/React.createElement(TabInk.TabInk, {
|
|
270
219
|
prefixCls: prefixCls,
|
|
271
220
|
showHorizontal: showHorizontal,
|
|
272
221
|
activeItemElement: itemsRef.current[activeTabId],
|
|
273
222
|
activeTabId: activeTabId,
|
|
274
223
|
getTabOffset: getTabOffset
|
|
275
|
-
}) : null)), showScrollBtn ? /*#__PURE__*/
|
|
224
|
+
}) : null)), showScrollBtn ? /*#__PURE__*/React.createElement(iconButton.IconButton, {
|
|
276
225
|
effect: true,
|
|
277
226
|
className: showHorizontal ? prefixCls + "__right-btn" : prefixCls + "__down-btn",
|
|
278
227
|
disabled: translateBoundPos === -translatePos,
|
|
279
|
-
icon: showHorizontal ? /*#__PURE__*/
|
|
228
|
+
icon: showHorizontal ? /*#__PURE__*/React.createElement(icons.RightOutlined, null) : /*#__PURE__*/React.createElement(icons.DownOutlined, null),
|
|
280
229
|
onClick: function onClick() {
|
|
281
230
|
if (!scrollElement) return;
|
|
282
|
-
if (!innerElement) return;
|
|
283
|
-
|
|
231
|
+
if (!innerElement) return;
|
|
232
|
+
// 向后面滚动
|
|
284
233
|
var scrollSize = getClientSize(scrollElement);
|
|
285
234
|
var innerSize = getClientSize(innerElement);
|
|
286
235
|
var canScrollWidth = scrollSize - innerSize + translatePos;
|
|
@@ -289,15 +238,13 @@ var TabList = /*#__PURE__*/React.forwardRef(function (_a, ref) {
|
|
|
289
238
|
return prev - moveWidth;
|
|
290
239
|
});
|
|
291
240
|
}
|
|
292
|
-
}) : null, editable ? /*#__PURE__*/
|
|
293
|
-
icon: /*#__PURE__*/
|
|
241
|
+
}) : null, editable ? /*#__PURE__*/React.createElement(iconButton.IconButton, {
|
|
242
|
+
icon: /*#__PURE__*/React.createElement(icons.PlusOutlined, null),
|
|
294
243
|
className: prefixCls + "__add-btn",
|
|
295
244
|
onClick: onAdd
|
|
296
245
|
}) : null, extra);
|
|
297
246
|
});
|
|
298
|
-
|
|
299
247
|
if (env.__DEV__) {
|
|
300
248
|
TabList.displayName = 'TabList';
|
|
301
249
|
}
|
|
302
|
-
|
|
303
250
|
exports.TabList = TabList;
|