@hi-ui/dropdown 4.0.0-alpha.1 → 4.0.0-alpha.13
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/README.md +59 -7
- package/lib/cjs/Dropdown.js +55 -60
- package/lib/cjs/Dropdown.js.map +1 -1
- package/lib/cjs/styles/index.scss.js +1 -1
- package/lib/cjs/use-dropdown.js +34 -24
- package/lib/cjs/use-dropdown.js.map +1 -1
- package/lib/esm/Dropdown.js +55 -60
- package/lib/esm/Dropdown.js.map +1 -1
- package/lib/esm/styles/index.scss.js +1 -1
- package/lib/esm/use-dropdown.js +32 -24
- package/lib/esm/use-dropdown.js.map +1 -1
- package/lib/types/Dropdown.d.ts +20 -1
- package/lib/types/types.d.ts +4 -0
- package/lib/types/use-dropdown.d.ts +6 -3
- package/package.json +17 -16
package/README.md
CHANGED
|
@@ -1,11 +1,63 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Dropdown 下拉菜单
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
用来将菜单收起在下拉面板中,使用中唤起面板,有效节省空间
|
|
4
4
|
|
|
5
|
-
##
|
|
5
|
+
## 何时使用
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
const Dropdown = require('@hi-ui/dropdown');
|
|
7
|
+
有二级以上的菜单且展示空间有限
|
|
9
8
|
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
当一组平级的动作要展示时,将其收入一个入口,可让页面信息更整洁
|
|
10
|
+
|
|
11
|
+
## 使用示例
|
|
12
|
+
|
|
13
|
+
<!-- Inject Stories -->
|
|
14
|
+
|
|
15
|
+
## Props
|
|
16
|
+
|
|
17
|
+
| 参数 | 说明 | 类型 | 可选值 | 默认值 |
|
|
18
|
+
| ---------------- | --------------------------------------- | ------------------- | ----------------------------------- | ------- |
|
|
19
|
+
| data | 下拉菜单数据项 | DataItem [] | - | - |
|
|
20
|
+
| title | 下拉菜单显示标题的内容 | ReactNode | - | - |
|
|
21
|
+
| type | 下拉菜单按钮类型 | string | 'text' \| 'button' \| 'group' | 'text' |
|
|
22
|
+
| trigger | 下拉菜单触发方式 | string \| string [] | 'click' \| 'contextmenu' \| 'hover' | 'hover' |
|
|
23
|
+
| disabled | 是否禁用下拉菜单 | boolean | true \| false | - |
|
|
24
|
+
| width | 菜单项宽度 | number | - | 180 |
|
|
25
|
+
| overlayClassName | 下拉根元素的类名称 | string | - | - |
|
|
26
|
+
| overlay | 自定义控制弹出层 popper 行为 | PopperOverlayProps | - | - |
|
|
27
|
+
| children | 自定义下拉菜单触发按钮,优先级大于 type | ReactElement | - | - |
|
|
28
|
+
|
|
29
|
+
> 注意:自定义按钮需要支持 ref 获取元素 dom 引用 以及 trigger 对应的事件:
|
|
30
|
+
>
|
|
31
|
+
> hover: onMouseEnter \ onMouseLeave
|
|
32
|
+
> click: onClick
|
|
33
|
+
> contextmenu: onContextMenu
|
|
34
|
+
|
|
35
|
+
## Events
|
|
36
|
+
|
|
37
|
+
| 名称 | 说明 | 类型 | 参数 | 返回值 |
|
|
38
|
+
| ------------- | --------------------------------------------- | --------------------------- | ------------------- | ------ |
|
|
39
|
+
| onClick | 点击后的回调 | (id: ReactText) => void | id: 点击的数据项 ID | - |
|
|
40
|
+
| onButtonClick | 点击左侧按钮的回调,仅在 type 为 group 时有效 | (event: MouseEvent) => void | event: 鼠标事件对象 | - |
|
|
41
|
+
|
|
42
|
+
## Type
|
|
43
|
+
|
|
44
|
+
### DataItem
|
|
45
|
+
|
|
46
|
+
| 参数 | 说明 | 类型 | 可选值 | 默认值 |
|
|
47
|
+
| -------- | --------------------------------------------- | --------- | ---------------------------------------------- | ------ |
|
|
48
|
+
| title | 标题的内容,设置为 `'-'` 时是分割线 | ReactNode | - | - |
|
|
49
|
+
| id | 唯一标识 id | ReactText | - | - |
|
|
50
|
+
| disabled | 是否禁用 | boolean | true \| false | false |
|
|
51
|
+
| href | 点击跳转的路径 | string | - | - |
|
|
52
|
+
| target | 同 a 标签的 target 属性,仅在设置 href 后有效 | string | '\_self' \| '\_blank' \| '\_parent' \| '\_top' | - |
|
|
53
|
+
|
|
54
|
+
## CHANGELOG
|
|
55
|
+
|
|
56
|
+
| 参数 | 变更类型 | 变更内容 | 解决的问题 |
|
|
57
|
+
| -------- | ------------------------------- | ------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------- |
|
|
58
|
+
| propName | feature \| deprecated \| update | 变更了什么 | 之前是什么样子,解决什么问题 |
|
|
59
|
+
| ---- | ---- | ---- | ---- |
|
|
60
|
+
| children | feature | 自定义下拉菜单触发按钮 | 功能强化 |
|
|
61
|
+
| popper | feature | 字段 placement -> popper | Picker 类型组件统一支持,聚合管理。比如: placement arrow container disablePortal 等,之前有的加了有的没加 |
|
|
62
|
+
| id | update | 对于表单控件 id 值的控制,均使用 ReactText(即 string 和 number 都支持) | 之前是 string 类型 |
|
|
63
|
+
| data | update | 添加 { type: } | 扩展分割线 |
|
package/lib/cjs/Dropdown.js
CHANGED
|
@@ -51,7 +51,12 @@ var _prefix = classname.getPrefixCls(_role);
|
|
|
51
51
|
|
|
52
52
|
var DEFAULT_DATA = [];
|
|
53
53
|
/**
|
|
54
|
-
*
|
|
54
|
+
* 下拉菜单
|
|
55
|
+
*
|
|
56
|
+
* TODO:
|
|
57
|
+
* 1. 支持自定义icon
|
|
58
|
+
* 2. 支持 titleRender
|
|
59
|
+
* 3. 支持 onClick 阻止默认行为关闭
|
|
55
60
|
*/
|
|
56
61
|
|
|
57
62
|
var Dropdown = /*#__PURE__*/React.forwardRef(function (_a, ref) {
|
|
@@ -60,6 +65,7 @@ var Dropdown = /*#__PURE__*/React.forwardRef(function (_a, ref) {
|
|
|
60
65
|
_a$role = _a.role,
|
|
61
66
|
role = _a$role === void 0 ? _role : _a$role,
|
|
62
67
|
className = _a.className,
|
|
68
|
+
triggerButton = _a.children,
|
|
63
69
|
_a$data = _a.data,
|
|
64
70
|
data = _a$data === void 0 ? DEFAULT_DATA : _a$data,
|
|
65
71
|
title = _a.title,
|
|
@@ -83,14 +89,12 @@ var Dropdown = /*#__PURE__*/React.forwardRef(function (_a, ref) {
|
|
|
83
89
|
var dig = function dig(treeData) {
|
|
84
90
|
return treeData.map(function (item) {
|
|
85
91
|
var menu = typeAssertion.isArrayNonEmpty(item.children) ? /*#__PURE__*/React__default['default'].createElement(DropdownMenu, {
|
|
86
|
-
|
|
92
|
+
overlay: {
|
|
87
93
|
gutterGap: 16
|
|
88
94
|
}
|
|
89
|
-
}, dig(item.children)) : null;
|
|
90
|
-
|
|
91
|
-
var shouldRenderDivider = item.title === '-';
|
|
95
|
+
}, dig(item.children)) : null;
|
|
92
96
|
|
|
93
|
-
if (
|
|
97
|
+
if (item.split) {
|
|
94
98
|
return /*#__PURE__*/React__default['default'].createElement("li", {
|
|
95
99
|
key: item.id,
|
|
96
100
|
className: prefixCls + "-divider"
|
|
@@ -115,24 +119,41 @@ var Dropdown = /*#__PURE__*/React.forwardRef(function (_a, ref) {
|
|
|
115
119
|
});
|
|
116
120
|
};
|
|
117
121
|
|
|
122
|
+
var renderButton = function renderButton() {
|
|
123
|
+
if (triggerButton) {
|
|
124
|
+
// @ts-ignore
|
|
125
|
+
return /*#__PURE__*/React.cloneElement(triggerButton, getTriggerProps(triggerButton.props, triggerButton.ref));
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
if (type === 'text' || type === 'button') {
|
|
129
|
+
return /*#__PURE__*/React__default['default'].createElement(Button__default['default'], Object.assign({}, getTriggerProps(), {
|
|
130
|
+
appearance: type === 'button' ? 'filled' : 'link'
|
|
131
|
+
}), title, /*#__PURE__*/React__default['default'].createElement(icons.DownOutlined, {
|
|
132
|
+
style: {
|
|
133
|
+
marginInlineStart: 2
|
|
134
|
+
}
|
|
135
|
+
}));
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
if (type === 'group') {
|
|
139
|
+
return /*#__PURE__*/React__default['default'].createElement(Button.ButtonGroup, null, /*#__PURE__*/React__default['default'].createElement(Button__default['default'], {
|
|
140
|
+
onClick: onButtonClick
|
|
141
|
+
}, title), /*#__PURE__*/React__default['default'].createElement(Button__default['default'], Object.assign({
|
|
142
|
+
className: classname.cx(prefixCls + "__icon", prefixCls + "__icon-btn-wrap")
|
|
143
|
+
}, getTriggerProps()), /*#__PURE__*/React__default['default'].createElement(icons.DownOutlined, null)));
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
return null;
|
|
147
|
+
};
|
|
148
|
+
|
|
118
149
|
return /*#__PURE__*/React__default['default'].createElement(context.DropDownProvider, {
|
|
119
150
|
value: providedValue
|
|
120
151
|
}, /*#__PURE__*/React__default['default'].createElement("div", Object.assign({
|
|
121
152
|
ref: ref,
|
|
122
153
|
role: role,
|
|
123
154
|
className: cls
|
|
124
|
-
}, rootProps),
|
|
125
|
-
|
|
126
|
-
}), title, /*#__PURE__*/React__default['default'].createElement(icons.DownOutlined, {
|
|
127
|
-
style: {
|
|
128
|
-
marginInlineStart: 2
|
|
129
|
-
}
|
|
130
|
-
})) : null, type === 'group' ? /*#__PURE__*/React__default['default'].createElement(Button.ButtonGroup, null, /*#__PURE__*/React__default['default'].createElement(Button__default['default'], {
|
|
131
|
-
onClick: onButtonClick
|
|
132
|
-
}, title), /*#__PURE__*/React__default['default'].createElement(Button__default['default'], Object.assign({
|
|
133
|
-
className: classname.cx(prefixCls + "__icon", prefixCls + "__icon-btn-wrap")
|
|
134
|
-
}, getTriggerProps()), /*#__PURE__*/React__default['default'].createElement(icons.DownOutlined, null))) : null, typeAssertion.isArrayNonEmpty(data) ? /*#__PURE__*/React__default['default'].createElement(DropdownMenu, Object.assign({}, getMenuProps({
|
|
135
|
-
popper: {
|
|
155
|
+
}, rootProps), renderButton(), typeAssertion.isArrayNonEmpty(data) ? /*#__PURE__*/React__default['default'].createElement(DropdownMenu, Object.assign({}, getMenuProps({
|
|
156
|
+
overlay: {
|
|
136
157
|
disabledPortal: false,
|
|
137
158
|
className: overlayClassName
|
|
138
159
|
}
|
|
@@ -143,51 +164,22 @@ if (env.__DEV__) {
|
|
|
143
164
|
Dropdown.displayName = 'Dropdown';
|
|
144
165
|
}
|
|
145
166
|
|
|
146
|
-
var dropdownButtonPrefix = classname.getPrefixCls('dropdown-button');
|
|
147
|
-
/**
|
|
148
|
-
* TODO: What is DropdownButton
|
|
149
|
-
*/
|
|
150
|
-
|
|
151
|
-
var DropdownButton = /*#__PURE__*/React.forwardRef(function (_a, ref) {
|
|
152
|
-
var _a$prefixCls2 = _a.prefixCls,
|
|
153
|
-
prefixCls = _a$prefixCls2 === void 0 ? dropdownButtonPrefix : _a$prefixCls2,
|
|
154
|
-
_a$role2 = _a.role,
|
|
155
|
-
role = _a$role2 === void 0 ? _role : _a$role2,
|
|
156
|
-
className = _a.className,
|
|
157
|
-
children = _a.children,
|
|
158
|
-
rest = tslib.__rest(_a, ["prefixCls", "role", "className", "children"]);
|
|
159
|
-
|
|
160
|
-
var _useDropDownContext = context.useDropDownContext(),
|
|
161
|
-
getTriggerProps = _useDropDownContext.getTriggerProps;
|
|
162
|
-
|
|
163
|
-
var triggerProps = getTriggerProps();
|
|
164
|
-
var cls = classname.cx(prefixCls, className);
|
|
165
|
-
return /*#__PURE__*/React__default['default'].createElement("div", Object.assign({
|
|
166
|
-
role: role,
|
|
167
|
-
className: cls
|
|
168
|
-
}, rest, triggerProps), children);
|
|
169
|
-
});
|
|
170
|
-
|
|
171
|
-
if (env.__DEV__) {
|
|
172
|
-
DropdownButton.displayName = 'DropdownButton';
|
|
173
|
-
}
|
|
174
|
-
|
|
175
167
|
var dropdownMenuPrefix = classname.getPrefixCls('dropdown-menu');
|
|
176
168
|
/**
|
|
177
169
|
* TODO: What is DropdownMenu
|
|
178
170
|
*/
|
|
179
171
|
|
|
180
172
|
var DropdownMenu = /*#__PURE__*/React.forwardRef(function (_a, ref) {
|
|
181
|
-
var _a$
|
|
182
|
-
prefixCls = _a$
|
|
183
|
-
|
|
173
|
+
var _a$prefixCls2 = _a.prefixCls,
|
|
174
|
+
prefixCls = _a$prefixCls2 === void 0 ? dropdownMenuPrefix : _a$prefixCls2,
|
|
175
|
+
overlay = _a.overlay,
|
|
184
176
|
parents = _a.parents,
|
|
185
177
|
className = _a.className,
|
|
186
178
|
children = _a.children,
|
|
187
|
-
rest = tslib.__rest(_a, ["prefixCls", "role", "
|
|
179
|
+
rest = tslib.__rest(_a, ["prefixCls", "role", "overlay", "parents", "className", "children"]);
|
|
188
180
|
|
|
189
181
|
var cls = classname.cx(prefixCls, className);
|
|
190
|
-
return /*#__PURE__*/React__default['default'].createElement(popper.PopperPortal, Object.assign({},
|
|
182
|
+
return /*#__PURE__*/React__default['default'].createElement(popper.PopperPortal, Object.assign({}, overlay), /*#__PURE__*/React__default['default'].createElement("ul", Object.assign({
|
|
191
183
|
ref: ref,
|
|
192
184
|
className: cls
|
|
193
185
|
}, rest), children ? React__default['default'].Children.map(children, function (child) {
|
|
@@ -207,8 +199,8 @@ var dropdownMenuItemPrefix = classname.getPrefixCls('dropdown-menu-item');
|
|
|
207
199
|
*/
|
|
208
200
|
|
|
209
201
|
var DropdownMenuItem = /*#__PURE__*/React.forwardRef(function (_a, ref) {
|
|
210
|
-
var _a$
|
|
211
|
-
prefixCls = _a$
|
|
202
|
+
var _a$prefixCls3 = _a.prefixCls,
|
|
203
|
+
prefixCls = _a$prefixCls3 === void 0 ? dropdownMenuItemPrefix : _a$prefixCls3,
|
|
212
204
|
className = _a.className,
|
|
213
205
|
children = _a.children,
|
|
214
206
|
href = _a.href,
|
|
@@ -218,12 +210,12 @@ var DropdownMenuItem = /*#__PURE__*/React.forwardRef(function (_a, ref) {
|
|
|
218
210
|
menu = _a.menu,
|
|
219
211
|
rest = tslib.__rest(_a, ["prefixCls", "role", "className", "children", "href", "value", "target", "disabled", "parents", "menu"]);
|
|
220
212
|
|
|
221
|
-
var
|
|
222
|
-
triggerMethods =
|
|
223
|
-
width =
|
|
213
|
+
var _useDropDownContext = context.useDropDownContext(),
|
|
214
|
+
triggerMethods = _useDropDownContext.triggerMethods,
|
|
215
|
+
width = _useDropDownContext.width;
|
|
224
216
|
|
|
225
217
|
var _useDropdown = useDropdown.useDropdown(Object.assign(Object.assign({
|
|
226
|
-
|
|
218
|
+
overlay: {
|
|
227
219
|
placement: 'right-start',
|
|
228
220
|
disabledPortal: true
|
|
229
221
|
},
|
|
@@ -232,11 +224,12 @@ var DropdownMenuItem = /*#__PURE__*/React.forwardRef(function (_a, ref) {
|
|
|
232
224
|
trigger: triggerMethods,
|
|
233
225
|
parents: parentsProp
|
|
234
226
|
})),
|
|
227
|
+
menuVisible = _useDropdown.menuVisible,
|
|
235
228
|
rootProps = _useDropdown.rootProps,
|
|
236
229
|
getTriggerProps = _useDropdown.getTriggerProps,
|
|
237
230
|
getMenuProps = _useDropdown.getMenuProps;
|
|
238
231
|
|
|
239
|
-
var cls = classname.cx(prefixCls, className);
|
|
232
|
+
var cls = classname.cx(prefixCls, className, menuVisible && prefixCls + "--active");
|
|
240
233
|
var shouldUseLink = href && !disabled;
|
|
241
234
|
return /*#__PURE__*/React__default['default'].createElement("li", Object.assign({
|
|
242
235
|
ref: ref,
|
|
@@ -247,7 +240,9 @@ var DropdownMenuItem = /*#__PURE__*/React.forwardRef(function (_a, ref) {
|
|
|
247
240
|
className: prefixCls + "__link",
|
|
248
241
|
href: href,
|
|
249
242
|
target: target
|
|
250
|
-
}, children) : children
|
|
243
|
+
}, children) : children, menu ? /*#__PURE__*/React__default['default'].createElement("span", {
|
|
244
|
+
className: prefixCls + "__arrow"
|
|
245
|
+
}, /*#__PURE__*/React__default['default'].createElement(icons.DownOutlined, null)) : null), menu ? /*#__PURE__*/React.cloneElement(menu, Object.assign({}, getMenuProps(menu.props))) : null);
|
|
251
246
|
});
|
|
252
247
|
|
|
253
248
|
if (env.__DEV__) {
|
package/lib/cjs/Dropdown.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Dropdown.js","sources":["../../src/Dropdown.tsx"],"sourcesContent":[null],"names":["_role","_prefix","getPrefixCls","DEFAULT_DATA","Dropdown","forwardRef","_a","ref","prefixCls","role","className","data","title","type","onClick","onButtonClick","overlayClassName","rest","_b","useDropdown","rootProps","providedValue","getMenuProps","getTriggerProps","disabled","menuVisibleAction","cls","cx","dig","treeData","map","item","menu","isArrayNonEmpty","
|
|
1
|
+
{"version":3,"file":"Dropdown.js","sources":["../../src/Dropdown.tsx"],"sourcesContent":[null],"names":["_role","_prefix","getPrefixCls","DEFAULT_DATA","Dropdown","forwardRef","_a","ref","prefixCls","role","className","triggerButton","children","data","title","type","onClick","onButtonClick","overlayClassName","rest","_b","useDropdown","rootProps","providedValue","getMenuProps","getTriggerProps","disabled","menuVisibleAction","cls","cx","dig","treeData","map","item","menu","isArrayNonEmpty","React","DropdownMenu","overlay","gutterGap","split","key","id","DropdownMenuItem","href","target","value","isArray","off","renderButton","cloneElement","props","Button","appearance","DownOutlined","style","marginInlineStart","ButtonGroup","DropDownProvider","disabledPortal","__DEV__","displayName","dropdownMenuPrefix","parents","PopperPortal","Children","child","dropdownMenuItemPrefix","parentsProp","useDropDownContext","triggerMethods","width","placement","trigger","menuVisible","shouldUseLink"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAYA,IAAMA,KAAK,GAAG,UAAd;;AACA,IAAMC,OAAO,GAAGC,sBAAAA,CAAaF,KAAbE,CAAhB;;AACA,IAAMC,YAAY,GAAG,EAArB;AAEA;;;;;;;;;IAQaC,QAAQ,gBAAGC,gBAAAA,CACtB,UACEC,EADF,EAcEC,GAdF;wBAEIC;MAAAA,sCAAYP;mBACZQ;MAAAA,4BAAOT;MACPU,eAAAA;MACUC,mBAAVC;mBACAC;MAAAA,4BAAOV;MACPW,WAAAA;mBACAC;MAAAA,4BAAO;MACPC,cAAAA;MACAC,mBAAAA;MACAC,sBAAAA;MACGC,wBAXL,YAAA,QAAA,aAAA,YAAA,QAAA,SAAA,QAAA,WAAA,iBAAA,oBAAA;;MAeMC,KAAkCC,uBAAAA,CAAYF,IAAZE;MAAhCC,SAAF,KAAA,CAAEA;MAAcC,aAAhB,oBAAA,YAAA;;MAEEC,YAAR,GAAuED,aAAvE,CAAQC;MAAcC,eAAtB,GAAuEF,aAAvE,CAAsBE;MAAiBC,QAAvC,GAAuEH,aAAvE,CAAuCG;MAAUC,iBAAjD,GAAuEJ,aAAvE,CAAiDI;MAE3CC,GAAG,GAAGC,YAAAA,CAAGrB,SAAHqB,EAAcnB,SAAdmB,EAAyBH,QAAQ,IAAOlB,SAAP,eAAjCqB;;MAENC,GAAG,GAAG,SAANA,GAAM,CAACC,QAAD;WACHA,QAAQ,CAACC,GAATD,CAAa,UAACE,IAAD;UACZC,IAAI,GAAGC,6BAAAA,CAAgBF,IAAI,CAACrB,QAArBuB,iBACXC,yBAAAA,cAAAA,CAACC,YAADD;AAAcE,QAAAA,OAAO,EAAE;AAAEC,UAAAA,SAAS,EAAE;AAAb;OAAvBH,EAA2CN,GAAG,CAACG,IAAI,CAACrB,QAAN,CAA9CwB,CADWD,GAET;;UAEAF,IAAI,CAACO,OAAO;4BACPJ,yBAAAA,cAAAA,KAAAA;AAAIK,UAAAA,GAAG,EAAER,IAAI,CAACS;AAAIhC,UAAAA,SAAS,EAAKF,SAAL;SAA3B4B;;;0BAIPA,yBAAAA,cAAAA,CAACO,gBAADP;AACEK,QAAAA,GAAG,EAAER,IAAI,CAACS;AACVhB,QAAAA,QAAQ,EAAEO,IAAI,CAACP;AACfkB,QAAAA,IAAI,EAAEX,IAAI,CAACW;AACXC,QAAAA,MAAM,EAAEZ,IAAI,CAACY;AACbC,QAAAA,KAAK,EAAEb,IAAI,CAACS;AACZR,QAAAA,IAAI,EAAEA;AACNlB,QAAAA,OAAO,EAAE,gBAAA;AACPA,UAAAA,QAAO,SAAPA,IAAAA,QAAO,WAAPA,SAAAA,GAAAA,QAAO,CAAGiB,IAAI,CAACS,EAAR,CAAP1B;;cACI,CAAC+B,qBAAAA,CAAQd,IAAI,CAACrB,QAAbmC,GAAwB;AAC3BpB,YAAAA,iBAAiB,CAACqB,GAAlBrB;;;OAVNS,EAcGH,IAAI,CAACnB,KAdRsB;AAVG,KAAAL;AADT;;MA+BMkB,YAAY,GAAG,SAAfA,YAAe;QACftC,eAAe;;0BAEVuC,kBAAAA,CAAavC,aAAbuC,EAA4BzB,eAAe,CAACd,aAAa,CAACwC,KAAf,EAAsBxC,aAAa,CAACJ,GAApC,CAA3C2C;;;QAGLnC,IAAI,KAAK,MAATA,IAAmBA,IAAI,KAAK,UAAU;0BAEtCqB,yBAAAA,cAAAA,CAACgB,0BAADhB,oBAAYX,eAAe;AAAI4B,QAAAA,UAAU,EAAEtC,IAAI,KAAK,QAATA,GAAoB,QAApBA,GAA+B;QAA1EqB,EACGtB,KADHsB,eAEEA,yBAAAA,cAAAA,CAACkB,kBAADlB;AAAcmB,QAAAA,KAAK,EAAE;AAAEC,UAAAA,iBAAiB,EAAE;AAArB;OAArBpB,CAFFA;;;QAOArB,IAAI,KAAK,SAAS;0BAElBqB,yBAAAA,cAAAA,CAACqB,kBAADrB,MAAAA,eACEA,yBAAAA,cAAAA,CAACgB,0BAADhB;AAAQpB,QAAAA,OAAO,EAAEC;OAAjBmB,EAAiCtB,KAAjCsB,CADFA,eAEEA,yBAAAA,cAAAA,CAACgB,0BAADhB;AACE1B,QAAAA,SAAS,EAAEmB,YAAAA,CAAMrB,SAAJ,WAAFqB,EAA4BrB,SAA1B,oBAAFqB;SACPJ,eAAe,GAFrBW,eAIEA,yBAAAA,cAAAA,CAACkB,kBAADlB,MAAAA,CAJFA,CAFFA;;;WAYG;AA7BT;;sBAiCEA,yBAAAA,cAAAA,CAACsB,wBAADtB;AAAkBU,IAAAA,KAAK,EAAEvB;GAAzBa,eACEA,yBAAAA,cAAAA,MAAAA;AAAK7B,IAAAA,GAAG,EAAEA;AAAKE,IAAAA,IAAI,EAAEA;AAAMC,IAAAA,SAAS,EAAEkB;KAASN,UAA/Cc,EACGa,YAAY,EADfb,EAGGD,6BAAAA,CAAgBtB,IAAhBsB,iBACCC,yBAAAA,cAAAA,CAACC,YAADD,oBACMZ,YAAY,CAAC;AAAEc,IAAAA,OAAO,EAAE;AAAEqB,MAAAA,cAAc,EAAE,KAAlB;AAAyBjD,MAAAA,SAAS,EAAEQ;AAApC;AAAX,GAAD,EADlBkB,EAGGN,GAAG,CAACjB,IAAD,CAHNuB,CADDD,GAMG,IATNC,CADFA;AAvF4B,CAAV/B;;AAoJxB,IAAIuD,WAAJ,EAAa;AACXxD,EAAAA,QAAQ,CAACyD,WAATzD,GAAuB,UAAvBA;;;AAGF,IAAM0D,kBAAkB,GAAG5D,sBAAAA,CAAa,eAAbA,CAA3B;AAEA;;;;AAGA,IAAMmC,YAAY,gBAAGhC,gBAAAA,CACnB,UACEC,EADF,EAUEC,GAVF;yBAEIC;MAAAA,uCAAYsD;MAEZxB,aAAAA;MACAyB,aAAAA;MACArD,eAAAA;MACAE,cAAAA;MACGO,wBAPL,YAAA,QAAA,WAAA,WAAA,aAAA,YAAA;;MAWMS,GAAG,GAAGC,YAAAA,CAAGrB,SAAHqB,EAAcnB,SAAdmB;sBAGVO,yBAAAA,cAAAA,CAAC4B,mBAAD5B,oBAAmBE,QAAnBF,eACEA,yBAAAA,cAAAA,KAAAA;AAAI7B,IAAAA,GAAG,EAAEA;AAAKG,IAAAA,SAAS,EAAEkB;KAAST,KAAlCiB,EACGxB,QAAQ,GACLwB,yBAAAA,CAAM6B,QAAN7B,CAAeJ,GAAfI,CAAmBxB,QAAnBwB,EAA6B,UAAC8B,KAAD;wBACpBhB,kBAAAA,CAAagB,KAAbhB,EAAoB;AACzBa,MAAAA,OAAO,EAAPA;AADyB,KAApBb;AADT,GAAAd,CADK,GAMLxB,QAPNwB,CADFA;AAhByB,CAAV/B,CAArB;;AA0CA,IAAIuD,WAAJ,EAAa;AACXvB,EAAAA,YAAY,CAACwB,WAAbxB,GAA2B,cAA3BA;;;AAGF,IAAM8B,sBAAsB,GAAGjE,sBAAAA,CAAa,oBAAbA,CAA/B;AAEA;;;;AAGA,IAAMyC,gBAAgB,gBAAGtC,gBAAAA,CACvB,UACEC,EADF,EAcEC,GAdF;yBAEIC;MAAAA,uCAAY2D;MAEZzD,eAAAA;MACAE,cAAAA;MACAgC,UAAAA;MAEAC,YAAAA;MACAnB,cAAAA;MACS0C,iBAATL;MACA7B,UAAAA;MACGf,wBAXL,YAAA,QAAA,aAAA,YAAA,QAAA,SAAA,UAAA,YAAA,WAAA,QAAA;;4BAekCkD,0BAAAA;MAA1BC,cAAR,uBAAQA;MAAgBC,KAAxB,uBAAwBA;;qBAE0ClD,uBAAAA;AAChEiB,IAAAA,OAAO,EAAE;AAAEkC,MAAAA,SAAS,EAAE,aAAb;AAA4Bb,MAAAA,cAAc,EAAE;AAA5C;AACTY,IAAAA,KAAK,EAALA;KACGpD;AACHsD,IAAAA,OAAO,EAAEH;AACTP,IAAAA,OAAO,EAAEK;IALuD/C;MAA1DqD,WAAR,gBAAQA;MAAapD,SAArB,gBAAqBA;MAAWG,eAAhC,gBAAgCA;MAAiBD,YAAjD,gBAAiDA;;MAQ3CI,GAAG,GAAGC,YAAAA,CAAGrB,SAAHqB,EAAcnB,SAAdmB,EAAyB6C,WAAW,IAAOlE,SAAP,aAApCqB;MACN8C,aAAa,GAAG/B,IAAI,IAAI,CAAClB;sBAG7BU,yBAAAA,cAAAA,KAAAA;AAAI7B,IAAAA,GAAG,EAAEA;AAAKG,IAAAA,SAAS,EAAEkB;KAASN,UAAlCc,eACEA,yBAAAA,cAAAA,MAAAA;AAAK1B,IAAAA,SAAS,EAAKF,SAAL;KAA+BiB,eAAe,GAA5DW,EACGuC,aAAa,gBACZvC,yBAAAA,cAAAA,IAAAA;AAAG1B,IAAAA,SAAS,EAAKF,SAAL;AAAwBoC,IAAAA,IAAI,EAAEA;AAAMC,IAAAA,MAAM,EAAEA;GAAxDT,EACGxB,QADHwB,CADY,GAKZxB,QANJwB,EAQGF,IAAI,gBACHE,yBAAAA,cAAAA,OAAAA;AAAM1B,IAAAA,SAAS,EAAKF,SAAL;GAAf4B,eACEA,yBAAAA,cAAAA,CAACkB,kBAADlB,MAAAA,CADFA,CADG,GAID,IAZNA,CADFA,EAeGF,IAAI,gBACDgB,kBAAAA,CAAahB,IAAbgB,oBACK1B,YAAY,CAACU,IAAI,CAACiB,KAAN,EADjBD,CADC,GAID,IAnBNd;AA/B6B,CAAV/B,CAAzB;;AAmFA,IAAIuD,WAAJ,EAAa;AACXjB,EAAAA,gBAAgB,CAACkB,WAAjBlB,GAA+B,kBAA/BA;;;"}
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
Object.defineProperty(exports, '__esModule', {
|
|
13
13
|
value: true
|
|
14
14
|
});
|
|
15
|
-
var css_248z = "@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n.hi-v4-dropdown-menu {\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n margin: 0;\n padding: 0;\n background-color: #fff;\n background-color: var(--hi-v4-color-static-white, #fff);\n border-radius: 4px;\n border-radius: var(--hi-v4-border-radius-normal, 4px);\n font-size: 0.875rem;\n font-size: var(--hi-v4-text-size-normal, 0.875rem);\n padding: 8px;\n padding: var(--hi-v4-spacing-4, 8px);\n color: #1f2733;\n color: var(--hi-v4-color-gray-700, #1f2733); }\n.hi-v4-dropdown-menu-item {\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n margin: 0;\n padding: 0;\n list-style: none;\n
|
|
15
|
+
var css_248z = "@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n.hi-v4-dropdown {\n display: inline-block; }\n.hi-v4-dropdown-menu {\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n margin: 0;\n padding: 0;\n background-color: #fff;\n background-color: var(--hi-v4-color-static-white, #fff);\n border-radius: 4px;\n border-radius: var(--hi-v4-border-radius-normal, 4px);\n font-size: 0.875rem;\n font-size: var(--hi-v4-text-size-normal, 0.875rem);\n padding: 8px;\n padding: var(--hi-v4-spacing-4, 8px);\n color: #1f2733;\n color: var(--hi-v4-color-gray-700, #1f2733);\n width: 180px;\n width: var(--hi-v4-dropdown-menu-width, 180px); }\n.hi-v4-dropdown-menu-item {\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n margin: 0;\n padding: 0;\n list-style: none;\n margin: 0;\n box-sizing: border-box;\n overflow: visible;\n padding: 4px 0;\n padding: var(--hi-v4-spacing-2, 4px) 0; }\n.hi-v4-dropdown-menu-item__link {\n color: #1f2733;\n color: var(--hi-v4-color-gray-700, #1f2733);\n width: 100%;\n text-decoration: none;\n -webkit-box-sizing: border-box;\n box-sizing: border-box; }\n.hi-v4-dropdown-menu-item__arrow {\n -webkit-transform: rotate(-90deg);\n transform: rotate(-90deg); }\n.hi-v4-dropdown-menu-item__trigger {\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n width: 100%;\n height: 100%;\n cursor: pointer;\n border-radius: 4px;\n border-radius: var(--hi-v4-border-radius-normal, 4px);\n padding: 8px 12px;\n padding: var(--hi-v4-spacing-4, 8px) var(--hi-v4-spacing-6, 12px);\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n -webkit-box-pack: justify;\n -ms-flex-pack: justify;\n justify-content: space-between; }\n.hi-v4-dropdown-menu-item__trigger:hover {\n background-color: #f2f4f7;\n background-color: var(--hi-v4-color-gray-100, #f2f4f7); }\n.hi-v4-dropdown-menu-item--active > .hi-v4-dropdown-menu-item__trigger {\n background-color: #f2f4f7;\n background-color: var(--hi-v4-color-gray-100, #f2f4f7); }\n.hi-v4-dropdown-divider {\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n margin: 0;\n padding: 0;\n list-style: none;\n background-color: #ebedf0;\n background-color: var(--hi-v4-color-gray-200, #ebedf0);\n width: 100%;\n height: 1px;\n margin: 8px 0;\n margin: var(--hi-v4-spacing-4, 8px) 0; }\n";
|
|
16
16
|
|
|
17
17
|
var __styleInject__ = require('style-inject/dist/style-inject.es.js')["default"];
|
|
18
18
|
|
package/lib/cjs/use-dropdown.js
CHANGED
|
@@ -33,6 +33,10 @@ var classname = require('@hi-ui/classname');
|
|
|
33
33
|
|
|
34
34
|
var reactUtils = require('@hi-ui/react-utils');
|
|
35
35
|
|
|
36
|
+
var domUtils = require('@hi-ui/dom-utils');
|
|
37
|
+
|
|
38
|
+
var typeAssertion = require('@hi-ui/type-assertion');
|
|
39
|
+
|
|
36
40
|
var NOOP_ARRAY = [];
|
|
37
41
|
|
|
38
42
|
var useDropdown = function useDropdown(props) {
|
|
@@ -43,8 +47,8 @@ var useDropdown = function useDropdown(props) {
|
|
|
43
47
|
_props$parents = props.parents,
|
|
44
48
|
parents = _props$parents === void 0 ? NOOP_ARRAY : _props$parents,
|
|
45
49
|
width = props.width,
|
|
46
|
-
|
|
47
|
-
rest = tslib.__rest(props, ["trigger", "disabled", "parents", "width", "
|
|
50
|
+
overlay = props.overlay,
|
|
51
|
+
rest = tslib.__rest(props, ["trigger", "disabled", "parents", "width", "overlay"]);
|
|
48
52
|
|
|
49
53
|
var triggerElementRef = React.useRef(null);
|
|
50
54
|
var popperElementRef = React.useRef(null);
|
|
@@ -102,41 +106,47 @@ var useDropdown = function useDropdown(props) {
|
|
|
102
106
|
hoveringRef.current = true;
|
|
103
107
|
startOpenTimer();
|
|
104
108
|
});
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
+
var getTriggerProps = React.useCallback(function (props, ref) {
|
|
110
|
+
if (props === void 0) {
|
|
111
|
+
props = {};
|
|
112
|
+
}
|
|
109
113
|
|
|
110
|
-
|
|
111
|
-
|
|
114
|
+
if (ref === void 0) {
|
|
115
|
+
ref = null;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
var triggerProps = {
|
|
119
|
+
ref: reactUtils.mergeRefs(triggerElementRef, ref),
|
|
120
|
+
disabled: disabled
|
|
121
|
+
};
|
|
122
|
+
/**
|
|
123
|
+
* 事件收集
|
|
124
|
+
* 'click' | 'contextmenu' | 'hover'
|
|
125
|
+
*/
|
|
126
|
+
|
|
127
|
+
triggerMethods.reduce(function (acc, cur) {
|
|
112
128
|
switch (cur) {
|
|
113
129
|
case types.TriggerActionEnum.HOVER:
|
|
114
|
-
acc.onMouseEnter = handlePopperEnter;
|
|
115
|
-
acc.onMouseLeave = handlePopperLeave;
|
|
130
|
+
acc.onMouseEnter = domUtils.mockDefaultHandlers(props.onMouseEnter, handlePopperEnter);
|
|
131
|
+
acc.onMouseLeave = domUtils.mockDefaultHandlers(props.onMouseLeave, handlePopperLeave);
|
|
116
132
|
break;
|
|
117
133
|
|
|
118
134
|
case types.TriggerActionEnum.CONTEXTMENU:
|
|
119
|
-
acc.onContextMenu = function (evt) {
|
|
135
|
+
acc.onContextMenu = domUtils.mockDefaultHandlers(props.onContextMenu, function (evt) {
|
|
120
136
|
evt.preventDefault();
|
|
121
137
|
menuVisibleAction.not();
|
|
122
|
-
};
|
|
123
|
-
|
|
138
|
+
});
|
|
124
139
|
break;
|
|
125
140
|
|
|
126
141
|
case types.TriggerActionEnum.CLICK:
|
|
127
|
-
acc.onClick = menuVisibleAction.not;
|
|
142
|
+
acc.onClick = domUtils.mockDefaultHandlers(props.onClick, menuVisibleAction.not);
|
|
128
143
|
break;
|
|
129
144
|
}
|
|
130
145
|
|
|
131
146
|
return acc;
|
|
132
|
-
},
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
return Object.assign({
|
|
136
|
-
ref: triggerElementRef,
|
|
137
|
-
disabled: disabled
|
|
138
|
-
}, eventHandler);
|
|
139
|
-
}, [eventHandler, disabled]);
|
|
147
|
+
}, triggerProps);
|
|
148
|
+
return triggerProps;
|
|
149
|
+
}, [disabled, triggerMethods, menuVisibleAction, handlePopperEnter, handlePopperLeave]);
|
|
140
150
|
var rootProps = rest;
|
|
141
151
|
var getMenuProps = useLatest.useLatestCallback(function (props, ref) {
|
|
142
152
|
var _Object$assign;
|
|
@@ -153,8 +163,8 @@ var useDropdown = function useDropdown(props) {
|
|
|
153
163
|
var menuProps = Object.assign(Object.assign({}, props), {
|
|
154
164
|
ref: reactUtils.mergeRefs(popperElementRef, ref),
|
|
155
165
|
parents: menuParents,
|
|
156
|
-
style: Object.assign(Object.assign({}, props.style), (_Object$assign = {}, _Object$assign[classname.getPrefixStyleVar('dropdown-menu-
|
|
157
|
-
|
|
166
|
+
style: Object.assign(Object.assign({}, props.style), (_Object$assign = {}, _Object$assign[classname.getPrefixStyleVar('dropdown-menu-width')] = typeAssertion.isNumeric(width) ? width + 'px' : width, _Object$assign)),
|
|
167
|
+
overlay: Object.assign(Object.assign(Object.assign({}, overlay), props.overlay), {
|
|
158
168
|
closeOnOutsideClick: true,
|
|
159
169
|
visible: menuVisible,
|
|
160
170
|
attachEl: triggerElementRef.current,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-dropdown.js","sources":["../../src/use-dropdown.tsx"],"sourcesContent":[null],"names":["NOOP_ARRAY","useDropdown","props","trigger","triggerProp","TriggerActionEnum","HOVER","disabled","parents","width","
|
|
1
|
+
{"version":3,"file":"use-dropdown.js","sources":["../../src/use-dropdown.tsx"],"sourcesContent":[null],"names":["NOOP_ARRAY","useDropdown","props","trigger","triggerProp","TriggerActionEnum","HOVER","disabled","parents","width","overlay","rest","triggerElementRef","useRef","popperElementRef","normalizeTrigger","triggerMethods","useMemo","useUncontrolledToggle","defaultVisible","menuVisible","menuVisibleAction","hoveringRef","useTimeout","on","startOpenTimer","start","clearOpenTimer","clear","current","off","startCloseTimer","clearCloseTimer","clearToggleTimer","useCallback","useUnmountEffect","handlePopperLeave","useLatestCallback","evt","handlePopperEnter","getTriggerProps","ref","triggerProps","mergeRefs","reduce","acc","cur","onMouseEnter","mockDefaultHandlers","onMouseLeave","CONTEXTMENU","onContextMenu","preventDefault","not","CLICK","onClick","rootProps","getMenuProps","menuParents","concat","menuProps","style","getPrefixStyleVar","isNumeric","closeOnOutsideClick","visible","attachEl","onClose","includes"],"mappings":"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"}
|
package/lib/esm/Dropdown.js
CHANGED
|
@@ -23,7 +23,12 @@ var _prefix = getPrefixCls(_role);
|
|
|
23
23
|
|
|
24
24
|
var DEFAULT_DATA = [];
|
|
25
25
|
/**
|
|
26
|
-
*
|
|
26
|
+
* 下拉菜单
|
|
27
|
+
*
|
|
28
|
+
* TODO:
|
|
29
|
+
* 1. 支持自定义icon
|
|
30
|
+
* 2. 支持 titleRender
|
|
31
|
+
* 3. 支持 onClick 阻止默认行为关闭
|
|
27
32
|
*/
|
|
28
33
|
|
|
29
34
|
var Dropdown = /*#__PURE__*/forwardRef(function (_a, ref) {
|
|
@@ -32,6 +37,7 @@ var Dropdown = /*#__PURE__*/forwardRef(function (_a, ref) {
|
|
|
32
37
|
_a$role = _a.role,
|
|
33
38
|
role = _a$role === void 0 ? _role : _a$role,
|
|
34
39
|
className = _a.className,
|
|
40
|
+
triggerButton = _a.children,
|
|
35
41
|
_a$data = _a.data,
|
|
36
42
|
data = _a$data === void 0 ? DEFAULT_DATA : _a$data,
|
|
37
43
|
title = _a.title,
|
|
@@ -55,14 +61,12 @@ var Dropdown = /*#__PURE__*/forwardRef(function (_a, ref) {
|
|
|
55
61
|
var dig = function dig(treeData) {
|
|
56
62
|
return treeData.map(function (item) {
|
|
57
63
|
var menu = isArrayNonEmpty(item.children) ? /*#__PURE__*/React.createElement(DropdownMenu, {
|
|
58
|
-
|
|
64
|
+
overlay: {
|
|
59
65
|
gutterGap: 16
|
|
60
66
|
}
|
|
61
|
-
}, dig(item.children)) : null;
|
|
62
|
-
|
|
63
|
-
var shouldRenderDivider = item.title === '-';
|
|
67
|
+
}, dig(item.children)) : null;
|
|
64
68
|
|
|
65
|
-
if (
|
|
69
|
+
if (item.split) {
|
|
66
70
|
return /*#__PURE__*/React.createElement("li", {
|
|
67
71
|
key: item.id,
|
|
68
72
|
className: prefixCls + "-divider"
|
|
@@ -87,24 +91,41 @@ var Dropdown = /*#__PURE__*/forwardRef(function (_a, ref) {
|
|
|
87
91
|
});
|
|
88
92
|
};
|
|
89
93
|
|
|
94
|
+
var renderButton = function renderButton() {
|
|
95
|
+
if (triggerButton) {
|
|
96
|
+
// @ts-ignore
|
|
97
|
+
return /*#__PURE__*/cloneElement(triggerButton, getTriggerProps(triggerButton.props, triggerButton.ref));
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
if (type === 'text' || type === 'button') {
|
|
101
|
+
return /*#__PURE__*/React.createElement(Button, Object.assign({}, getTriggerProps(), {
|
|
102
|
+
appearance: type === 'button' ? 'filled' : 'link'
|
|
103
|
+
}), title, /*#__PURE__*/React.createElement(DownOutlined, {
|
|
104
|
+
style: {
|
|
105
|
+
marginInlineStart: 2
|
|
106
|
+
}
|
|
107
|
+
}));
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
if (type === 'group') {
|
|
111
|
+
return /*#__PURE__*/React.createElement(ButtonGroup, null, /*#__PURE__*/React.createElement(Button, {
|
|
112
|
+
onClick: onButtonClick
|
|
113
|
+
}, title), /*#__PURE__*/React.createElement(Button, Object.assign({
|
|
114
|
+
className: cx(prefixCls + "__icon", prefixCls + "__icon-btn-wrap")
|
|
115
|
+
}, getTriggerProps()), /*#__PURE__*/React.createElement(DownOutlined, null)));
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
return null;
|
|
119
|
+
};
|
|
120
|
+
|
|
90
121
|
return /*#__PURE__*/React.createElement(DropDownProvider, {
|
|
91
122
|
value: providedValue
|
|
92
123
|
}, /*#__PURE__*/React.createElement("div", Object.assign({
|
|
93
124
|
ref: ref,
|
|
94
125
|
role: role,
|
|
95
126
|
className: cls
|
|
96
|
-
}, rootProps),
|
|
97
|
-
|
|
98
|
-
}), title, /*#__PURE__*/React.createElement(DownOutlined, {
|
|
99
|
-
style: {
|
|
100
|
-
marginInlineStart: 2
|
|
101
|
-
}
|
|
102
|
-
})) : null, type === 'group' ? /*#__PURE__*/React.createElement(ButtonGroup, null, /*#__PURE__*/React.createElement(Button, {
|
|
103
|
-
onClick: onButtonClick
|
|
104
|
-
}, title), /*#__PURE__*/React.createElement(Button, Object.assign({
|
|
105
|
-
className: cx(prefixCls + "__icon", prefixCls + "__icon-btn-wrap")
|
|
106
|
-
}, getTriggerProps()), /*#__PURE__*/React.createElement(DownOutlined, null))) : null, isArrayNonEmpty(data) ? /*#__PURE__*/React.createElement(DropdownMenu, Object.assign({}, getMenuProps({
|
|
107
|
-
popper: {
|
|
127
|
+
}, rootProps), renderButton(), isArrayNonEmpty(data) ? /*#__PURE__*/React.createElement(DropdownMenu, Object.assign({}, getMenuProps({
|
|
128
|
+
overlay: {
|
|
108
129
|
disabledPortal: false,
|
|
109
130
|
className: overlayClassName
|
|
110
131
|
}
|
|
@@ -115,51 +136,22 @@ if (__DEV__) {
|
|
|
115
136
|
Dropdown.displayName = 'Dropdown';
|
|
116
137
|
}
|
|
117
138
|
|
|
118
|
-
var dropdownButtonPrefix = getPrefixCls('dropdown-button');
|
|
119
|
-
/**
|
|
120
|
-
* TODO: What is DropdownButton
|
|
121
|
-
*/
|
|
122
|
-
|
|
123
|
-
var DropdownButton = /*#__PURE__*/forwardRef(function (_a, ref) {
|
|
124
|
-
var _a$prefixCls2 = _a.prefixCls,
|
|
125
|
-
prefixCls = _a$prefixCls2 === void 0 ? dropdownButtonPrefix : _a$prefixCls2,
|
|
126
|
-
_a$role2 = _a.role,
|
|
127
|
-
role = _a$role2 === void 0 ? _role : _a$role2,
|
|
128
|
-
className = _a.className,
|
|
129
|
-
children = _a.children,
|
|
130
|
-
rest = __rest(_a, ["prefixCls", "role", "className", "children"]);
|
|
131
|
-
|
|
132
|
-
var _useDropDownContext = useDropDownContext(),
|
|
133
|
-
getTriggerProps = _useDropDownContext.getTriggerProps;
|
|
134
|
-
|
|
135
|
-
var triggerProps = getTriggerProps();
|
|
136
|
-
var cls = cx(prefixCls, className);
|
|
137
|
-
return /*#__PURE__*/React.createElement("div", Object.assign({
|
|
138
|
-
role: role,
|
|
139
|
-
className: cls
|
|
140
|
-
}, rest, triggerProps), children);
|
|
141
|
-
});
|
|
142
|
-
|
|
143
|
-
if (__DEV__) {
|
|
144
|
-
DropdownButton.displayName = 'DropdownButton';
|
|
145
|
-
}
|
|
146
|
-
|
|
147
139
|
var dropdownMenuPrefix = getPrefixCls('dropdown-menu');
|
|
148
140
|
/**
|
|
149
141
|
* TODO: What is DropdownMenu
|
|
150
142
|
*/
|
|
151
143
|
|
|
152
144
|
var DropdownMenu = /*#__PURE__*/forwardRef(function (_a, ref) {
|
|
153
|
-
var _a$
|
|
154
|
-
prefixCls = _a$
|
|
155
|
-
|
|
145
|
+
var _a$prefixCls2 = _a.prefixCls,
|
|
146
|
+
prefixCls = _a$prefixCls2 === void 0 ? dropdownMenuPrefix : _a$prefixCls2,
|
|
147
|
+
overlay = _a.overlay,
|
|
156
148
|
parents = _a.parents,
|
|
157
149
|
className = _a.className,
|
|
158
150
|
children = _a.children,
|
|
159
|
-
rest = __rest(_a, ["prefixCls", "role", "
|
|
151
|
+
rest = __rest(_a, ["prefixCls", "role", "overlay", "parents", "className", "children"]);
|
|
160
152
|
|
|
161
153
|
var cls = cx(prefixCls, className);
|
|
162
|
-
return /*#__PURE__*/React.createElement(PopperPortal, Object.assign({},
|
|
154
|
+
return /*#__PURE__*/React.createElement(PopperPortal, Object.assign({}, overlay), /*#__PURE__*/React.createElement("ul", Object.assign({
|
|
163
155
|
ref: ref,
|
|
164
156
|
className: cls
|
|
165
157
|
}, rest), children ? React.Children.map(children, function (child) {
|
|
@@ -179,8 +171,8 @@ var dropdownMenuItemPrefix = getPrefixCls('dropdown-menu-item');
|
|
|
179
171
|
*/
|
|
180
172
|
|
|
181
173
|
var DropdownMenuItem = /*#__PURE__*/forwardRef(function (_a, ref) {
|
|
182
|
-
var _a$
|
|
183
|
-
prefixCls = _a$
|
|
174
|
+
var _a$prefixCls3 = _a.prefixCls,
|
|
175
|
+
prefixCls = _a$prefixCls3 === void 0 ? dropdownMenuItemPrefix : _a$prefixCls3,
|
|
184
176
|
className = _a.className,
|
|
185
177
|
children = _a.children,
|
|
186
178
|
href = _a.href,
|
|
@@ -190,12 +182,12 @@ var DropdownMenuItem = /*#__PURE__*/forwardRef(function (_a, ref) {
|
|
|
190
182
|
menu = _a.menu,
|
|
191
183
|
rest = __rest(_a, ["prefixCls", "role", "className", "children", "href", "value", "target", "disabled", "parents", "menu"]);
|
|
192
184
|
|
|
193
|
-
var
|
|
194
|
-
triggerMethods =
|
|
195
|
-
width =
|
|
185
|
+
var _useDropDownContext = useDropDownContext(),
|
|
186
|
+
triggerMethods = _useDropDownContext.triggerMethods,
|
|
187
|
+
width = _useDropDownContext.width;
|
|
196
188
|
|
|
197
189
|
var _useDropdown = useDropdown(Object.assign(Object.assign({
|
|
198
|
-
|
|
190
|
+
overlay: {
|
|
199
191
|
placement: 'right-start',
|
|
200
192
|
disabledPortal: true
|
|
201
193
|
},
|
|
@@ -204,11 +196,12 @@ var DropdownMenuItem = /*#__PURE__*/forwardRef(function (_a, ref) {
|
|
|
204
196
|
trigger: triggerMethods,
|
|
205
197
|
parents: parentsProp
|
|
206
198
|
})),
|
|
199
|
+
menuVisible = _useDropdown.menuVisible,
|
|
207
200
|
rootProps = _useDropdown.rootProps,
|
|
208
201
|
getTriggerProps = _useDropdown.getTriggerProps,
|
|
209
202
|
getMenuProps = _useDropdown.getMenuProps;
|
|
210
203
|
|
|
211
|
-
var cls = cx(prefixCls, className);
|
|
204
|
+
var cls = cx(prefixCls, className, menuVisible && prefixCls + "--active");
|
|
212
205
|
var shouldUseLink = href && !disabled;
|
|
213
206
|
return /*#__PURE__*/React.createElement("li", Object.assign({
|
|
214
207
|
ref: ref,
|
|
@@ -219,7 +212,9 @@ var DropdownMenuItem = /*#__PURE__*/forwardRef(function (_a, ref) {
|
|
|
219
212
|
className: prefixCls + "__link",
|
|
220
213
|
href: href,
|
|
221
214
|
target: target
|
|
222
|
-
}, children) : children
|
|
215
|
+
}, children) : children, menu ? /*#__PURE__*/React.createElement("span", {
|
|
216
|
+
className: prefixCls + "__arrow"
|
|
217
|
+
}, /*#__PURE__*/React.createElement(DownOutlined, null)) : null), menu ? /*#__PURE__*/cloneElement(menu, Object.assign({}, getMenuProps(menu.props))) : null);
|
|
223
218
|
});
|
|
224
219
|
|
|
225
220
|
if (__DEV__) {
|
package/lib/esm/Dropdown.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Dropdown.js","sources":["../../src/Dropdown.tsx"],"sourcesContent":[null],"names":["_role","_prefix","getPrefixCls","DEFAULT_DATA","Dropdown","forwardRef","_a","ref","prefixCls","role","className","data","title","type","onClick","onButtonClick","overlayClassName","rest","_b","useDropdown","rootProps","providedValue","getMenuProps","getTriggerProps","disabled","menuVisibleAction","cls","cx","dig","treeData","map","item","menu","isArrayNonEmpty","
|
|
1
|
+
{"version":3,"file":"Dropdown.js","sources":["../../src/Dropdown.tsx"],"sourcesContent":[null],"names":["_role","_prefix","getPrefixCls","DEFAULT_DATA","Dropdown","forwardRef","_a","ref","prefixCls","role","className","triggerButton","children","data","title","type","onClick","onButtonClick","overlayClassName","rest","_b","useDropdown","rootProps","providedValue","getMenuProps","getTriggerProps","disabled","menuVisibleAction","cls","cx","dig","treeData","map","item","menu","isArrayNonEmpty","React","DropdownMenu","overlay","gutterGap","split","key","id","DropdownMenuItem","href","target","value","isArray","off","renderButton","cloneElement","props","Button","appearance","DownOutlined","style","marginInlineStart","ButtonGroup","DropDownProvider","disabledPortal","__DEV__","displayName","dropdownMenuPrefix","parents","PopperPortal","Children","child","dropdownMenuItemPrefix","parentsProp","useDropDownContext","triggerMethods","width","placement","trigger","menuVisible","shouldUseLink"],"mappings":";;;;;;;;;;;;;;;;;;;AAYA,IAAMA,KAAK,GAAG,UAAd;;AACA,IAAMC,OAAO,GAAGC,YAAY,CAACF,KAAD,CAA5B;;AACA,IAAMG,YAAY,GAAG,EAArB;AAEA;;;;;;;;;IAQaC,QAAQ,gBAAGC,UAAU,CAChC,UACEC,EADF,EAcEC,GAdF;wBAEIC;MAAAA,sCAAYP;mBACZQ;MAAAA,4BAAOT;MACPU,eAAAA;MACUC,mBAAVC;mBACAC;MAAAA,4BAAOV;MACPW,WAAAA;mBACAC;MAAAA,4BAAO;MACPC,cAAAA;MACAC,mBAAAA;MACAC,sBAAAA;MACGC,kBAXL,YAAA,QAAA,aAAA,YAAA,QAAA,SAAA,QAAA,WAAA,iBAAA,oBAAA;;MAeMC,KAAkCC,WAAW,CAACF,IAAD;MAA3CG,SAAF,KAAA,CAAEA;MAAcC,aAAhB,cAAA,YAAA;;MAEEC,YAAR,GAAuED,aAAvE,CAAQC;MAAcC,eAAtB,GAAuEF,aAAvE,CAAsBE;MAAiBC,QAAvC,GAAuEH,aAAvE,CAAuCG;MAAUC,iBAAjD,GAAuEJ,aAAvE,CAAiDI;MAE3CC,GAAG,GAAGC,EAAE,CAACrB,SAAD,EAAYE,SAAZ,EAAuBgB,QAAQ,IAAOlB,SAAP,eAA/B;;MAERsB,GAAG,GAAG,SAANA,GAAM,CAACC,QAAD;WACHA,QAAQ,CAACC,GAATD,CAAa,UAACE,IAAD;UACZC,IAAI,GAAGC,eAAe,CAACF,IAAI,CAACrB,QAAN,CAAfuB,gBACXC,mBAAAA,CAACC,YAADD;AAAcE,QAAAA,OAAO,EAAE;AAAEC,UAAAA,SAAS,EAAE;AAAb;OAAvBH,EAA2CN,GAAG,CAACG,IAAI,CAACrB,QAAN,CAA9CwB,CADWD,GAET;;UAEAF,IAAI,CAACO,OAAO;4BACPJ,mBAAAA,KAAAA;AAAIK,UAAAA,GAAG,EAAER,IAAI,CAACS;AAAIhC,UAAAA,SAAS,EAAKF,SAAL;SAA3B4B;;;0BAIPA,mBAAAA,CAACO,gBAADP;AACEK,QAAAA,GAAG,EAAER,IAAI,CAACS;AACVhB,QAAAA,QAAQ,EAAEO,IAAI,CAACP;AACfkB,QAAAA,IAAI,EAAEX,IAAI,CAACW;AACXC,QAAAA,MAAM,EAAEZ,IAAI,CAACY;AACbC,QAAAA,KAAK,EAAEb,IAAI,CAACS;AACZR,QAAAA,IAAI,EAAEA;AACNlB,QAAAA,OAAO,EAAE,gBAAA;AACPA,UAAAA,QAAO,SAAPA,IAAAA,QAAO,WAAPA,SAAAA,GAAAA,QAAO,CAAGiB,IAAI,CAACS,EAAR,CAAP1B;;cACI,CAAC+B,OAAO,CAACd,IAAI,CAACrB,QAAN,GAAiB;AAC3Be,YAAAA,iBAAiB,CAACqB,GAAlBrB;;;OAVNS,EAcGH,IAAI,CAACnB,KAdRsB;AAVG,KAAAL;AADT;;MA+BMkB,YAAY,GAAG,SAAfA,YAAe;QACftC,eAAe;;0BAEVuC,YAAY,CAACvC,aAAD,EAAgBc,eAAe,CAACd,aAAa,CAACwC,KAAf,EAAsBxC,aAAa,CAACJ,GAApC,CAA/B;;;QAGjBQ,IAAI,KAAK,MAATA,IAAmBA,IAAI,KAAK,UAAU;0BAEtCqB,mBAAAA,CAACgB,MAADhB,oBAAYX,eAAe;AAAI4B,QAAAA,UAAU,EAAEtC,IAAI,KAAK,QAATA,GAAoB,QAApBA,GAA+B;QAA1EqB,EACGtB,KADHsB,eAEEA,mBAAAA,CAACkB,YAADlB;AAAcmB,QAAAA,KAAK,EAAE;AAAEC,UAAAA,iBAAiB,EAAE;AAArB;OAArBpB,CAFFA;;;QAOArB,IAAI,KAAK,SAAS;0BAElBqB,mBAAAA,CAACqB,WAADrB,MAAAA,eACEA,mBAAAA,CAACgB,MAADhB;AAAQpB,QAAAA,OAAO,EAAEC;OAAjBmB,EAAiCtB,KAAjCsB,CADFA,eAEEA,mBAAAA,CAACgB,MAADhB;AACE1B,QAAAA,SAAS,EAAEmB,EAAE,CAAIrB,SAAJ,WAAA,EAA0BA,SAA1B,oBAAA;SACTiB,eAAe,GAFrBW,eAIEA,mBAAAA,CAACkB,YAADlB,MAAAA,CAJFA,CAFFA;;;WAYG;AA7BT;;sBAiCEA,mBAAAA,CAACsB,gBAADtB;AAAkBU,IAAAA,KAAK,EAAEvB;GAAzBa,eACEA,mBAAAA,MAAAA;AAAK7B,IAAAA,GAAG,EAAEA;AAAKE,IAAAA,IAAI,EAAEA;AAAMC,IAAAA,SAAS,EAAEkB;KAASN,UAA/Cc,EACGa,YAAY,EADfb,EAGGD,eAAe,CAACtB,IAAD,CAAfsB,gBACCC,mBAAAA,CAACC,YAADD,oBACMZ,YAAY,CAAC;AAAEc,IAAAA,OAAO,EAAE;AAAEqB,MAAAA,cAAc,EAAE,KAAlB;AAAyBjD,MAAAA,SAAS,EAAEQ;AAApC;AAAX,GAAD,EADlBkB,EAGGN,GAAG,CAACjB,IAAD,CAHNuB,CADDD,GAMG,IATNC,CADFA;AAvF4B,CAAA;;AAoJlC,IAAIwB,OAAJ,EAAa;AACXxD,EAAAA,QAAQ,CAACyD,WAATzD,GAAuB,UAAvBA;;;AAGF,IAAM0D,kBAAkB,GAAG5D,YAAY,CAAC,eAAD,CAAvC;AAEA;;;;AAGA,IAAMmC,YAAY,gBAAGhC,UAAU,CAC7B,UACEC,EADF,EAUEC,GAVF;yBAEIC;MAAAA,uCAAYsD;MAEZxB,aAAAA;MACAyB,aAAAA;MACArD,eAAAA;MACAE,cAAAA;MACGO,kBAPL,YAAA,QAAA,WAAA,WAAA,aAAA,YAAA;;MAWMS,GAAG,GAAGC,EAAE,CAACrB,SAAD,EAAYE,SAAZ;sBAGZ0B,mBAAAA,CAAC4B,YAAD5B,oBAAmBE,QAAnBF,eACEA,mBAAAA,KAAAA;AAAI7B,IAAAA,GAAG,EAAEA;AAAKG,IAAAA,SAAS,EAAEkB;KAAST,KAAlCiB,EACGxB,QAAQ,GACLwB,KAAK,CAAC6B,QAAN7B,CAAeJ,GAAfI,CAAmBxB,QAAnBwB,EAA6B,UAAC8B,KAAD;wBACpBhB,YAAY,CAACgB,KAAD,EAAQ;AACzBH,MAAAA,OAAO,EAAPA;AADyB,KAAR;AADrB,GAAA3B,CADK,GAMLxB,QAPNwB,CADFA;AAhByB,CAAA,CAA/B;;AA0CA,IAAIwB,OAAJ,EAAa;AACXvB,EAAAA,YAAY,CAACwB,WAAbxB,GAA2B,cAA3BA;;;AAGF,IAAM8B,sBAAsB,GAAGjE,YAAY,CAAC,oBAAD,CAA3C;AAEA;;;;AAGA,IAAMyC,gBAAgB,gBAAGtC,UAAU,CACjC,UACEC,EADF,EAcEC,GAdF;yBAEIC;MAAAA,uCAAY2D;MAEZzD,eAAAA;MACAE,cAAAA;MACAgC,UAAAA;MAEAC,YAAAA;MACAnB,cAAAA;MACS0C,iBAATL;MACA7B,UAAAA;MACGf,kBAXL,YAAA,QAAA,aAAA,YAAA,QAAA,SAAA,UAAA,YAAA,WAAA,QAAA;;4BAekCkD,kBAAkB;MAA5CC,cAAR,uBAAQA;MAAgBC,KAAxB,uBAAwBA;;qBAE0ClD,WAAW;AAC3EiB,IAAAA,OAAO,EAAE;AAAEkC,MAAAA,SAAS,EAAE,aAAb;AAA4Bb,MAAAA,cAAc,EAAE;AAA5C;AACTY,IAAAA,KAAK,EAALA;KACGpD;AACHsD,IAAAA,OAAO,EAAEH;AACTP,IAAAA,OAAO,EAAEK;IALkE;MAArEM,WAAR,gBAAQA;MAAapD,SAArB,gBAAqBA;MAAWG,eAAhC,gBAAgCA;MAAiBD,YAAjD,gBAAiDA;;MAQ3CI,GAAG,GAAGC,EAAE,CAACrB,SAAD,EAAYE,SAAZ,EAAuBgE,WAAW,IAAOlE,SAAP,aAAlC;MACRmE,aAAa,GAAG/B,IAAI,IAAI,CAAClB;sBAG7BU,mBAAAA,KAAAA;AAAI7B,IAAAA,GAAG,EAAEA;AAAKG,IAAAA,SAAS,EAAEkB;KAASN,UAAlCc,eACEA,mBAAAA,MAAAA;AAAK1B,IAAAA,SAAS,EAAKF,SAAL;KAA+BiB,eAAe,GAA5DW,EACGuC,aAAa,gBACZvC,mBAAAA,IAAAA;AAAG1B,IAAAA,SAAS,EAAKF,SAAL;AAAwBoC,IAAAA,IAAI,EAAEA;AAAMC,IAAAA,MAAM,EAAEA;GAAxDT,EACGxB,QADHwB,CADY,GAKZxB,QANJwB,EAQGF,IAAI,gBACHE,mBAAAA,OAAAA;AAAM1B,IAAAA,SAAS,EAAKF,SAAL;GAAf4B,eACEA,mBAAAA,CAACkB,YAADlB,MAAAA,CADFA,CADG,GAID,IAZNA,CADFA,EAeGF,IAAI,gBACDgB,YAAY,CAAChB,IAAD,oBACPV,YAAY,CAACU,IAAI,CAACiB,KAAN,EADL,CADX,GAID,IAnBNf;AA/B6B,CAAA,CAAnC;;AAmFA,IAAIwB,OAAJ,EAAa;AACXjB,EAAAA,gBAAgB,CAACkB,WAAjBlB,GAA+B,kBAA/BA;;;"}
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* This source code is licensed under the MIT license found in the
|
|
8
8
|
* LICENSE file in the root directory of this source tree.
|
|
9
9
|
*/
|
|
10
|
-
var css_248z = "@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n.hi-v4-dropdown-menu {\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n margin: 0;\n padding: 0;\n background-color: #fff;\n background-color: var(--hi-v4-color-static-white, #fff);\n border-radius: 4px;\n border-radius: var(--hi-v4-border-radius-normal, 4px);\n font-size: 0.875rem;\n font-size: var(--hi-v4-text-size-normal, 0.875rem);\n padding: 8px;\n padding: var(--hi-v4-spacing-4, 8px);\n color: #1f2733;\n color: var(--hi-v4-color-gray-700, #1f2733); }\n.hi-v4-dropdown-menu-item {\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n margin: 0;\n padding: 0;\n list-style: none;\n
|
|
10
|
+
var css_248z = "@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n.hi-v4-dropdown {\n display: inline-block; }\n.hi-v4-dropdown-menu {\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n margin: 0;\n padding: 0;\n background-color: #fff;\n background-color: var(--hi-v4-color-static-white, #fff);\n border-radius: 4px;\n border-radius: var(--hi-v4-border-radius-normal, 4px);\n font-size: 0.875rem;\n font-size: var(--hi-v4-text-size-normal, 0.875rem);\n padding: 8px;\n padding: var(--hi-v4-spacing-4, 8px);\n color: #1f2733;\n color: var(--hi-v4-color-gray-700, #1f2733);\n width: 180px;\n width: var(--hi-v4-dropdown-menu-width, 180px); }\n.hi-v4-dropdown-menu-item {\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n margin: 0;\n padding: 0;\n list-style: none;\n margin: 0;\n box-sizing: border-box;\n overflow: visible;\n padding: 4px 0;\n padding: var(--hi-v4-spacing-2, 4px) 0; }\n.hi-v4-dropdown-menu-item__link {\n color: #1f2733;\n color: var(--hi-v4-color-gray-700, #1f2733);\n width: 100%;\n text-decoration: none;\n -webkit-box-sizing: border-box;\n box-sizing: border-box; }\n.hi-v4-dropdown-menu-item__arrow {\n -webkit-transform: rotate(-90deg);\n transform: rotate(-90deg); }\n.hi-v4-dropdown-menu-item__trigger {\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n width: 100%;\n height: 100%;\n cursor: pointer;\n border-radius: 4px;\n border-radius: var(--hi-v4-border-radius-normal, 4px);\n padding: 8px 12px;\n padding: var(--hi-v4-spacing-4, 8px) var(--hi-v4-spacing-6, 12px);\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n -webkit-box-pack: justify;\n -ms-flex-pack: justify;\n justify-content: space-between; }\n.hi-v4-dropdown-menu-item__trigger:hover {\n background-color: #f2f4f7;\n background-color: var(--hi-v4-color-gray-100, #f2f4f7); }\n.hi-v4-dropdown-menu-item--active > .hi-v4-dropdown-menu-item__trigger {\n background-color: #f2f4f7;\n background-color: var(--hi-v4-color-gray-100, #f2f4f7); }\n.hi-v4-dropdown-divider {\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n margin: 0;\n padding: 0;\n list-style: none;\n background-color: #ebedf0;\n background-color: var(--hi-v4-color-gray-200, #ebedf0);\n width: 100%;\n height: 1px;\n margin: 8px 0;\n margin: var(--hi-v4-spacing-4, 8px) 0; }\n";
|
|
11
11
|
|
|
12
12
|
var __styleInject__ = require('style-inject/dist/style-inject.es.js')["default"];
|
|
13
13
|
|
package/lib/esm/use-dropdown.js
CHANGED
|
@@ -17,6 +17,8 @@ import { useTimeout } from '@hi-ui/use-timeout';
|
|
|
17
17
|
import { useUnmountEffect } from '@hi-ui/use-unmount-effect';
|
|
18
18
|
import { getPrefixStyleVar } from '@hi-ui/classname';
|
|
19
19
|
import { mergeRefs } from '@hi-ui/react-utils';
|
|
20
|
+
import { mockDefaultHandlers } from '@hi-ui/dom-utils';
|
|
21
|
+
import { isNumeric } from '@hi-ui/type-assertion';
|
|
20
22
|
var NOOP_ARRAY = [];
|
|
21
23
|
|
|
22
24
|
var useDropdown = function useDropdown(props) {
|
|
@@ -27,8 +29,8 @@ var useDropdown = function useDropdown(props) {
|
|
|
27
29
|
_props$parents = props.parents,
|
|
28
30
|
parents = _props$parents === void 0 ? NOOP_ARRAY : _props$parents,
|
|
29
31
|
width = props.width,
|
|
30
|
-
|
|
31
|
-
rest = __rest(props, ["trigger", "disabled", "parents", "width", "
|
|
32
|
+
overlay = props.overlay,
|
|
33
|
+
rest = __rest(props, ["trigger", "disabled", "parents", "width", "overlay"]);
|
|
32
34
|
|
|
33
35
|
var triggerElementRef = useRef(null);
|
|
34
36
|
var popperElementRef = useRef(null);
|
|
@@ -86,41 +88,47 @@ var useDropdown = function useDropdown(props) {
|
|
|
86
88
|
hoveringRef.current = true;
|
|
87
89
|
startOpenTimer();
|
|
88
90
|
});
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
91
|
+
var getTriggerProps = useCallback(function (props, ref) {
|
|
92
|
+
if (props === void 0) {
|
|
93
|
+
props = {};
|
|
94
|
+
}
|
|
93
95
|
|
|
94
|
-
|
|
95
|
-
|
|
96
|
+
if (ref === void 0) {
|
|
97
|
+
ref = null;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
var triggerProps = {
|
|
101
|
+
ref: mergeRefs(triggerElementRef, ref),
|
|
102
|
+
disabled: disabled
|
|
103
|
+
};
|
|
104
|
+
/**
|
|
105
|
+
* 事件收集
|
|
106
|
+
* 'click' | 'contextmenu' | 'hover'
|
|
107
|
+
*/
|
|
108
|
+
|
|
109
|
+
triggerMethods.reduce(function (acc, cur) {
|
|
96
110
|
switch (cur) {
|
|
97
111
|
case TriggerActionEnum.HOVER:
|
|
98
|
-
acc.onMouseEnter = handlePopperEnter;
|
|
99
|
-
acc.onMouseLeave = handlePopperLeave;
|
|
112
|
+
acc.onMouseEnter = mockDefaultHandlers(props.onMouseEnter, handlePopperEnter);
|
|
113
|
+
acc.onMouseLeave = mockDefaultHandlers(props.onMouseLeave, handlePopperLeave);
|
|
100
114
|
break;
|
|
101
115
|
|
|
102
116
|
case TriggerActionEnum.CONTEXTMENU:
|
|
103
|
-
acc.onContextMenu = function (evt) {
|
|
117
|
+
acc.onContextMenu = mockDefaultHandlers(props.onContextMenu, function (evt) {
|
|
104
118
|
evt.preventDefault();
|
|
105
119
|
menuVisibleAction.not();
|
|
106
|
-
};
|
|
107
|
-
|
|
120
|
+
});
|
|
108
121
|
break;
|
|
109
122
|
|
|
110
123
|
case TriggerActionEnum.CLICK:
|
|
111
|
-
acc.onClick = menuVisibleAction.not;
|
|
124
|
+
acc.onClick = mockDefaultHandlers(props.onClick, menuVisibleAction.not);
|
|
112
125
|
break;
|
|
113
126
|
}
|
|
114
127
|
|
|
115
128
|
return acc;
|
|
116
|
-
},
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
return Object.assign({
|
|
120
|
-
ref: triggerElementRef,
|
|
121
|
-
disabled: disabled
|
|
122
|
-
}, eventHandler);
|
|
123
|
-
}, [eventHandler, disabled]);
|
|
129
|
+
}, triggerProps);
|
|
130
|
+
return triggerProps;
|
|
131
|
+
}, [disabled, triggerMethods, menuVisibleAction, handlePopperEnter, handlePopperLeave]);
|
|
124
132
|
var rootProps = rest;
|
|
125
133
|
var getMenuProps = useLatestCallback(function (props, ref) {
|
|
126
134
|
var _Object$assign;
|
|
@@ -137,8 +145,8 @@ var useDropdown = function useDropdown(props) {
|
|
|
137
145
|
var menuProps = Object.assign(Object.assign({}, props), {
|
|
138
146
|
ref: mergeRefs(popperElementRef, ref),
|
|
139
147
|
parents: menuParents,
|
|
140
|
-
style: Object.assign(Object.assign({}, props.style), (_Object$assign = {}, _Object$assign[getPrefixStyleVar('dropdown-menu-
|
|
141
|
-
|
|
148
|
+
style: Object.assign(Object.assign({}, props.style), (_Object$assign = {}, _Object$assign[getPrefixStyleVar('dropdown-menu-width')] = isNumeric(width) ? width + 'px' : width, _Object$assign)),
|
|
149
|
+
overlay: Object.assign(Object.assign(Object.assign({}, overlay), props.overlay), {
|
|
142
150
|
closeOnOutsideClick: true,
|
|
143
151
|
visible: menuVisible,
|
|
144
152
|
attachEl: triggerElementRef.current,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-dropdown.js","sources":["../../src/use-dropdown.tsx"],"sourcesContent":[null],"names":["NOOP_ARRAY","useDropdown","props","trigger","triggerProp","TriggerActionEnum","HOVER","disabled","parents","width","
|
|
1
|
+
{"version":3,"file":"use-dropdown.js","sources":["../../src/use-dropdown.tsx"],"sourcesContent":[null],"names":["NOOP_ARRAY","useDropdown","props","trigger","triggerProp","TriggerActionEnum","HOVER","disabled","parents","width","overlay","rest","triggerElementRef","useRef","popperElementRef","normalizeTrigger","triggerMethods","useMemo","useUncontrolledToggle","defaultVisible","menuVisible","menuVisibleAction","hoveringRef","useTimeout","on","startOpenTimer","start","clearOpenTimer","clear","current","off","startCloseTimer","clearCloseTimer","clearToggleTimer","useCallback","useUnmountEffect","handlePopperLeave","useLatestCallback","evt","handlePopperEnter","getTriggerProps","ref","triggerProps","mergeRefs","reduce","acc","cur","onMouseEnter","mockDefaultHandlers","onMouseLeave","CONTEXTMENU","onContextMenu","preventDefault","not","CLICK","onClick","rootProps","getMenuProps","menuParents","concat","menuProps","style","getPrefixStyleVar","isNumeric","closeOnOutsideClick","visible","attachEl","onClose","includes"],"mappings":"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"}
|
package/lib/types/Dropdown.d.ts
CHANGED
|
@@ -1,9 +1,15 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { HiBaseHTMLProps } from '@hi-ui/core';
|
|
3
|
+
import { PopperOverlayProps } from '@hi-ui/popper';
|
|
3
4
|
import { UseDropdownProps } from './use-dropdown';
|
|
4
5
|
import { DropdownDataItem } from './types';
|
|
5
6
|
/**
|
|
6
|
-
*
|
|
7
|
+
* 下拉菜单
|
|
8
|
+
*
|
|
9
|
+
* TODO:
|
|
10
|
+
* 1. 支持自定义icon
|
|
11
|
+
* 2. 支持 titleRender
|
|
12
|
+
* 3. 支持 onClick 阻止默认行为关闭
|
|
7
13
|
*/
|
|
8
14
|
export declare const Dropdown: React.ForwardRefExoticComponent<DropdownProps & React.RefAttributes<HTMLDivElement | null>>;
|
|
9
15
|
export interface DropdownProps extends Omit<HiBaseHTMLProps<'div'>, 'onClick'>, UseDropdownProps {
|
|
@@ -35,4 +41,17 @@ export interface DropdownProps extends Omit<HiBaseHTMLProps<'div'>, 'onClick'>,
|
|
|
35
41
|
* 下拉根元素的类名称
|
|
36
42
|
*/
|
|
37
43
|
overlayClassName?: string;
|
|
44
|
+
/**
|
|
45
|
+
* 自定义下拉菜单触发按钮
|
|
46
|
+
* 注意:自定义按钮需要支持 ref 获取元素 dom 引用 以及 trigger 对应的事件:
|
|
47
|
+
*
|
|
48
|
+
* hover: onMouseEnter \ onMouseLeave
|
|
49
|
+
* click: onClick
|
|
50
|
+
* contextmenu: onContextMenu
|
|
51
|
+
*/
|
|
52
|
+
children?: React.ReactNode;
|
|
53
|
+
/**
|
|
54
|
+
* 自定义控制 下拉 popper 行为
|
|
55
|
+
*/
|
|
56
|
+
overlay?: PopperOverlayProps;
|
|
38
57
|
}
|
package/lib/types/types.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { TriggerActionEnum } from './types';
|
|
3
|
-
import {
|
|
3
|
+
import { PopperOverlayProps } from '@hi-ui/popper';
|
|
4
4
|
export declare const useDropdown: (props: UseDropdownProps) => {
|
|
5
5
|
width: number | undefined;
|
|
6
6
|
rootProps: {};
|
|
@@ -14,7 +14,10 @@ export declare const useDropdown: (props: UseDropdownProps) => {
|
|
|
14
14
|
};
|
|
15
15
|
triggerElementRef: React.RefObject<HTMLElement>;
|
|
16
16
|
triggerMethods: TriggerActionEnum[];
|
|
17
|
-
getTriggerProps: () =>
|
|
17
|
+
getTriggerProps: (props?: any, ref?: any) => {
|
|
18
|
+
ref: ((value: HTMLElement | null) => void) | null;
|
|
19
|
+
disabled: boolean;
|
|
20
|
+
};
|
|
18
21
|
getMenuProps: (props?: any, ref?: any) => any;
|
|
19
22
|
};
|
|
20
23
|
export interface UseDropdownProps {
|
|
@@ -38,6 +41,6 @@ export interface UseDropdownProps {
|
|
|
38
41
|
/**
|
|
39
42
|
* 自定义控制 下拉 popper 行为
|
|
40
43
|
*/
|
|
41
|
-
|
|
44
|
+
overlay?: PopperOverlayProps;
|
|
42
45
|
}
|
|
43
46
|
export declare type UseDropdownReturn = ReturnType<typeof useDropdown>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hi-ui/dropdown",
|
|
3
|
-
"version": "4.0.0-alpha.
|
|
3
|
+
"version": "4.0.0-alpha.13",
|
|
4
4
|
"description": "A sub-package for @hi-ui/hiui.",
|
|
5
5
|
"keywords": [],
|
|
6
6
|
"author": "HIUI <mi-hiui@xiaomi.com>",
|
|
@@ -43,28 +43,29 @@
|
|
|
43
43
|
"url": "https://github.com/XiaoMi/hiui/issues"
|
|
44
44
|
},
|
|
45
45
|
"dependencies": {
|
|
46
|
-
"@hi-ui/button": "^4.0.0-alpha.
|
|
46
|
+
"@hi-ui/button": "^4.0.0-alpha.25",
|
|
47
47
|
"@hi-ui/classname": "^4.0.0-alpha.3",
|
|
48
|
-
"@hi-ui/core": "^4.0.0-alpha.
|
|
49
|
-
"@hi-ui/core-css": "^4.0.0-alpha.
|
|
50
|
-
"@hi-ui/
|
|
51
|
-
"@hi-ui/
|
|
52
|
-
"@hi-ui/
|
|
53
|
-
"@hi-ui/
|
|
54
|
-
"@hi-ui/
|
|
55
|
-
"@hi-ui/
|
|
56
|
-
"@hi-ui/use-
|
|
57
|
-
"@hi-ui/use-
|
|
58
|
-
"@hi-ui/use-
|
|
48
|
+
"@hi-ui/core": "^4.0.0-alpha.20",
|
|
49
|
+
"@hi-ui/core-css": "^4.0.0-alpha.14",
|
|
50
|
+
"@hi-ui/dom-utils": "^4.0.0-alpha.7",
|
|
51
|
+
"@hi-ui/env": "^4.0.0-alpha.6",
|
|
52
|
+
"@hi-ui/icons": "^4.0.0-alpha.29",
|
|
53
|
+
"@hi-ui/popper": "^4.0.0-alpha.25",
|
|
54
|
+
"@hi-ui/react-utils": "^4.0.0-alpha.8",
|
|
55
|
+
"@hi-ui/type-assertion": "^4.0.0-alpha.14",
|
|
56
|
+
"@hi-ui/use-latest": "^4.0.0-alpha.5",
|
|
57
|
+
"@hi-ui/use-timeout": "^4.0.0-alpha.5",
|
|
58
|
+
"@hi-ui/use-toggle": "^4.0.0-alpha.12",
|
|
59
|
+
"@hi-ui/use-unmount-effect": "^4.0.0-alpha.6"
|
|
59
60
|
},
|
|
60
61
|
"peerDependencies": {
|
|
61
|
-
"react": "
|
|
62
|
-
"react-dom": "
|
|
62
|
+
"react": ">=16.8.6",
|
|
63
|
+
"react-dom": ">=16.8.6"
|
|
63
64
|
},
|
|
64
65
|
"devDependencies": {
|
|
65
66
|
"@hi-ui/hi-build": "^4.0.0-alpha.4",
|
|
66
67
|
"react": "^17.0.1",
|
|
67
68
|
"react-dom": "^17.0.1"
|
|
68
69
|
},
|
|
69
|
-
"gitHead": "
|
|
70
|
+
"gitHead": "fa21b165e493ba58f5b1834d050e4af188b6d946"
|
|
70
71
|
}
|