@kdcloudjs/kdesign 1.3.1 → 1.3.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/CHANGELOG.md +52 -0
  2. package/dist/kdesign-complete.less +171 -103
  3. package/dist/kdesign.css +163 -74
  4. package/dist/kdesign.css.map +1 -1
  5. package/dist/kdesign.js +420 -299
  6. package/dist/kdesign.js.map +1 -1
  7. package/dist/kdesign.min.css +4 -4
  8. package/dist/kdesign.min.js +8 -8
  9. package/dist/kdesign.min.js.map +1 -1
  10. package/es/button/group.js +2 -1
  11. package/es/button/style/index.css +20 -19
  12. package/es/button/style/index.less +29 -27
  13. package/es/button/style/token.less +4 -4
  14. package/es/cascader/cascader.d.ts +7 -3
  15. package/es/cascader/cascader.js +8 -6
  16. package/es/checkbox/checkbox.js +20 -12
  17. package/es/config-provider/compDefaultProps.d.ts +0 -1
  18. package/es/config-provider/compDefaultProps.js +1 -2
  19. package/es/form/Field.js +53 -9
  20. package/es/grid/row.d.ts +1 -1
  21. package/es/icon/interface.js +1 -1
  22. package/es/menu/menu.d.ts +1 -1
  23. package/es/menu/menu.js +51 -19
  24. package/es/menu/menuItem.d.ts +1 -0
  25. package/es/menu/menuItem.js +14 -10
  26. package/es/menu/style/index.css +139 -53
  27. package/es/menu/style/index.less +101 -69
  28. package/es/menu/style/mixin.less +33 -1
  29. package/es/menu/style/token.less +4 -2
  30. package/es/menu/subMenu.d.ts +1 -1
  31. package/es/menu/subMenu.js +118 -112
  32. package/es/radio/radio.d.ts +1 -1
  33. package/es/radio/radio.js +18 -11
  34. package/es/select/select.js +9 -2
  35. package/es/style/icon/kdicon.css +3 -1
  36. package/es/style/icon/kdicon.woff +0 -0
  37. package/lib/button/group.js +2 -1
  38. package/lib/button/style/index.css +20 -19
  39. package/lib/button/style/index.less +29 -27
  40. package/lib/button/style/token.less +4 -4
  41. package/lib/cascader/cascader.d.ts +7 -3
  42. package/lib/cascader/cascader.js +10 -8
  43. package/lib/checkbox/checkbox.js +19 -11
  44. package/lib/config-provider/compDefaultProps.d.ts +0 -1
  45. package/lib/config-provider/compDefaultProps.js +1 -2
  46. package/lib/form/Field.js +54 -9
  47. package/lib/grid/row.d.ts +1 -1
  48. package/lib/icon/interface.js +1 -1
  49. package/lib/menu/menu.d.ts +1 -1
  50. package/lib/menu/menu.js +57 -23
  51. package/lib/menu/menuItem.d.ts +1 -0
  52. package/lib/menu/menuItem.js +16 -10
  53. package/lib/menu/style/index.css +139 -53
  54. package/lib/menu/style/index.less +101 -69
  55. package/lib/menu/style/mixin.less +33 -1
  56. package/lib/menu/style/token.less +4 -2
  57. package/lib/menu/subMenu.d.ts +1 -1
  58. package/lib/menu/subMenu.js +137 -135
  59. package/lib/radio/radio.d.ts +1 -1
  60. package/lib/radio/radio.js +30 -20
  61. package/lib/select/select.js +9 -2
  62. package/lib/style/icon/kdicon.css +3 -1
  63. package/lib/style/icon/kdicon.woff +0 -0
  64. package/package.json +2 -2
@@ -11,7 +11,7 @@ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequ
11
11
  Object.defineProperty(exports, "__esModule", {
12
12
  value: true
13
13
  });
14
- exports.default = exports.PopupPlacement = void 0;
14
+ exports.default = exports.CascaderPlacement = void 0;
15
15
 
16
16
  var _includes = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/includes"));
17
17
 
@@ -49,8 +49,8 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof _WeakMap !== "functi
49
49
 
50
50
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && _Object$getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? _Object$getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
51
51
 
