@hi-ui/cascader 5.0.0-experimental.2 → 5.0.0-experimental.3
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 +6 -0
- package/lib/cjs/CascaderMenuList.js +31 -3
- package/lib/esm/CascaderMenuList.js +31 -4
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -22,6 +22,7 @@ var index = require('./utils/index.js');
|
|
|
22
22
|
var context = require('./context.js');
|
|
23
23
|
var treeUtils = require('@hi-ui/tree-utils');
|
|
24
24
|
var typeAssertion = require('@hi-ui/type-assertion');
|
|
25
|
+
var scrollIntoView = require('scroll-into-view-if-needed');
|
|
25
26
|
var VirtualList = require('@hi-ui/virtual-list');
|
|
26
27
|
function _interopDefaultCompat(e) {
|
|
27
28
|
return e && _typeof(e) === 'object' && 'default' in e ? e : {
|
|
@@ -29,6 +30,7 @@ function _interopDefaultCompat(e) {
|
|
|
29
30
|
};
|
|
30
31
|
}
|
|
31
32
|
var React__default = /*#__PURE__*/_interopDefaultCompat(React);
|
|
33
|
+
var scrollIntoView__default = /*#__PURE__*/_interopDefaultCompat(scrollIntoView);
|
|
32
34
|
var VirtualList__default = /*#__PURE__*/_interopDefaultCompat(VirtualList);
|
|
33
35
|
var menuListPrefix = classname.getPrefixCls('cascader-menu-list');
|
|
34
36
|
var CascaderMenuList = /*#__PURE__*/React.forwardRef(function (_a, ref) {
|
|
@@ -82,6 +84,26 @@ var CascaderMenu = function CascaderMenu(_ref) {
|
|
|
82
84
|
height: 260,
|
|
83
85
|
itemHeight: 32
|
|
84
86
|
};
|
|
87
|
+
var activeNodeRef = React.useRef();
|
|
88
|
+
var _useState = React.useState(null),
|
|
89
|
+
activeNode = _useState[0],
|
|
90
|
+
setActiveNode = _useState[1];
|
|
91
|
+
var timeoutId = React.useRef(null);
|
|
92
|
+
React.useEffect(function () {
|
|
93
|
+
if (activeNode) {
|
|
94
|
+
timeoutId.current = setTimeout(function () {
|
|
95
|
+
scrollIntoView__default["default"](activeNode, {
|
|
96
|
+
scrollMode: 'if-needed',
|
|
97
|
+
block: 'center'
|
|
98
|
+
});
|
|
99
|
+
}, 100);
|
|
100
|
+
}
|
|
101
|
+
return function () {
|
|
102
|
+
if (timeoutId.current) {
|
|
103
|
+
clearTimeout(timeoutId.current);
|
|
104
|
+
}
|
|
105
|
+
};
|
|
106
|
+
}, [activeNode, activeNodeRef, virtual]);
|
|
85
107
|
return /*#__PURE__*/React__default["default"].createElement("ul", {
|
|
86
108
|
className: cls,
|
|
87
109
|
style: menuStyle,
|
|
@@ -99,13 +121,15 @@ var CascaderMenu = function CascaderMenu(_ref) {
|
|
|
99
121
|
return /*#__PURE__*/React__default["default"].createElement(MenuItem, {
|
|
100
122
|
key: option.id,
|
|
101
123
|
option: option,
|
|
102
|
-
prefixCls: prefixCls
|
|
124
|
+
prefixCls: prefixCls,
|
|
125
|
+
setActiveNode: setActiveNode
|
|
103
126
|
});
|
|
104
127
|
}) : null);
|
|
105
128
|
};
|
|
106
129
|
var MenuItem = /*#__PURE__*/React.forwardRef(function (_ref2, ref) {
|
|
107
130
|
var option = _ref2.option,
|
|
108
|
-
prefixCls = _ref2.prefixCls
|
|
131
|
+
prefixCls = _ref2.prefixCls,
|
|
132
|
+
setActiveNode = _ref2.setActiveNode;
|
|
109
133
|
var _useCascaderContext3 = context.useCascaderContext(),
|
|
110
134
|
flatted = _useCascaderContext3.flatted,
|
|
111
135
|
disabledContext = _useCascaderContext3.disabled,
|
|
@@ -125,7 +149,11 @@ var MenuItem = /*#__PURE__*/React.forwardRef(function (_ref2, ref) {
|
|
|
125
149
|
var disabled = disabledContext || option.disabled;
|
|
126
150
|
var optionCls = classname.cx(prefixCls + "-option", active && prefixCls + "-option--active", loading && prefixCls + "-option--loading", disabled && prefixCls + "-option--disabled", selected && prefixCls + "-option--selected", classNames === null || classNames === void 0 ? void 0 : classNames.option);
|
|
127
151
|
return /*#__PURE__*/React__default["default"].createElement("li", {
|
|
128
|
-
ref: ref
|
|
152
|
+
ref: function ref(node) {
|
|
153
|
+
if (node && active) {
|
|
154
|
+
setActiveNode === null || setActiveNode === void 0 ? void 0 : setActiveNode(node);
|
|
155
|
+
}
|
|
156
|
+
},
|
|
129
157
|
key: option.id,
|
|
130
158
|
role: "menu-item",
|
|
131
159
|
className: prefixCls + "-item",
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* LICENSE file in the root directory of this source tree.
|
|
9
9
|
*/
|
|
10
10
|
import { __rest } from 'tslib';
|
|
11
|
-
import React, { forwardRef } from 'react';
|
|
11
|
+
import React, { forwardRef, useRef, useState, useEffect } from 'react';
|
|
12
12
|
import { getPrefixCls, cx } from '@hi-ui/classname';
|
|
13
13
|
import { __DEV__ } from '@hi-ui/env';
|
|
14
14
|
import { defaultLoadingIcon, defaultSuffixIcon, defaultLeafIcon } from './icons/index.js';
|
|
@@ -16,6 +16,7 @@ import { getItemEventData, checkCanLoadChildren } from './utils/index.js';
|
|
|
16
16
|
import { useCascaderContext } from './context.js';
|
|
17
17
|
import { getTopDownAncestors } from '@hi-ui/tree-utils';
|
|
18
18
|
import { isArrayNonEmpty, isFunction } from '@hi-ui/type-assertion';
|
|
19
|
+
import scrollIntoView from 'scroll-into-view-if-needed';
|
|
19
20
|
import VirtualList from '@hi-ui/virtual-list';
|
|
20
21
|
var menuListPrefix = getPrefixCls('cascader-menu-list');
|
|
21
22
|
var CascaderMenuList = /*#__PURE__*/forwardRef(function (_a, ref) {
|
|
@@ -69,6 +70,26 @@ var CascaderMenu = function CascaderMenu(_ref) {
|
|
|
69
70
|
height: 260,
|
|
70
71
|
itemHeight: 32
|
|
71
72
|
};
|
|
73
|
+
var activeNodeRef = useRef();
|
|
74
|
+
var _useState = useState(null),
|
|
75
|
+
activeNode = _useState[0],
|
|
76
|
+
setActiveNode = _useState[1];
|
|
77
|
+
var timeoutId = useRef(null);
|
|
78
|
+
useEffect(function () {
|
|
79
|
+
if (activeNode) {
|
|
80
|
+
timeoutId.current = setTimeout(function () {
|
|
81
|
+
scrollIntoView(activeNode, {
|
|
82
|
+
scrollMode: 'if-needed',
|
|
83
|
+
block: 'center'
|
|
84
|
+
});
|
|
85
|
+
}, 100);
|
|
86
|
+
}
|
|
87
|
+
return function () {
|
|
88
|
+
if (timeoutId.current) {
|
|
89
|
+
clearTimeout(timeoutId.current);
|
|
90
|
+
}
|
|
91
|
+
};
|
|
92
|
+
}, [activeNode, activeNodeRef, virtual]);
|
|
72
93
|
return /*#__PURE__*/React.createElement("ul", {
|
|
73
94
|
className: cls,
|
|
74
95
|
style: menuStyle,
|
|
@@ -86,13 +107,15 @@ var CascaderMenu = function CascaderMenu(_ref) {
|
|
|
86
107
|
return /*#__PURE__*/React.createElement(MenuItem, {
|
|
87
108
|
key: option.id,
|
|
88
109
|
option: option,
|
|
89
|
-
prefixCls: prefixCls
|
|
110
|
+
prefixCls: prefixCls,
|
|
111
|
+
setActiveNode: setActiveNode
|
|
90
112
|
});
|
|
91
113
|
}) : null);
|
|
92
114
|
};
|
|
93
115
|
var MenuItem = /*#__PURE__*/forwardRef(function (_ref2, ref) {
|
|
94
116
|
var option = _ref2.option,
|
|
95
|
-
prefixCls = _ref2.prefixCls
|
|
117
|
+
prefixCls = _ref2.prefixCls,
|
|
118
|
+
setActiveNode = _ref2.setActiveNode;
|
|
96
119
|
var _useCascaderContext3 = useCascaderContext(),
|
|
97
120
|
flatted = _useCascaderContext3.flatted,
|
|
98
121
|
disabledContext = _useCascaderContext3.disabled,
|
|
@@ -112,7 +135,11 @@ var MenuItem = /*#__PURE__*/forwardRef(function (_ref2, ref) {
|
|
|
112
135
|
var disabled = disabledContext || option.disabled;
|
|
113
136
|
var optionCls = cx(prefixCls + "-option", active && prefixCls + "-option--active", loading && prefixCls + "-option--loading", disabled && prefixCls + "-option--disabled", selected && prefixCls + "-option--selected", classNames === null || classNames === void 0 ? void 0 : classNames.option);
|
|
114
137
|
return /*#__PURE__*/React.createElement("li", {
|
|
115
|
-
ref: ref
|
|
138
|
+
ref: function ref(node) {
|
|
139
|
+
if (node && active) {
|
|
140
|
+
setActiveNode === null || setActiveNode === void 0 ? void 0 : setActiveNode(node);
|
|
141
|
+
}
|
|
142
|
+
},
|
|
116
143
|
key: option.id,
|
|
117
144
|
role: "menu-item",
|
|
118
145
|
className: prefixCls + "-item",
|