@hi-ui/menu 5.0.0-experimental.1 → 5.0.0-experimental.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.
@@ -9,7 +9,8 @@
9
9
  */
10
10
  import { __rest } from 'tslib';
11
11
  import React, { forwardRef, useState, useRef, useLayoutEffect, useCallback, useEffect, useImperativeHandle } from 'react';
12
- import { useLocaleContext } from '@hi-ui/core';
12
+ import { useLocaleContext, useGlobalContext } from '@hi-ui/core';
13
+ import { useMergeSemantic } from '@hi-ui/use-merge-semantic';
13
14
  import { __DEV__ } from '@hi-ui/env';
14
15
  import { getPrefixCls, cx } from '@hi-ui/classname';
15
16
  import { ArrowUpOutlined, ArrowDownOutlined, SearchOutlined, CloseOutlined } from '@hi-ui/icons';
@@ -31,6 +32,8 @@ var MenuSearch = /*#__PURE__*/forwardRef(function (_a, ref) {
31
32
  _a$prefixCls = _a.prefixCls,
32
33
  prefixCls = _a$prefixCls === void 0 ? _prefix : _a$prefixCls,
33
34
  className = _a.className,
35
+ classNamesProp = _a.classNames,
36
+ stylesProp = _a.styles,
34
37
  placeholder = _a.placeholder,
35
38
  width = _a.width,
36
39
  style = _a.style,
@@ -43,9 +46,27 @@ var MenuSearch = /*#__PURE__*/forwardRef(function (_a, ref) {
43
46
  onSelect = _a.onSelect,
44
47
  onClear = _a.onClear,
45
48
  onClose = _a.onClose,
46
- onEsc = _a.onEsc;
47
- __rest(_a, ["innerRef", "prefixCls", "className", "clearText", "placeholder", "notFoundContent", "width", "style", "visible", "data", "defaultValue", "value", "onChange", "onSearch", "onSelect", "onClear", "onClose", "onEsc"]);
49
+ onEsc = _a.onEsc,
50
+ rest = __rest(_a, ["innerRef", "prefixCls", "className", "classNames", "styles", "clearText", "placeholder", "notFoundContent", "width", "style", "visible", "data", "defaultValue", "value", "onChange", "onSearch", "onSelect", "onClear", "onClose", "onEsc"]);
48
51
  var i18n = useLocaleContext();
52
+ var _useGlobalContext = useGlobalContext(),
53
+ menuSearchConfig = _useGlobalContext.menuSearch;
54
+ var _useMergeSemantic = useMergeSemantic({
55
+ classNamesList: [menuSearchConfig === null || menuSearchConfig === void 0 ? void 0 : menuSearchConfig.classNames, classNamesProp],
56
+ stylesList: [menuSearchConfig === null || menuSearchConfig === void 0 ? void 0 : menuSearchConfig.styles, stylesProp],
57
+ info: {
58
+ props: Object.assign(Object.assign({}, rest), {
59
+ data: data,
60
+ placeholder: placeholder,
61
+ width: width,
62
+ visible: visibleProp,
63
+ defaultValue: defaultValue,
64
+ value: valueProp
65
+ })
66
+ }
67
+ }),
68
+ classNames = _useMergeSemantic.classNames,
69
+ styles = _useMergeSemantic.styles;
49
70
  var _useUncontrolledToggl = useUncontrolledToggle({
50
71
  visible: visibleProp
51
72
  }),
@@ -177,10 +198,10 @@ var MenuSearch = /*#__PURE__*/forwardRef(function (_a, ref) {
177
198
  }
178
199
  };
179
200
  });
180
- var cls = cx(prefixCls, className, (_cx = {}, _cx[prefixCls + "--open"] = visible, _cx));
201
+ var cls = cx(prefixCls, className, classNames === null || classNames === void 0 ? void 0 : classNames.root, (_cx = {}, _cx[prefixCls + "--open"] = visible, _cx));
181
202
  return /*#__PURE__*/React.createElement("div", {
182
203
  className: cls,
183
- style: style
204
+ style: Object.assign(Object.assign({}, style), styles === null || styles === void 0 ? void 0 : styles.root)
184
205
  }, /*#__PURE__*/React.createElement(MenuSearchInput, {
185
206
  width: width,
186
207
  prefixCls: prefixCls,
@@ -190,18 +211,23 @@ var MenuSearch = /*#__PURE__*/forwardRef(function (_a, ref) {
190
211
  onClear: handleClear,
191
212
  onClose: handleClose,
192
213
  onKeyDown: handleKeyDown,
193
- inputRef: setInputRef
214
+ inputRef: setInputRef,
215
+ semanticClassNames: classNames,
216
+ semanticStyles: styles
194
217
  }), /*#__PURE__*/React.createElement("div", {
195
- className: cx(prefixCls + "__content", (_cx2 = {}, _cx2[prefixCls + "__content--visible"] = visible, _cx2))
218
+ className: cx(prefixCls + "__content", (_cx2 = {}, _cx2[prefixCls + "__content--visible"] = visible, _cx2), classNames === null || classNames === void 0 ? void 0 : classNames.content),
219
+ style: styles === null || styles === void 0 ? void 0 : styles.content
196
220
  }, (resultMemo === null || resultMemo === void 0 ? void 0 : resultMemo.length) > 0 ? ( /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
197
- className: prefixCls + "__header"
221
+ className: cx(prefixCls + "__header", classNames === null || classNames === void 0 ? void 0 : classNames.header),
222
+ style: styles === null || styles === void 0 ? void 0 : styles.header
198
223
  }, /*#__PURE__*/React.createElement(Highlighter, {
199
224
  keyword: String((_b = resultMemo === null || resultMemo === void 0 ? void 0 : resultMemo.length) !== null && _b !== void 0 ? _b : 0)
200
225
  }, i18n.get('menuSearch.searchResult', {
201
226
  count: (_c = resultMemo === null || resultMemo === void 0 ? void 0 : resultMemo.length) !== null && _c !== void 0 ? _c : 0,
202
227
  keyword: value
203
228
  }))), /*#__PURE__*/React.createElement("div", {
204
- className: prefixCls + "__list",
229
+ className: cx(prefixCls + "__list", classNames === null || classNames === void 0 ? void 0 : classNames.list),
230
+ style: styles === null || styles === void 0 ? void 0 : styles.list,
205
231
  ref: listRef,
206
232
  tabIndex: -1,
207
233
  onKeyDown: handleKeyDown
@@ -209,12 +235,14 @@ var MenuSearch = /*#__PURE__*/forwardRef(function (_a, ref) {
209
235
  var _cx3;
210
236
  return /*#__PURE__*/React.createElement("div", {
211
237
  key: item.id,
212
- className: cx(prefixCls + "__list-item", (_cx3 = {}, _cx3[prefixCls + "__list-item--selected"] = currentIndex === index, _cx3)),
238
+ className: cx(prefixCls + "__list-item", (_cx3 = {}, _cx3[prefixCls + "__list-item--selected"] = currentIndex === index, _cx3), classNames === null || classNames === void 0 ? void 0 : classNames.listItem),
239
+ style: styles === null || styles === void 0 ? void 0 : styles.listItem,
213
240
  onClick: function onClick() {
214
241
  return handleSelect(item.id, item, index);
215
242
  }
216
243
  }, /*#__PURE__*/React.createElement("div", {
217
- className: prefixCls + "__list-item__title"
244
+ className: cx(prefixCls + "__list-item__title", classNames === null || classNames === void 0 ? void 0 : classNames.listItemTitle),
245
+ style: styles === null || styles === void 0 ? void 0 : styles.listItemTitle
218
246
  }, /*#__PURE__*/React.createElement(EllipsisTooltip, {
219
247
  tooltipProps: {
220
248
  style: {
@@ -225,27 +253,38 @@ var MenuSearch = /*#__PURE__*/forwardRef(function (_a, ref) {
225
253
  keyword: value
226
254
  }, item.pathTitles.join('/')))));
227
255
  })))) : ( /*#__PURE__*/React.createElement("div", {
228
- className: prefixCls + "__empty"
256
+ className: cx(prefixCls + "__empty", classNames === null || classNames === void 0 ? void 0 : classNames.empty),
257
+ style: styles === null || styles === void 0 ? void 0 : styles.empty
229
258
  }, /*#__PURE__*/React.createElement("div", null, i18n.menuSearch.searchEmptyResult)))), (resultMemo === null || resultMemo === void 0 ? void 0 : resultMemo.length) > 0 && ( /*#__PURE__*/React.createElement("div", {
230
- className: prefixCls + "__footer"
259
+ className: cx(prefixCls + "__footer", classNames === null || classNames === void 0 ? void 0 : classNames.footer),
260
+ style: styles === null || styles === void 0 ? void 0 : styles.footer
231
261
  }, /*#__PURE__*/React.createElement("div", {
232
- className: prefixCls + "__footer-item"
262
+ className: cx(prefixCls + "__footer-item", classNames === null || classNames === void 0 ? void 0 : classNames.footerItem),
263
+ style: styles === null || styles === void 0 ? void 0 : styles.footerItem
233
264
  }, /*#__PURE__*/React.createElement("div", {
234
- className: prefixCls + "__footer-item__icon"
265
+ className: cx(prefixCls + "__footer-item__icon", classNames === null || classNames === void 0 ? void 0 : classNames.footerItemIcon),
266
+ style: styles === null || styles === void 0 ? void 0 : styles.footerItemIcon
235
267
  }, /*#__PURE__*/React.createElement(ArrowUpOutlined, null), /*#__PURE__*/React.createElement(ArrowDownOutlined, null)), /*#__PURE__*/React.createElement("span", {
236
- className: prefixCls + "__footer-item__text"
268
+ className: cx(prefixCls + "__footer-item__text", classNames === null || classNames === void 0 ? void 0 : classNames.footerItemText),
269
+ style: styles === null || styles === void 0 ? void 0 : styles.footerItemText
237
270
  }, i18n.menuSearch.moveCursor)), /*#__PURE__*/React.createElement("div", {
238
- className: prefixCls + "__footer-item"
271
+ className: cx(prefixCls + "__footer-item", classNames === null || classNames === void 0 ? void 0 : classNames.footerItem),
272
+ style: styles === null || styles === void 0 ? void 0 : styles.footerItem
239
273
  }, /*#__PURE__*/React.createElement("div", {
240
- className: prefixCls + "__footer-item__icon"
274
+ className: cx(prefixCls + "__footer-item__icon", classNames === null || classNames === void 0 ? void 0 : classNames.footerItemIcon),
275
+ style: styles === null || styles === void 0 ? void 0 : styles.footerItemIcon
241
276
  }, /*#__PURE__*/React.createElement(EnterIcon, null)), /*#__PURE__*/React.createElement("span", {
242
- className: prefixCls + "__footer-item__text"
277
+ className: cx(prefixCls + "__footer-item__text", classNames === null || classNames === void 0 ? void 0 : classNames.footerItemText),
278
+ style: styles === null || styles === void 0 ? void 0 : styles.footerItemText
243
279
  }, i18n.menuSearch.confirmSelect)), /*#__PURE__*/React.createElement("div", {
244
- className: prefixCls + "__footer-item"
280
+ className: cx(prefixCls + "__footer-item", classNames === null || classNames === void 0 ? void 0 : classNames.footerItem),
281
+ style: styles === null || styles === void 0 ? void 0 : styles.footerItem
245
282
  }, /*#__PURE__*/React.createElement("div", {
246
- className: prefixCls + "__footer-item__icon"
283
+ className: cx(prefixCls + "__footer-item__icon", classNames === null || classNames === void 0 ? void 0 : classNames.footerItemIcon),
284
+ style: styles === null || styles === void 0 ? void 0 : styles.footerItemIcon
247
285
  }, "esc"), /*#__PURE__*/React.createElement("span", {
248
- className: prefixCls + "__footer-item__text"
286
+ className: cx(prefixCls + "__footer-item__text", classNames === null || classNames === void 0 ? void 0 : classNames.footerItemText),
287
+ style: styles === null || styles === void 0 ? void 0 : styles.footerItemText
249
288
  }, i18n.menuSearch.hideWindow)))));
250
289
  });
251
290
  if (__DEV__) {
@@ -261,17 +300,20 @@ var MenuSearchInput = /*#__PURE__*/forwardRef(function (_a, ref) {
261
300
  onClose = _a.onClose,
262
301
  onKeyDown = _a.onKeyDown,
263
302
  inputRef = _a.inputRef,
264
- rest = __rest(_a, ["prefixCls", "placeholder", "width", "value", "onChange", "onClear", "onClose", "onKeyDown", "inputRef"]);
303
+ semanticClassNames = _a.semanticClassNames,
304
+ semanticStyles = _a.semanticStyles,
305
+ rest = __rest(_a, ["prefixCls", "placeholder", "width", "value", "onChange", "onClear", "onClose", "onKeyDown", "inputRef", "semanticClassNames", "semanticStyles"]);
265
306
  var i18n = useLocaleContext();
266
307
  return /*#__PURE__*/React.createElement("div", {
267
308
  ref: ref,
268
- className: prefixCls + "__input-wrapper",
269
- style: {
309
+ className: cx(prefixCls + "__input-wrapper", semanticClassNames === null || semanticClassNames === void 0 ? void 0 : semanticClassNames.inputWrapper),
310
+ style: Object.assign({
270
311
  width: width
271
- }
312
+ }, semanticStyles === null || semanticStyles === void 0 ? void 0 : semanticStyles.inputWrapper)
272
313
  }, /*#__PURE__*/React.createElement(Input, Object.assign({
273
314
  ref: inputRef,
274
- className: prefixCls + "__input",
315
+ className: cx(prefixCls + "__input", semanticClassNames === null || semanticClassNames === void 0 ? void 0 : semanticClassNames.input),
316
+ style: semanticStyles === null || semanticStyles === void 0 ? void 0 : semanticStyles.input,
275
317
  classNames: {
276
318
  prefix: prefixCls + "__input-prefix"
277
319
  },
@@ -279,7 +321,8 @@ var MenuSearchInput = /*#__PURE__*/forwardRef(function (_a, ref) {
279
321
  placeholder: placeholder,
280
322
  prefix: /*#__PURE__*/React.createElement(SearchOutlined, null),
281
323
  suffix: /*#__PURE__*/React.createElement(Button, {
282
- className: prefixCls + "__input-clear",
324
+ className: cx(prefixCls + "__input-clear", semanticClassNames === null || semanticClassNames === void 0 ? void 0 : semanticClassNames.inputClear),
325
+ style: semanticStyles === null || semanticStyles === void 0 ? void 0 : semanticStyles.inputClear,
283
326
  appearance: "link",
284
327
  size: "xs",
285
328
  onClick: onClear
@@ -290,7 +333,8 @@ var MenuSearchInput = /*#__PURE__*/forwardRef(function (_a, ref) {
290
333
  },
291
334
  onKeyDown: onKeyDown
292
335
  }, rest)), /*#__PURE__*/React.createElement("span", {
293
- className: prefixCls + "__close"
336
+ className: cx(prefixCls + "__close", semanticClassNames === null || semanticClassNames === void 0 ? void 0 : semanticClassNames.close),
337
+ style: semanticStyles === null || semanticStyles === void 0 ? void 0 : semanticStyles.close
294
338
  }, /*#__PURE__*/React.createElement(IconButton, {
295
339
  icon: /*#__PURE__*/React.createElement(CloseOutlined, null),
296
340
  effect: true,
@@ -11,6 +11,8 @@ import { __rest } from 'tslib';
11
11
  import React, { forwardRef } from 'react';
12
12
  import { getPrefixCls, cx } from '@hi-ui/classname';
13
13
  import { __DEV__ } from '@hi-ui/env';
14
+ import { useGlobalContext } from '@hi-ui/core';
15
+ import { useMergeSemantic } from '@hi-ui/use-merge-semantic';
14
16
  import Tooltip from '@hi-ui/tooltip';
15
17
  import { useLatestCallback } from '@hi-ui/use-latest';
16
18
  import { useUncontrolledState } from '@hi-ui/use-uncontrolled-state';
@@ -27,6 +29,9 @@ var SideMenu = /*#__PURE__*/forwardRef(function (_a, ref) {
27
29
  _a$role = _a.role,
28
30
  role = _a$role === void 0 ? 'side-menu' : _a$role,
29
31
  className = _a.className,
32
+ style = _a.style,
33
+ classNamesProp = _a.classNames,
34
+ stylesProp = _a.styles,
30
35
  _a$defaultActiveId = _a.defaultActiveId,
31
36
  defaultActiveId = _a$defaultActiveId === void 0 ? null : _a$defaultActiveId,
32
37
  activeIdProp = _a.activeId,
@@ -37,8 +42,25 @@ var SideMenu = /*#__PURE__*/forwardRef(function (_a, ref) {
37
42
  onClick = _a.onClick,
38
43
  onMouseEnter = _a.onMouseEnter,
39
44
  onMouseLeave = _a.onMouseLeave,
40
- rest = __rest(_a, ["prefixCls", "role", "className", "defaultActiveId", "activeId", "selectedId", "data", "mini", "childrenContainerRef", "onClick", "onMouseEnter", "onMouseLeave"]);
41
- var cls = cx(prefixCls, className, (_cx = {}, _cx[prefixCls + "--mini"] = mini, _cx));
45
+ rest = __rest(_a, ["prefixCls", "role", "className", "style", "classNames", "styles", "defaultActiveId", "activeId", "selectedId", "data", "mini", "childrenContainerRef", "onClick", "onMouseEnter", "onMouseLeave"]);
46
+ var _useGlobalContext = useGlobalContext(),
47
+ sideMenuConfig = _useGlobalContext.sideMenu;
48
+ var _useMergeSemantic = useMergeSemantic({
49
+ classNamesList: [sideMenuConfig === null || sideMenuConfig === void 0 ? void 0 : sideMenuConfig.classNames, classNamesProp],
50
+ stylesList: [sideMenuConfig === null || sideMenuConfig === void 0 ? void 0 : sideMenuConfig.styles, stylesProp],
51
+ info: {
52
+ props: Object.assign(Object.assign({}, rest), {
53
+ data: data,
54
+ mini: mini,
55
+ defaultActiveId: defaultActiveId,
56
+ activeId: activeIdProp,
57
+ selectedId: selectedIdProp
58
+ })
59
+ }
60
+ }),
61
+ classNames = _useMergeSemantic.classNames,
62
+ styles = _useMergeSemantic.styles;
63
+ var cls = cx(prefixCls, className, classNames === null || classNames === void 0 ? void 0 : classNames.root, (_cx = {}, _cx[prefixCls + "--mini"] = mini, _cx));
42
64
  var _useUncontrolledState = useUncontrolledState(defaultActiveId, activeIdProp),
43
65
  activeId = _useUncontrolledState[0],
44
66
  tryChangeActiveId = _useUncontrolledState[1];
@@ -57,10 +79,13 @@ var SideMenu = /*#__PURE__*/forwardRef(function (_a, ref) {
57
79
  return /*#__PURE__*/React.createElement("div", Object.assign({
58
80
  ref: ref,
59
81
  role: role,
60
- className: cls
82
+ className: cls,
83
+ style: Object.assign(Object.assign({}, style), styles === null || styles === void 0 ? void 0 : styles.root)
61
84
  }, rest), /*#__PURE__*/React.createElement(Scrollbar, {
62
85
  onlyScrollVisible: true,
63
- axes: "y"
86
+ axes: "y",
87
+ className: classNames === null || classNames === void 0 ? void 0 : classNames.wrapper,
88
+ style: styles === null || styles === void 0 ? void 0 : styles.wrapper
64
89
  }, data.map(function (item) {
65
90
  var _cx2;
66
91
  var id = item.id,
@@ -68,7 +93,8 @@ var SideMenu = /*#__PURE__*/forwardRef(function (_a, ref) {
68
93
  icon = item.icon;
69
94
  return /*#__PURE__*/React.createElement("div", {
70
95
  key: id,
71
- className: cx(prefixCls + "-item-wrapper"),
96
+ className: cx(prefixCls + "-item-wrapper", classNames === null || classNames === void 0 ? void 0 : classNames.itemWrapper),
97
+ style: styles === null || styles === void 0 ? void 0 : styles.itemWrapper,
72
98
  onClick: function onClick(evt) {
73
99
  return handleClick(evt, id, item);
74
100
  },
@@ -92,11 +118,14 @@ var SideMenu = /*#__PURE__*/forwardRef(function (_a, ref) {
92
118
  handleMouseLeave(evt, id, item);
93
119
  }
94
120
  }, /*#__PURE__*/React.createElement("div", {
95
- className: cx(prefixCls + "-item", (_cx2 = {}, _cx2[prefixCls + "-item--active"] = activeId === id, _cx2[prefixCls + "-item--mini"] = mini, _cx2[prefixCls + "-item--selected"] = selectedIdProp === id, _cx2))
121
+ className: cx(prefixCls + "-item", (_cx2 = {}, _cx2[prefixCls + "-item--active"] = activeId === id, _cx2[prefixCls + "-item--mini"] = mini, _cx2[prefixCls + "-item--selected"] = selectedIdProp === id, _cx2), classNames === null || classNames === void 0 ? void 0 : classNames.item),
122
+ style: styles === null || styles === void 0 ? void 0 : styles.item
96
123
  }, /*#__PURE__*/React.createElement("div", {
97
- className: cx(prefixCls + "-item__icon")
124
+ className: cx(prefixCls + "-item__icon", classNames === null || classNames === void 0 ? void 0 : classNames.itemIcon),
125
+ style: styles === null || styles === void 0 ? void 0 : styles.itemIcon
98
126
  }, icon), /*#__PURE__*/React.createElement("div", {
99
- className: cx(prefixCls + "-item__title")
127
+ className: cx(prefixCls + "-item__title", classNames === null || classNames === void 0 ? void 0 : classNames.itemTitle),
128
+ style: styles === null || styles === void 0 ? void 0 : styles.itemTitle
100
129
  }, title)));
101
130
  })));
102
131
  });
@@ -1,11 +1,16 @@
1
1
  import React from 'react';
2
2
  import { HiBaseHTMLProps } from '@hi-ui/core';
3
+ import type { ComponentSemantic, SemanticClassNamesType, SemanticStylesType } from '@hi-ui/use-merge-semantic';
3
4
  import { MenuDataItem } from './types';
4
5
  /**
5
6
  * 分组菜单
6
7
  */
7
8
  export declare const GroupMenu: React.ForwardRefExoticComponent<GroupMenuProps & React.RefAttributes<HTMLDivElement | null>>;
8
- export interface GroupMenuProps extends Omit<HiBaseHTMLProps<'div'>, 'onClick'> {
9
+ export type GroupMenuSemanticName = 'root' | 'wrapper' | 'item' | 'itemContent' | 'itemIcon' | 'itemTitle';
10
+ export type GroupMenuSemanticClassNames = SemanticClassNamesType<GroupMenuProps, GroupMenuSemanticName>;
11
+ export type GroupMenuSemanticStyles = SemanticStylesType<GroupMenuProps, GroupMenuSemanticName>;
12
+ export type GroupMenuSemantic = ComponentSemantic<GroupMenuSemanticClassNames, GroupMenuSemanticStyles>;
13
+ export interface GroupMenuProps extends Omit<HiBaseHTMLProps<'div'>, 'onClick'>, GroupMenuSemantic {
9
14
  /**
10
15
  * 菜单项数据列表
11
16
  */
@@ -1,11 +1,16 @@
1
1
  import React from 'react';
2
2
  import { HiBaseFieldNames, HiBaseHTMLProps, HiBaseSizeEnum } from '@hi-ui/core';
3
+ import type { ComponentSemantic, SemanticClassNamesType, SemanticStylesType } from '@hi-ui/use-merge-semantic';
3
4
  import { MenuDataItem, MenuFooterRenderProps } from './types';
4
5
  /**
5
6
  * 菜单
6
7
  */
7
8
  export declare const Menu: React.ForwardRefExoticComponent<MenuProps & React.RefAttributes<HTMLDivElement | null>>;
8
- export interface MenuProps extends Omit<HiBaseHTMLProps<'div'>, 'onClick'> {
9
+ export type MenuSemanticName = 'root' | 'wrapper' | 'footer' | 'toggle' | 'item' | 'itemInner' | 'itemIcon' | 'itemContent' | 'itemArrow' | 'submenu' | 'popmenu';
10
+ export type MenuSemanticClassNames = SemanticClassNamesType<MenuProps, MenuSemanticName>;
11
+ export type MenuSemanticStyles = SemanticStylesType<MenuProps, MenuSemanticName>;
12
+ export type MenuSemantic = ComponentSemantic<MenuSemanticClassNames, MenuSemanticStyles>;
13
+ export interface MenuProps extends Omit<HiBaseHTMLProps<'div'>, 'onClick'>, MenuSemantic {
9
14
  /**
10
15
  * 菜单项数据列表
11
16
  */
@@ -1,5 +1,6 @@
1
1
  import React from 'react';
2
2
  import { HiBaseHTMLProps } from '@hi-ui/core';
3
+ import type { ComponentSemantic, SemanticClassNamesType, SemanticStylesType } from '@hi-ui/use-merge-semantic';
3
4
  import { MenuDataItem } from './types';
4
5
  export declare const MenuSearch: React.ForwardRefExoticComponent<MenuSearchProps & React.RefAttributes<HTMLDivElement | null>>;
5
6
  export interface MenuSearchHelper {
@@ -7,7 +8,11 @@ export interface MenuSearchHelper {
7
8
  hide: () => void;
8
9
  focus: () => void;
9
10
  }
10
- export interface MenuSearchProps extends HiBaseHTMLProps<'div'> {
11
+ export type MenuSearchSemanticName = 'root' | 'inputWrapper' | 'input' | 'inputClear' | 'close' | 'content' | 'header' | 'list' | 'listItem' | 'listItemTitle' | 'empty' | 'footer' | 'footerItem' | 'footerItemIcon' | 'footerItemText';
12
+ export type MenuSearchSemanticClassNames = SemanticClassNamesType<MenuSearchProps, MenuSearchSemanticName>;
13
+ export type MenuSearchSemanticStyles = SemanticStylesType<MenuSearchProps, MenuSearchSemanticName>;
14
+ export type MenuSearchSemantic = ComponentSemantic<MenuSearchSemanticClassNames, MenuSearchSemanticStyles>;
15
+ export interface MenuSearchProps extends HiBaseHTMLProps<'div'>, MenuSearchSemantic {
11
16
  innerRef?: React.RefObject<MenuSearchHelper>;
12
17
  clearText?: React.ReactNode;
13
18
  placeholder?: string;
@@ -34,4 +39,6 @@ export declare const MenuSearchInput: React.ForwardRefExoticComponent<{
34
39
  onClear?: () => void;
35
40
  onClose?: () => void;
36
41
  onKeyDown?: (e: React.KeyboardEvent<HTMLInputElement>) => void;
42
+ semanticClassNames?: Record<string, string | undefined>;
43
+ semanticStyles?: Record<string, React.CSSProperties | undefined>;
37
44
  } & React.RefAttributes<HTMLInputElement>>;
@@ -1,11 +1,16 @@
1
1
  import React from 'react';
2
2
  import { HiBaseHTMLProps } from '@hi-ui/core';
3
+ import type { ComponentSemantic, SemanticClassNamesType, SemanticStylesType } from '@hi-ui/use-merge-semantic';
3
4
  import { MenuDataItem } from './types';
4
5
  /**
5
6
  * 侧边菜单组件
6
7
  */
7
8
  export declare const SideMenu: React.ForwardRefExoticComponent<SideMenuProps & React.RefAttributes<HTMLDivElement | null>>;
8
- export interface SideMenuProps extends Omit<HiBaseHTMLProps<'div'>, 'onClick' | 'onMouseEnter' | 'onMouseLeave'> {
9
+ export type SideMenuSemanticName = 'root' | 'wrapper' | 'itemWrapper' | 'item' | 'itemIcon' | 'itemTitle';
10
+ export type SideMenuSemanticClassNames = SemanticClassNamesType<SideMenuProps, SideMenuSemanticName>;
11
+ export type SideMenuSemanticStyles = SemanticStylesType<SideMenuProps, SideMenuSemanticName>;
12
+ export type SideMenuSemantic = ComponentSemantic<SideMenuSemanticClassNames, SideMenuSemanticStyles>;
13
+ export interface SideMenuProps extends Omit<HiBaseHTMLProps<'div'>, 'onClick' | 'onMouseEnter' | 'onMouseLeave'>, SideMenuSemantic {
9
14
  /**
10
15
  * 侧边菜单宽度
11
16
  */
@@ -1,5 +1,10 @@
1
1
  import React from 'react';
2
2
  import { MenuDataItem } from './types';
3
+ /** 供 MenuItem 使用的语义化 classNames/styles,由 Menu 通过 useMergeSemantic 合并后注入 */
4
+ export interface MenuSemanticContext {
5
+ semanticClassNames?: Record<string, string | undefined>;
6
+ semanticStyles?: Record<string, React.CSSProperties | undefined>;
7
+ }
3
8
  declare const MenuContext: React.Context<{
4
9
  placement?: "vertical" | "horizontal";
5
10
  expandedType?: "collapse" | "pop";
@@ -14,5 +19,5 @@ declare const MenuContext: React.Context<{
14
19
  clickSubMenu?: (id: React.ReactText) => void;
15
20
  closePopper?: (id: React.ReactText) => void;
16
21
  closeAllPopper?: () => void;
17
- }>;
22
+ } & MenuSemanticContext>;
18
23
  export default MenuContext;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hi-ui/menu",
3
- "version": "5.0.0-experimental.1",
3
+ "version": "5.0.0-experimental.2",
4
4
  "description": "A sub-package for @hi-ui/hiui.",
5
5
  "keywords": [],
6
6
  "author": "HiUI <mi-hiui@xiaomi.com>",
@@ -45,19 +45,19 @@
45
45
  },
46
46
  "dependencies": {
47
47
  "@hi-ui/array-utils": "^5.0.0-experimental.0",
48
- "@hi-ui/button": "^5.0.0-experimental.0",
48
+ "@hi-ui/button": "^5.0.0-experimental.1",
49
49
  "@hi-ui/classname": "^5.0.0-experimental.0",
50
- "@hi-ui/ellipsis-tooltip": "^5.0.0-experimental.0",
50
+ "@hi-ui/ellipsis-tooltip": "^5.0.0-experimental.1",
51
51
  "@hi-ui/env": "^5.0.0-experimental.0",
52
- "@hi-ui/highlighter": "^5.0.0-experimental.0",
53
- "@hi-ui/icon-button": "^5.0.0-experimental.0",
54
- "@hi-ui/icons": "^5.0.0-experimental.0",
55
- "@hi-ui/input": "^5.0.0-experimental.1",
56
- "@hi-ui/picker": "^5.0.0-experimental.1",
57
- "@hi-ui/popper": "^5.0.0-experimental.0",
58
- "@hi-ui/scrollbar": "^5.0.0-experimental.0",
52
+ "@hi-ui/highlighter": "^5.0.0-experimental.1",
53
+ "@hi-ui/icon-button": "^5.0.0-experimental.1",
54
+ "@hi-ui/icons": "^5.0.0-experimental.1",
55
+ "@hi-ui/input": "^5.0.0-experimental.2",
56
+ "@hi-ui/picker": "^5.0.0-experimental.2",
57
+ "@hi-ui/popper": "^5.0.0-experimental.1",
58
+ "@hi-ui/scrollbar": "^5.0.0-experimental.1",
59
59
  "@hi-ui/times": "^5.0.0-experimental.0",
60
- "@hi-ui/tooltip": "^5.0.0-experimental.0",
60
+ "@hi-ui/tooltip": "^5.0.0-experimental.1",
61
61
  "@hi-ui/tree-utils": "^5.0.0-experimental.0",
62
62
  "@hi-ui/type-assertion": "^5.0.0-experimental.0",
63
63
  "@hi-ui/use-id": "^5.0.0-experimental.0",
@@ -67,16 +67,17 @@
67
67
  "@hi-ui/use-resize-observer": "^5.0.0-experimental.0",
68
68
  "@hi-ui/use-toggle": "^5.0.0-experimental.0",
69
69
  "@hi-ui/use-uncontrolled-state": "^5.0.0-experimental.0",
70
- "react-transition-group": "^4.4.5"
70
+ "react-transition-group": "^4.4.5",
71
+ "@hi-ui/use-merge-semantic": "^5.0.0-experimental.0"
71
72
  },
72
73
  "peerDependencies": {
73
- "@hi-ui/core": ">=5.0.0-experimental.0",
74
+ "@hi-ui/core": ">=5.0.0-experimental.1",
74
75
  "react": ">=16.8.6",
75
76
  "react-dom": ">=16.8.6"
76
77
  },
77
78
  "devDependencies": {
78
- "@hi-ui/core": "^5.0.0-experimental.0",
79
- "@hi-ui/core-css": "^5.0.0-experimental.1",
79
+ "@hi-ui/core": "^5.0.0-experimental.1",
80
+ "@hi-ui/core-css": "^5.0.0-experimental.2",
80
81
  "react": "^17.0.1",
81
82
  "react-dom": "^17.0.1"
82
83
  }