52
- var PopupPlacement = (0, _type.tuple)('topLeft', 'topRight', 'bottomLeft', 'bottomRight');
53
- exports.PopupPlacement = PopupPlacement;
52
+ var CascaderPlacement = (0, _type.tuple)('topLeft', 'topRight', 'bottomLeft', 'bottomRight');
53
+ exports.CascaderPlacement = CascaderPlacement;
54
54
  var Cascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
55
55
  var _React$useContext = React.useContext(_configProvider.ConfigContext),
56
56
  getPrefixCls = _React$useContext.getPrefixCls,
@@ -75,6 +75,7 @@ var Cascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
75
75
  getPopupContainer = allProps.getPopupContainer,
76
76
  defaultPopupVisible = allProps.defaultPopupVisible,
77
77
  onPopupVisibleChange = allProps.onPopupVisibleChange,
78
+ onPopperVisibleChange = allProps.onPopperVisibleChange,
78
79
  customPrefixcls = allProps.prefixCls; // className前缀
79
80
 
80
81
  var prefixCls = getPrefixCls(pkgPrefixCls, 'cascader', customPrefixcls);
@@ -82,14 +83,14 @@ var Cascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
82
83
  var triggerRef = React.useRef();
83
84
  var mergeRef = ref || pickerRef;
84
85
 
85
- var _React$useState = React.useState(!!props.popupVisible || defaultPopupVisible),
86
+ var _React$useState = React.useState(!!props.popperVisible || !!props.popupVisible || defaultPopupVisible),
86
87
  _React$useState2 = (0, _slicedToArray2.default)(_React$useState, 2),
87
88
  visible = _React$useState2[0],
88
89
  setVisible = _React$useState2[1];
89
90
 
90
91
  React.useEffect(function () {
91
- setVisible(!!props.popupVisible);
92
- }, [props.popupVisible]);
92
+ setVisible(!!props.popperVisible || !!props.popupVisible);
93
+ }, [props.popperVisible, props.popupVisible]);
93
94
 
94
95
  var _React$useState3 = React.useState([options]),
95
96
  _React$useState4 = (0, _slicedToArray2.default)(_React$useState3, 2),
@@ -231,6 +232,7 @@ var Cascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
231
232
  var onVisibleChange = function onVisibleChange(visible) {
232
233
  setVisible(visible);
233
234
  onPopupVisibleChange && onPopupVisibleChange(visible);
235
+ onPopperVisibleChange && onPopperVisibleChange(visible);
234
236
  visible && setSelectedOptions((0, _slice.default)(currentOptions).call(currentOptions, 0));
235
237
  };
236
238
 
@@ -282,8 +284,8 @@ var Cascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
282
284
  trigger: 'click',
283
285
  getPopupContainer: getPopupContainer,
284
286
  prefixCls: "".concat(prefixCls, "-menus"),
285
- placement: allProps.popupPlacement,
286
- popperClassName: allProps.popupClassName,
287
+ placement: allProps.popperPlacement || allProps.popupPlacement,
288
+ popperClassName: allProps.popperClassName || allProps.popupClassName,
287
289
  getTriggerElement: function getTriggerElement() {
288
290
  return triggerRef.current;
289
291
  }
@@ -71,11 +71,12 @@ var InternalCheckbox = function InternalCheckbox(props, ref) {
71
71
  return (0, _isBoolean.default)(checked) ? checked : defaultChecked;
72
72
  };
73
73
 
74
- var _React$useState = _react.default.useState(getChecked()),
75
- _React$useState2 = (0, _slicedToArray2.default)(_React$useState, 2),
76
- selected = _React$useState2[0],
77
- setSelected = _React$useState2[1];
74
+ var _useState = (0, _react.useState)(getChecked()),
75
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
76
+ selected = _useState2[0],
77
+ setSelected = _useState2[1];
78
78
 
79
+ var labelRef = (0, _react.useRef)(null);
79
80
  (0, _devwarning.default)(CheckboxTypes.indexOf(checkboxType) === -1, 'checkbox', "cannot found checkbox type '".concat(checkboxType, "'"));
80
81
  (0, _devwarning.default)(CheckboxSizes.indexOf(size) === -1, 'checkbox', "cannot found size type '".concat(size, "'"));
81
82
  var checkboxPrefixCls = getPrefixCls(prefixCls, 'checkbox', customPrefixcls);
@@ -102,14 +103,21 @@ var InternalCheckbox = function InternalCheckbox(props, ref) {
102
103
  (0, _react.useEffect)(function () {
103
104
  (0, _isBoolean.default)(checked) && checked !== selected && setSelected(checked);
104
105
  }, [checked, selected]);
106
+ (0, _react.useEffect)(function () {
107
+ var handleRepeatClick = function handleRepeatClick(e) {
108
+ var element = e.target;
105
109
 
106
- var handleRepeatClick = function handleRepeatClick(e) {
107
- var element = e.target;
110
+ if (element.tagName !== 'INPUT') {
111
+ e.stopPropagation();
112
+ }
113
+ };
108
114
 
109
- if (element.tagName !== 'INPUT') {
110
- e.stopPropagation();
111
- }
112
- };
115
+ labelRef.current.addEventListener('click', handleRepeatClick);
116
+ return function () {
117
+ // eslint-disable-next-line react-hooks/exhaustive-deps
118
+ labelRef.current.removeEventListener('click', handleRepeatClick);
119
+ };
120
+ }, []);
113
121
 
114
122
  var getDefaultCheckbox = function getDefaultCheckbox() {
115
123
  var _context19, _context20;
@@ -120,7 +128,7 @@ var InternalCheckbox = function InternalCheckbox(props, ref) {
120
128
  _react.default.createElement("label", {
121
129
  className: getRootClassName,
122
130
  style: style,
123
- onClick: handleRepeatClick
131
+ ref: labelRef
124
132
  }, /*#__PURE__*/_react.default.createElement("span", {
125
133
  className: checkedWrapperClassName
126
134
  }, selected && /*#__PURE__*/_react.default.createElement("span", {
@@ -132,7 +132,6 @@ declare const compDefaultProps: {
132
132
  mode: string;
133
133
  defaultOpen: boolean;
134
134
  showArrow: boolean;
135
- showSearch: boolean;
136
135
  };
137
136
  Image: {
138
137
  preview: boolean;
@@ -155,8 +155,7 @@ var compDefaultProps = {
155
155
  borderType: 'underline',
156
156
  mode: 'single',
157
157
  defaultOpen: false,
158
- showArrow: true,
159
- showSearch: false
158
+ showArrow: true
160
159
  },
161
160
  Image: {
162
161
  preview: true
package/lib/form/Field.js CHANGED
@@ -23,6 +23,8 @@ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime-corejs3/hel
23
23
 
24
24
  var _getOwnPropertySymbols = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols"));
25
25
 
26
+ var _filter = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/filter"));
27
+
26
28
  var _concat = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/concat"));
27
29
 
28
30
  var _map = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/map"));
@@ -89,8 +91,30 @@ var generateEventHandler = function generateEventHandler(handler, validateTrigge
89
91
  return eventHandler;
90
92
  };
91
93
 
94
+ var INNER_VALUE_PROPS_LIST = [{
95
+ name: 'Radio',
96
+ propName: 'checked'
97
+ }, {
98
+ name: 'Checkbox',
99
+ propName: 'checked'
100
+ }, {
101
+ name: 'Switch',
102
+ propName: 'checked'
103
+ }, {
104
+ name: 'Upload',
105
+ propName: 'fileList'
106
+ }, {
107
+ name: 'Transfer',
108
+ propName: 'targetKey'
109
+ }, {
110
+ name: 'RangePicker',
111
+ propName: 'ranges'
112
+ }];
113
+
92
114
  var Field = function Field(props) {
93
- var _classnames, _context2;
115
+ var _classnames;
116
+
117
+ var _a;
94
118
 
95
119
  (0, _devwarning.default)(! /*#__PURE__*/_react.default.isValidElement(props.children), 'Form.Item', 'Children of Form.Item is not a valid element');
96
120
  (0, _devwarning.default)(!props.name, 'Form.Item', 'Form.Item must have a name');
@@ -135,8 +159,29 @@ var Field = function Field(props) {
135
159
  wrapperWidth = props.wrapperWidth,
136
160
  validateTrigger = props.validateTrigger,
137
161
  defaultValue = props.defaultValue,
138
- _props$valuePropName = props.valuePropName,
139
- valuePropName = _props$valuePropName === void 0 ? 'value' : _props$valuePropName;
162
+ valuePropName = props.valuePropName;
163
+ var childrenNode = null;
164
+ var innerValuePropName = 'value';
165
+ var childrenArray = (0, _reactChildren.toArray)(children);
166
+
167
+ if (childrenArray.length) {
168
+ (0, _devwarning.default)(childrenArray.length > 1, 'Form.Item', 'Form.Item must have only child');
169
+ childrenNode = childrenArray[0];
170
+ }
171
+
172
+ var innerDisplayName = (_a = childrenNode === null || childrenNode === void 0 ? void 0 : childrenNode.type) === null || _a === void 0 ? void 0 : _a.displayName;
173
+
174
+ if (valuePropName !== undefined) {
175
+ innerValuePropName = valuePropName;
176
+ } else if (innerDisplayName) {
177
+ var filter = (0, _filter.default)(INNER_VALUE_PROPS_LIST).call(INNER_VALUE_PROPS_LIST, function (item) {
178
+ return innerDisplayName === item.name;
179
+ });
180
+
181
+ if (filter.length) {
182
+ innerValuePropName = filter[0].propName;
183
+ }
184
+ }
140
185
 
141
186
  var onStoreChange = function onStoreChange(stores, _namePathList, source) {
142
187
  var prev = stores.prev,
@@ -216,8 +261,8 @@ var Field = function Field(props) {
216
261
 
217
262
  var inputValue;
218
263
 
219
- if (Object.prototype.hasOwnProperty.call(evt, 'target') && (0, _includes.default)(FormEventValuePropNames).call(FormEventValuePropNames, valuePropName)) {
220
- inputValue = (_a = evt.target) === null || _a === void 0 ? void 0 : _a[valuePropName];
264
+ if (Object.prototype.hasOwnProperty.call(evt, 'target') && (0, _includes.default)(FormEventValuePropNames).call(FormEventValuePropNames, innerValuePropName)) {
265
+ inputValue = (_a = evt.target) === null || _a === void 0 ? void 0 : _a[innerValuePropName];
221
266
  } else {
222
267
  inputValue = evt;
223
268
  }
@@ -256,7 +301,7 @@ var Field = function Field(props) {
256
301
 
257
302
  var _ch$props = ch.props,
258
303
  chChange = _ch$props.onChange,
259
- chValue = _ch$props[valuePropName],
304
+ chValue = _ch$props[innerValuePropName],
260
305
  chDisabled = _ch$props.disabled,
261
306
  chDefaultValue = _ch$props.defaultValue;
262
307
 
@@ -288,7 +333,7 @@ var Field = function Field(props) {
288
333
  return (0, _extends5.default)((0, _extends5.default)({}, rest), (_extends3 = {
289
334
  onChange: onChange,
290
335
  defaultValue: defaultValue
291
- }, (0, _defineProperty2.default)(_extends3, valuePropName, fieldValue), (0, _defineProperty2.default)(_extends3, "disabled", chDisabled || faDisabled), _extends3));
336
+ }, (0, _defineProperty2.default)(_extends3, innerValuePropName, fieldValue), (0, _defineProperty2.default)(_extends3, "disabled", chDisabled || faDisabled), _extends3));
292
337
  };
293
338
 
294
339
  return /*#__PURE__*/_react.default.createElement("div", {
@@ -301,10 +346,10 @@ var Field = function Field(props) {
301
346
  }), /*#__PURE__*/_react.default.createElement(_FieldWrapper.default, {
302
347
  width: wrapperWidth,
303
348
  validateMessage: validateMessage
304
- }, (0, _map.default)(_context2 = (0, _reactChildren.toArray)(children)).call(_context2, function (child, index) {
349
+ }, (0, _map.default)(childrenArray).call(childrenArray, function (child, index) {
305
350
  var keys = mergeProps((0, _extends5.default)((0, _extends5.default)((0, _defineProperty2.default)({
306
351
  disabled: disabled
307
- }, valuePropName, value), trigger), {
352
+ }, innerValuePropName, value), trigger), {
308
353
  key: index
309
354
  }), child);
310
355
  return child ? /*#__PURE__*/_react.default.cloneElement(child, keys) : child;
package/lib/grid/row.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- declare type Align = 'top' | 'middle' | 'bottom';
2
+ declare type Align = 'top' | 'middle' | 'bottom' | 'stretch';
3
3
  declare type Justify = 'start' | 'end' | 'center' | 'space-around' | 'space-between';
4
4
  interface gutterObject {
5
5
  xs?: number;
@@ -13,7 +13,7 @@ var _type = require("../_utils/type");
13
13
 
14
14
  var BaseIcon = ['arrow-up', 'arrow-down', 'arrow-left', 'arrow-right', 'first', 'last', 'double-arrow-left', 'double-arrow-right', 'push-down', 'put-top', 'put-bottom', 'put-on', 'put-off', 'switch-up', 'switch-down', 'all-border', 'top-border', 'right-border', 'bottom-border', 'left-border', 'left-extension', 'right-extension', 'left-unfold', 'right-unfold', 'unfoldmenu', 'foldmenu', 'enlarge', 'expand', 'close-full-screen', 'split', 'back', 'arrow', 'no-border', 'border', 'rough-border', 'align-left', 'align-right', 'align-center', 'vertical-center', 'delete-indentation', 'equal', 'greater-equal', 'not-equal', 'male', 'female', 'copy', 'print', 'lock', 'scanning', 'like', 'project', 'user-info', 'shutdown', 'image', 'delete-line', 'add-line', 'job-info', 'detect', 'cancel', 'stop', 'cell', 'fixed-shrink', 'attachment', 'location', 'reduce', 'resign-report', 'forbid', 'education', 'unlock', 'contract', 'filter', 'more', 'operating-element', 'fail', 'edit', 'have-attachment', 'hide', 'preview', 'unfold-all', 'wrap', 'filter-switch', 'qualification-info', 'cn', 'en', 'git', 'reset', 'preview-view', 'unfold', 'comment', 'shoppingcart', 'add-child', 'save', 'detail', 'table-setting', 'edit-view', 'edit-border', 'hyperlink', 'code', 'import', 'address', 'analysis', 'share', 'chart', 'fixed-window', 'order', 'phone', 'classify', 'feedback', 'menu', 'voice', 'search-border', 'material', 'finish', 'more-info', 'fixed', 'change', 'copy-code', 'return', 'qrcode', 'counterclockwise', 'list', 'switch', 'task-process', 'add', 'delete', 'add-word', 'two-window', 'spin', 'ordered-list', 'cooperation', 'quit', 'shrink', 'zoom', 'graffiti', 'experience', 'medical-report', 'bankcard', 'yunzhijia', 'customize', 'refresh', 'search', 'loadding', 'loadding-circle', 'right', 'close', 'upload', 'download', 'upload-cloud', 'waiting', 'warning', 'exclamatory', 'tips', 'setting', 'chart-display', 'date', 'more-item', 'international', 'little-k', 'bellOutlined', 'sigma'];
15
15
  exports.BaseIcon = BaseIcon;
16
- var SolidIcon = ['arrow-up-solid', 'arrow-right-solid', 'arrow-down-solid', 'arrow-left-solid', 'left-unfold-solid', 'right-unfold-solid', 'unlock-solid', 'multiply', 'division-solid', 'title-solid', 'communication-solid', 'fixed-solid', 'more-info-solid', 'timezone-solid', 'mosaic-solid', 'strike-solid', 'lock-solid', 'filter-solid', 'person-solid', 'bold-solid', 'delete-solid', 'processing-solid', 'tips-solid', 'quote-solid', 'oblique-solid', 'sun-solid', 'underline-solid', 'font-background-solid', 'eliminate-solid', 'font-color-solid', 'fx', 'refresh-solid', 'right-solid', 'location-solid', 'add-solid', 'warning-solid', 'close-solid', 'right-bold', 'close-bold', 'workbench', 'star', 'notice'];
16
+ var SolidIcon = ['arrow-up-solid', 'arrow-right-solid', 'arrow-down-solid', 'arrow-left-solid', 'left-unfold-solid', 'right-unfold-solid', 'unlock-solid', 'multiply', 'division-solid', 'title-solid', 'communication-solid', 'fixed-solid', 'more-info-solid', 'timezone-solid', 'mosaic-solid', 'strike-solid', 'lock-solid', 'filter-solid', 'person-solid', 'bold-solid', 'delete-solid', 'processing-solid', 'tips-solid', 'quote-solid', 'oblique-solid', 'sun-solid', 'underline-solid', 'font-background-solid', 'eliminate-solid', 'font-color-solid', 'fx', 'refresh-solid', 'right-solid', 'location-solid', 'add-solid', 'warning-solid', 'close-solid', 'right-bold', 'close-bold', 'workbench', 'star', 'notice', 'dashboard'];
17
17
  exports.SolidIcon = SolidIcon;
18
18
 
19
19
  var IconTypes = _type.tuple.apply(void 0, (0, _concat.default)(BaseIcon).call(BaseIcon, SolidIcon));
@@ -1,4 +1,4 @@
1
- import * as React from 'react';
1
+ import React from 'react';
2
2
  import { MenuMode, MenuTheme, TriggerSubMenuAction, SubMenuChangeEventHandler } from './interface';
3
3
  import MenuItem from './menuItem';
4
4
  import SubMenu from './subMenu';
package/lib/menu/menu.js CHANGED
@@ -17,17 +17,19 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs3/he
17
17
 
18
18
  var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/extends"));
19
19
 
20
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/toConsumableArray"));
21
+
20
22
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/slicedToArray"));
21
23
 
22
24
  var _getOwnPropertySymbols = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols"));
23
25
 
24
- var _splice = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/splice"));
25
-
26
- var _concat = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/concat"));
26
+ var _set = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/set"));
27
27
 
28
28
  var _map = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/map"));
29
29
 
30
- var React = _interopRequireWildcard(require("react"));
30
+ var _concat = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/concat"));
31
+
32
+ var _react = _interopRequireWildcard(require("react"));
31
33
 
32
34
  var _reactChildren = require("../_utils/react-children");
33
35
 
@@ -64,16 +66,21 @@ var isFunction = function isFunction(fn) {
64
66
  return fn && typeof fn === 'function';
65
67
  };
66
68
 
69
+ var openSubMenuSet = new _set.default();
70
+
67
71
  var Menu = function Menu(props) {
68
72
  var _context2, _classNames;
69
73
 
70
74
  var _a;
71
75
 
72
- var _React$useContext = React.useContext(_configProvider.ConfigContext),
76
+ var _React$useContext = _react.default.useContext(_configProvider.ConfigContext),
73
77
  getPrefixCls = _React$useContext.getPrefixCls,
74
78
  pkgPrefixCls = _React$useContext.prefixCls,
75
79
  userDefaultProps = _React$useContext.compDefaultProps;
76
80
 
81
+ var userSelectedKey = props.selectedKey,
82
+ userOpenKeys = props.openKeys;
83
+
77
84
  var _b = (0, _utils.getCompProps)('Menu', userDefaultProps, props),
78
85
  customPrefixcls = _b.prefixCls,
79
86
  mode = _b.mode,
@@ -89,20 +96,35 @@ var Menu = function Menu(props) {
89
96
  restProps = __rest(_b, ["prefixCls", "mode", "inlineIndent", "forceSubMenuRender", "additionalTools", "onClick", "onOpenChange", "children", "className", "theme", "collapsed"]);
90
97
 
91
98
  var prefixCls = getPrefixCls(pkgPrefixCls, 'menu', customPrefixcls);
92
- (0, _devwarning.default)(['inline', 'vertical', undefined].indexOf(mode) === -1, 'menu', "cannot found menu mode '".concat(mode, "'"));
93
- var defaultSelectedKey = ('selectedKey' in restProps ? restProps.selectedKey : restProps.defaultSelectedKey) || '';
94
- var defaultOpenKeys = ('openKeys' in restProps ? restProps.openKeys : restProps.defaultOpenKeys) || []; // const [collapsed, setCollapsed] = React.useState<boolean | undefined>(restProps.collapsed)
99
+ (0, _devwarning.default)(['inline', 'vertical', undefined].indexOf(mode) === -1, 'menu', "cannot found menu mode '".concat(mode, "'")); // const [collapsed, setCollapsed] = React.useState<boolean | undefined>(restProps.collapsed)
95
100
 
96
- var _React$useState = React.useState(defaultSelectedKey),
101
+ var _React$useState = _react.default.useState(''),
97
102
  _React$useState2 = (0, _slicedToArray2.default)(_React$useState, 2),
98
103
  selectedKey = _React$useState2[0],
99
104
  setSelectedKey = _React$useState2[1];
100
105
 
101
- var _React$useState3 = React.useState(defaultOpenKeys),
106
+ var _React$useState3 = _react.default.useState([]),
102
107
  _React$useState4 = (0, _slicedToArray2.default)(_React$useState3, 2),
103
108
  openKeys = _React$useState4[0],
104
- setOpenKeys = _React$useState4[1]; // triggerSubMenuAction内嵌模式固定为click,即该值设置只对垂直模式有效
109
+ setOpenKeys = _React$useState4[1];
105
110
 
111
+ (0, _react.useEffect)(function () {
112
+ if (userSelectedKey !== undefined) {
113
+ setSelectedKey(userSelectedKey);
114
+ }
115
+ }, [userSelectedKey]);
116
+ (0, _react.useEffect)(function () {
117
+ if (userOpenKeys !== undefined) {
118
+ setOpenKeys(userOpenKeys);
119
+ }
120
+ }, [userOpenKeys]);
121
+ (0, _react.useEffect)(function () {
122
+ if (Array.isArray(userOpenKeys)) {
123
+ userOpenKeys.forEach(function (d) {
124
+ openSubMenuSet.add(d);
125
+ });
126
+ }
127
+ }, []); // triggerSubMenuAction内嵌模式固定为click,即该值设置只对垂直模式有效
106
128
 
107
129
  if (mode === 'inline') {
108
130
  restProps.triggerSubMenuAction = 'click';
@@ -112,7 +134,9 @@ var Menu = function Menu(props) {
112
134
 
113
135
 
114
136
  var handleOnClick = function handleOnClick(info) {
115
- setSelectedKey(info.key);
137
+ if (userSelectedKey === undefined) {
138
+ setSelectedKey(info.key);
139
+ }
116
140
 
117
141
  if (mode !== 'inline' && openKeys.length > 0) {
118
142
  setOpenKeys([]);
@@ -134,37 +158,47 @@ var Menu = function Menu(props) {
134
158
  }; // 子菜单展开关闭的回调
135
159
 
136
160
 
137
- var handleOnOpenChange = function handleOnOpenChange(openKey) {
138
- var index = openKeys.indexOf(openKey);
161
+ var handleOnOpenChange = function handleOnOpenChange(openKey, isAdd) {
162
+ var clean = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
139
163
 
140
- if (index > -1) {
141
- (0, _splice.default)(openKeys).call(openKeys, index, 1);
142
- setOpenKeys(openKeys);
164
+ if (clean) {
165
+ openSubMenuSet.clear();
143
166
  } else {
144
- setOpenKeys((0, _concat.default)(openKeys).call(openKeys, openKey));
167
+ if (isAdd) {
168
+ openSubMenuSet.add(openKey);
169
+ } else {
170
+ openSubMenuSet.delete(openKey);
171
+ }
172
+ }
173
+
174
+ if (userOpenKeys === undefined) {
175
+ setOpenKeys((0, _toConsumableArray2.default)(openSubMenuSet));
145
176
  }
146
177
 
147
- onOpenChange && onOpenChange(openKey);
178
+ onOpenChange && onOpenChange((0, _toConsumableArray2.default)(openSubMenuSet));
148
179
  };
149
180
 
150
181
  var renderMenu = function renderMenu() {
151
182
  var _context;
152
183
 
153
- return /*#__PURE__*/React.createElement("ul", null, (0, _map.default)(_context = (0, _reactChildren.toArray)(children)).call(_context, function (item, i) {
184
+ return /*#__PURE__*/_react.default.createElement("ul", null, (0, _map.default)(_context = (0, _reactChildren.toArray)(children)).call(_context, function (item, i) {
154
185
  if (!item) return;
155
186
  var key = (item === null || item === void 0 ? void 0 : item.key) || i;
156
- return /*#__PURE__*/React.cloneElement(item, {
187
+ return /*#__PURE__*/_react.default.cloneElement(item, {
157
188
  key: key,
158
189
  keyValue: key,
159
190
  collapsed: collapsed,
160
191
  mode: mode,
161
192
  openKeys: openKeys,
162
193
  selectedKey: selectedKey,
194
+ theme: theme,
163
195
  triggerSubMenuAction: restProps.triggerSubMenuAction,
164
196
  forceSubMenuRender: forceSubMenuRender,
165
197
  handleOnOpenChange: handleOnOpenChange,
166
198
  handleOnClick: handleOnClick,
167
- inlineIndent: inlineIndent
199
+ inlineIndent: inlineIndent,
200
+ userOpenKeys: userOpenKeys,
201
+ userSelectedKey: userSelectedKey
168
202
  });
169
203
  }));
170
204
  };
@@ -177,7 +211,7 @@ var Menu = function Menu(props) {
177
211
  onMouseLeave: handleMouseLeaveMenu,
178
212
  onMouseEnter: handleMouseEnterMenu
179
213
  };
180
- return /*#__PURE__*/React.createElement("div", (0, _extends2.default)({
214
+ return /*#__PURE__*/_react.default.createElement("div", (0, _extends2.default)({
181
215
  className: (0, _classnames.default)(prefixCls, className, (_classNames = {}, (0, _defineProperty2.default)(_classNames, "".concat(prefixCls, "-inline"), mode === 'inline'), (0, _defineProperty2.default)(_classNames, "".concat(prefixCls, "-vertical"), mode !== 'inline'), (0, _defineProperty2.default)(_classNames, "".concat(prefixCls, "-collapsed"), collapsed), (0, _defineProperty2.default)(_classNames, (0, _concat.default)(_context2 = "".concat(prefixCls, "-")).call(_context2, theme === 'light' ? 'light' : 'dark'), true), _classNames)),
182
216
  role: "menu",
183
217
  style: style
@@ -6,5 +6,6 @@ export interface MenuItemProps extends React.HTMLAttributes<HTMLElement> {
6
6
  children?: React.ReactNode;
7
7
  style?: React.CSSProperties;
8
8
  }
9
+ export declare const MENU_ITEM_CONTAINER_NAME = "menu-item-content-container";
9
10
  declare const MenuItem: React.ForwardRefExoticComponent<MenuItemProps & React.RefAttributes<unknown>>;
10
11
  export default MenuItem;
@@ -11,7 +11,7 @@ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequ
11
11
  Object.defineProperty(exports, "__esModule", {
12
12
  value: true
13
13
  });
14
- exports.default = void 0;
14
+ exports.default = exports.MENU_ITEM_CONTAINER_NAME = void 0;
15
15
 
16
16
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/defineProperty"));
17
17
 
@@ -48,13 +48,8 @@ var __rest = void 0 && (void 0).__rest || function (s, e) {
48
48
  return t;
49
49
  };
50
50
 
51
- var renderItemChildren = function renderItemChildren(children) {
52
- if (typeof children === 'string') {
53
- return /*#__PURE__*/React.createElement("span", null, children);
54
- }
55
-
56
- return (0, _util.renderReactNodeFunction)(children);
57
- };
51
+ var MENU_ITEM_CONTAINER_NAME = 'menu-item-content-container';
52
+ exports.MENU_ITEM_CONTAINER_NAME = MENU_ITEM_CONTAINER_NAME;
58
53
 
59
54
  var InternalMenuItem = function InternalMenuItem(props, ref) {
60
55
  var _classNames;
@@ -89,9 +84,20 @@ var InternalMenuItem = function InternalMenuItem(props, ref) {
89
84
  var prefixCls = getPrefixCls(pkgPrefixCls, 'menu-item', customPrefixcls);
90
85
  var menuItemRef = ref || /*#__PURE__*/React.createRef();
91
86
 
87
+ var renderItemChildren = function renderItemChildren(children) {
88
+ if (typeof children === 'string') {
89
+ return /*#__PURE__*/React.createElement("span", {
90
+ className: MENU_ITEM_CONTAINER_NAME
91
+ }, children);
92
+ }
93
+
94
+ return /*#__PURE__*/React.createElement("div", {
95
+ className: MENU_ITEM_CONTAINER_NAME
96
+ }, typeof children === 'function' ? children() : children);
97
+ };
98
+
92
99
  var preventClick = function preventClick() {
93
- if (disabled || mode === 'inline') return true;
94
- return false;
100
+ return !!(disabled || mode === 'inline');
95
101
  };
96
102
 
97
103
  var handleOnMouseEnter = function handleOnMouseEnter(e) {