@kdcloudjs/kdesign 1.3.2 → 1.3.5

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 (80) hide show
  1. package/CHANGELOG.md +43 -1
  2. package/dist/kdesign-complete.less +176 -107
  3. package/dist/kdesign.css +161 -77
  4. package/dist/kdesign.css.map +1 -1
  5. package/dist/kdesign.js +3776 -2037
  6. package/dist/kdesign.js.map +1 -1
  7. package/dist/kdesign.min.css +3 -3
  8. package/dist/kdesign.min.js +8 -8
  9. package/dist/kdesign.min.js.map +1 -1
  10. package/es/_utils/usePopper.d.ts +1 -0
  11. package/es/_utils/usePopper.js +29 -25
  12. package/es/anchor/anchor.js +20 -1
  13. package/es/base-data/style/index.css +1 -0
  14. package/es/base-data/style/index.less +1 -0
  15. package/es/button/group.js +2 -1
  16. package/es/button/style/index.css +20 -19
  17. package/es/button/style/index.less +29 -27
  18. package/es/button/style/token.less +4 -4
  19. package/es/checkbox/checkbox.js +20 -12
  20. package/es/config-provider/compDefaultProps.d.ts +0 -1
  21. package/es/config-provider/compDefaultProps.js +1 -2
  22. package/es/form/Field.js +7 -6
  23. package/es/form/Form.d.ts +1 -0
  24. package/es/form/Form.js +3 -1
  25. package/es/form/interface.d.ts +1 -0
  26. package/es/menu/menu.d.ts +1 -1
  27. package/es/menu/menu.js +55 -22
  28. package/es/menu/menuItem.d.ts +1 -0
  29. package/es/menu/menuItem.js +14 -10
  30. package/es/menu/style/index.css +139 -53
  31. package/es/menu/style/index.less +101 -69
  32. package/es/menu/style/mixin.less +33 -1
  33. package/es/menu/style/token.less +4 -2
  34. package/es/menu/subMenu.d.ts +1 -1
  35. package/es/menu/subMenu.js +126 -119
  36. package/es/radio/radio.d.ts +1 -1
  37. package/es/radio/radio.js +18 -11
  38. package/es/select/select.js +33 -20
  39. package/es/style/core/reset.less +4 -4
  40. package/es/style/index.css +0 -4
  41. package/es/table/feature/useRangeSelection.d.ts +3 -0
  42. package/es/table/feature/useRangeSelection.js +10 -0
  43. package/es/table/interface.d.ts +15 -2
  44. package/es/table/table.js +14 -7
  45. package/lib/_utils/usePopper.d.ts +1 -0
  46. package/lib/_utils/usePopper.js +29 -25
  47. package/lib/anchor/anchor.js +20 -1
  48. package/lib/base-data/style/index.css +1 -0
  49. package/lib/base-data/style/index.less +1 -0
  50. package/lib/button/group.js +2 -1
  51. package/lib/button/style/index.css +20 -19
  52. package/lib/button/style/index.less +29 -27
  53. package/lib/button/style/token.less +4 -4
  54. package/lib/checkbox/checkbox.js +19 -11
  55. package/lib/config-provider/compDefaultProps.d.ts +0 -1
  56. package/lib/config-provider/compDefaultProps.js +1 -2
  57. package/lib/form/Field.js +7 -6
  58. package/lib/form/Form.d.ts +1 -0
  59. package/lib/form/Form.js +3 -1
  60. package/lib/form/interface.d.ts +1 -0
  61. package/lib/menu/menu.d.ts +1 -1
  62. package/lib/menu/menu.js +61 -26
  63. package/lib/menu/menuItem.d.ts +1 -0
  64. package/lib/menu/menuItem.js +16 -10
  65. package/lib/menu/style/index.css +139 -53
  66. package/lib/menu/style/index.less +101 -69
  67. package/lib/menu/style/mixin.less +33 -1
  68. package/lib/menu/style/token.less +4 -2
  69. package/lib/menu/subMenu.d.ts +1 -1
  70. package/lib/menu/subMenu.js +145 -142
  71. package/lib/radio/radio.d.ts +1 -1
  72. package/lib/radio/radio.js +30 -20
  73. package/lib/select/select.js +33 -20
  74. package/lib/style/core/reset.less +4 -4
  75. package/lib/style/index.css +0 -4
  76. package/lib/table/feature/useRangeSelection.d.ts +3 -0
  77. package/lib/table/feature/useRangeSelection.js +21 -0
  78. package/lib/table/interface.d.ts +15 -2
  79. package/lib/table/table.js +15 -7
  80. package/package.json +2 -2
@@ -15,6 +15,7 @@ export interface PopperProps {
15
15
  mouseEnterDelay?: number;
16
16
  mouseLeaveDelay?: number;
17
17
  defaultVisible?: boolean;
18
+ autoPlacement?: boolean;
18
19
  popperClassName?: string;
19
20
  placement?: PlacementType;
20
21
  popperStyle?: React.CSSProperties;
@@ -150,6 +150,8 @@ function usePopper(locatorElement, popperElement, props) {
150
150
  mouseLeaveDelay = _props$mouseLeaveDela === void 0 ? 0.1 : _props$mouseLeaveDela,
151
151
  _props$defaultVisible = props.defaultVisible,
152
152
  defaultVisible = _props$defaultVisible === void 0 ? false : _props$defaultVisible,
153
+ _props$autoPlacement = props.autoPlacement,
154
+ autoPlacement = _props$autoPlacement === void 0 ? true : _props$autoPlacement,
153
155
  _props$getTriggerElem = props.getTriggerElement,
154
156
  getTriggerElement = _props$getTriggerElem === void 0 ? function (locatorNode) {
155
157
  return locatorNode;
@@ -287,36 +289,38 @@ function usePopper(locatorElement, popperElement, props) {
287
289
  var currentPos = trigger === 'contextMenu' ? mousePos : locatorPos;
288
290
  var _currentPlacement = placement;
289
291
 
290
- if (top - gap - popperHeight <= 5 && bottom + gap + popperHeight < document.body.clientHeight - 5) {
291
- _currentPlacement = _currentPlacement.replace('top', 'bottom');
292
- }
292
+ if (autoPlacement) {
293
+ if (top - gap - popperHeight <= 5 && bottom + gap + popperHeight < document.body.clientHeight - 5) {
294
+ _currentPlacement = _currentPlacement.replace('top', 'bottom');
295
+ }
293
296
 
294
- if (bottom + gap + popperHeight >= document.body.clientHeight - 5 && top - gap - popperHeight > 5) {
295
- _currentPlacement = _currentPlacement.replace('bottom', 'top');
296
- }
297
+ if (bottom + gap + popperHeight >= document.body.clientHeight - 5 && top - gap - popperHeight > 5) {
298
+ _currentPlacement = _currentPlacement.replace('bottom', 'top');
299
+ }
297
300
 
298
- if (left + popperWidth >= document.body.clientWidth - 5 && right - popperWidth > 5) {
299
- _currentPlacement = _currentPlacement.replace('Left', 'Right');
300
- }
301
+ if (left + popperWidth >= document.body.clientWidth - 5 && right - popperWidth > 5) {
302
+ _currentPlacement = _currentPlacement.replace('Left', 'Right');
303
+ }
301
304
 
302
- if (right - popperWidth <= 5 && left + popperWidth < document.body.clientWidth - 5) {
303
- _currentPlacement = _currentPlacement.replace('Right', 'Left');
304
- }
305
+ if (right - popperWidth <= 5 && left + popperWidth < document.body.clientWidth - 5) {
306
+ _currentPlacement = _currentPlacement.replace('Right', 'Left');
307
+ }
305
308
 
306
- if (top + popperHeight >= document.body.clientHeight - 5 && bottom - popperHeight > 5) {
307
- _currentPlacement = _currentPlacement.replace('Top', 'Bottom');
308
- }
309
+ if (top + popperHeight >= document.body.clientHeight - 5 && bottom - popperHeight > 5) {
310
+ _currentPlacement = _currentPlacement.replace('Top', 'Bottom');
311
+ }
309
312
 
310
- if (bottom - popperHeight <= 5 && top + popperHeight < document.body.clientHeight - 5) {
311
- _currentPlacement = _currentPlacement.replace('Bottom', 'Top');
312
- }
313
+ if (bottom - popperHeight <= 5 && top + popperHeight < document.body.clientHeight - 5) {
314
+ _currentPlacement = _currentPlacement.replace('Bottom', 'Top');
315
+ }
313
316
 
314
- if (left - gap - popperWidth <= 5 && right + gap + popperWidth < document.body.clientWidth - 5) {
315
- _currentPlacement = _currentPlacement.replace('left', 'right');
316
- }
317
+ if (left - gap - popperWidth <= 5 && right + gap + popperWidth < document.body.clientWidth - 5) {
318
+ _currentPlacement = _currentPlacement.replace('left', 'right');
319
+ }
317
320
 
318
- if (right + gap + popperWidth >= document.body.clientWidth - 5 && left - gap - popperWidth > 5) {
319
- _currentPlacement = _currentPlacement.replace('right', 'left');
321
+ if (right + gap + popperWidth >= document.body.clientWidth - 5 && left - gap - popperWidth > 5) {
322
+ _currentPlacement = _currentPlacement.replace('right', 'left');
323
+ }
320
324
  }
321
325
 
322
326
  var leftLeft = currentPos.left - popperWidth - gap;
@@ -429,7 +433,7 @@ function usePopper(locatorElement, popperElement, props) {
429
433
  setArrowPos(_arrowPos);
430
434
  setCurrentPlacement(_currentPlacement);
431
435
  }
432
- }, [locatorRef, popperRef, container, trigger, mousePos, placement, gap, arrowOffset, arrowSize, arrowWidth]);
436
+ }, [locatorRef, popperRef, container, trigger, mousePos, placement, gap, arrowOffset, arrowSize, arrowWidth, autoPlacement]);
433
437
  useEffect(function () {
434
438
  if (canAlign) {
435
439
  alignPopper();
@@ -444,7 +448,7 @@ function usePopper(locatorElement, popperElement, props) {
444
448
 
445
449
  var popperContainerStyle = _extends(_extends(_extends({
446
450
  position: 'absolute'
447
- }, popperStyle), align), arrow ? arrowStyle : {});
451
+ }, align), arrow ? arrowStyle : {}), popperStyle);
448
452
 
449
453
  var popperProps = {
450
454
  ref: popperRef,
@@ -320,7 +320,9 @@ var InternalAnchor = function InternalAnchor(props, ref) {
320
320
  !isLocked && setOptionShow(visible);
321
321
  };
322
322
 
323
- var popperProps = _extends(_extends({}, anchorProps), {
323
+ var popperProps = _extends(_extends({
324
+ autoPlacement: false
325
+ }, anchorProps), {
324
326
  prefixCls: anchorPrefixCls,
325
327
  defaultVisible: optionShow,
326
328
  visible: optionShow,
@@ -328,6 +330,22 @@ var InternalAnchor = function InternalAnchor(props, ref) {
328
330
  onVisibleChange: handleVisibleChange
329
331
  });
330
332
 
333
+ var fixedRef = React.useRef(null);
334
+
335
+ if (type === 'advanced' && isLocked) {
336
+ if (fixedRef.current) {
337
+ var _fixedRef$current$get = fixedRef.current.getBoundingClientRect(),
338
+ left = _fixedRef$current$get.left,
339
+ top = _fixedRef$current$get.top;
340
+
341
+ popperProps.popperStyle = {
342
+ position: 'fixed',
343
+ left: left,
344
+ top: top
345
+ };
346
+ }
347
+ }
348
+
331
349
  var addChildrenProps = function addChildrenProps(linksChildren) {
332
350
  var _context4;
333
351
 
@@ -456,6 +474,7 @@ var InternalAnchor = function InternalAnchor(props, ref) {
456
474
  type: "lock-solid"
457
475
  });
458
476
  return /*#__PURE__*/React.createElement("div", {
477
+ ref: fixedRef,
459
478
  className: anchorAdvancedClass,
460
479
  style: dropdownStyle
461
480
  }, lockedIcon !== false && /*#__PURE__*/React.createElement("span", {
@@ -222,6 +222,7 @@
222
222
  }
223
223
  .kd-baseData-dropdown-options {
224
224
  height: var(--kd-c-base-data-dropdown-options-sizing-height, 32px);
225
+ cursor: pointer;
225
226
  }
226
227
  .kd-baseData-dropdown-options:hover {
227
228
  background: var(--kd-c-base-data-color-background-hover, var(--kd-g-color-hover, #f5f5f5));
@@ -115,6 +115,7 @@
115
115
 
116
116
  &-options {
117
117
  height: @base-data-dropdown-options-height;
118
+ cursor: pointer;
118
119
 
119
120
  &:hover {
120
121
  background: @base-data-hover-bg;
@@ -111,7 +111,8 @@ var InternalButtonGroup = function InternalButtonGroup(props, ref) {
111
111
 
112
112
  var popperProps = _extends(_extends({
113
113
  placement: 'bottomLeft',
114
- trigger: 'click'
114
+ trigger: 'click',
115
+ gap: 0
115
116
  }, buttonGoupProps), {
116
117
  prefixCls: btnGroupPrefixCls,
117
118
  defaultVisible: optionShow,
@@ -354,35 +354,36 @@
354
354
  .kd-btn-group-basic-icon {
355
355
  margin-left: 4px;
356
356
  }
357
- .kd-btn-group-trigger .kd-btn-primary {
358
- background: var(--kd-c-button-group-trigger-color-background, #4367c1);
357
+ .kd-btn-group-similar .kd-btn-group-trigger .kd-btn {
358
+ border-top-left-radius: 0;
359
+ border-bottom-left-radius: 0;
360
+ margin-left: -1px;
359
361
  }
360
- .kd-btn-group-trigger .kd-btn-primary:hover {
361
- background: var(--kd-c-button-group-trigger-color-background-hover, #4c74da);
362
- border-color: var(--kd-c-button-group-trigger-color-background-hover, #4c74da);
362
+ .kd-btn-group-similar .kd-btn-group-trigger .kd-btn-primary {
363
+ background: var(--kd-c-button-group-trigger-color-background, var(--kd-g-color-theme-7, #375cca));
363
364
  }
364
- .kd-btn-group-trigger .kd-btn-primary:active {
365
- background: var(--kd-c-button-group-trigger-color-background-active, #3B5AA9);
365
+ .kd-btn-group-similar .kd-btn-group-trigger .kd-btn-primary:hover {
366
+ background: var(--kd-c-button-group-trigger-color-background-hover, var(--kd-g-color-theme-6, #5582f3));
367
+ border-color: var(--kd-c-button-group-trigger-color-background-hover, var(--kd-g-color-theme-6, #5582f3));
366
368
  }
367
- .kd-btn-group-trigger .kd-btn-primary:disabled {
368
- background: var(--kd-c-button-group-trigger-color-background-disabled, #95a4c8) !important;
369
+ .kd-btn-group-similar .kd-btn-group-trigger .kd-btn-primary:active {
370
+ background: var(--kd-c-button-group-trigger-color-background-active, var(--kd-g-color-theme-8, #1f3ba1));
369
371
  }
370
- .kd-btn-group-trigger .kd-btn {
371
- margin-left: -1px;
372
+ .kd-btn-group-similar .kd-btn-group-trigger .kd-btn-primary:disabled {
373
+ background: var(--kd-c-button-group-trigger-color-background-disabled, var(--kd-g-color-theme-5, #87adff)) !important;
374
+ }
375
+ .kd-btn-group-similar > .kd-btn:first-child {
376
+ border-top-right-radius: 0;
377
+ border-bottom-right-radius: 0;
378
+ }
379
+ .kd-btn-group-similar > .kd-btn:first-child:hover {
380
+ z-index: 1;
372
381
  }
373
382
  .kd-btn-group .kd-btn-size-small,
374
383
  .kd-btn-group .kd-btn-size-middle,
375
384
  .kd-btn-group .kd-btn-size-large {
376
385
  min-width: unset;
377
386
  }
378
- .kd-btn-group .kd-btn:first-child {
379
- border-top-right-radius: 0;
380
- border-bottom-right-radius: 0;
381
- }
382
- .kd-btn-group .kd-btn:last-child {
383
- border-top-left-radius: 0;
384
- border-bottom-left-radius: 0;
385
- }
386
387
  .kd-btn-group .kd-dropdown-menu {
387
388
  padding: 0;
388
389
  }
@@ -259,25 +259,37 @@
259
259
  }
260
260
  }
261
261
 
262
- &-trigger {
263
- .@{btn-prefix-cls}-primary {
264
- background: @btn-group-trigger-color-background;
265
- &:hover {
266
- background: @btn-group-trigger-color-background-hover;
267
- border-color: @btn-group-trigger-color-background-hover;
268
- }
269
-
270
- &:active {
271
- background: @btn-group-trigger-color-background-active;
272
- }
273
-
274
- &:disabled {
275
- background: @btn-group-trigger-color-background-disabled !important;
262
+ &-similar {
263
+ .@{btn-prefix-cls}-group-trigger {
264
+ .@{btn-prefix-cls} {
265
+ border-top-left-radius: 0;
266
+ border-bottom-left-radius: 0;
267
+ margin-left: -1px;
268
+ &-primary {
269
+ background: @btn-group-trigger-color-background;
270
+ &:hover {
271
+ background: @btn-group-trigger-color-background-hover;
272
+ border-color: @btn-group-trigger-color-background-hover;
273
+ }
274
+
275
+ &:active {
276
+ background: @btn-group-trigger-color-background-active;
277
+ }
278
+
279
+ &:disabled {
280
+ background: @btn-group-trigger-color-background-disabled !important;
281
+ }
282
+ }
276
283
  }
277
284
  }
278
-
279
- .@{btn-prefix-cls} {
280
- margin-left: -1px;
285
+ &>.@{btn-prefix-cls} {
286
+ &:first-child {
287
+ border-top-right-radius: 0;
288
+ border-bottom-right-radius: 0;
289
+ &:hover {
290
+ z-index: 1;
291
+ }
292
+ }
281
293
  }
282
294
  }
283
295
 
@@ -287,16 +299,6 @@
287
299
  &-size-large {
288
300
  min-width: unset;
289
301
  }
290
-
291
- &:first-child {
292
- border-top-right-radius: 0;
293
- border-bottom-right-radius: 0;
294
- }
295
-
296
- &:last-child {
297
- border-top-left-radius: 0;
298
- border-bottom-left-radius: 0;
299
- }
300
302
  }
301
303
 
302
304
  .@{kd-prefix}-dropdown {
@@ -61,10 +61,10 @@
61
61
  @btn-group-dropdown-item-border-color: var(~'@{button-custom-prefix}-group-dropdown-item-border-color', #E5E5E5); // 集合按钮 下拉边框颜色
62
62
  @btn-group-dropdown-item-color-background-hover: var(~'@{button-custom-prefix}-group-dropdown-item-color-background-hover', #F5F5F5); // 集合按钮 下拉hover背景颜色
63
63
  @btn-group-dropdown-color-background: var(~'@{button-custom-prefix}-group-dropdown-color-background', #fff); // 集合按钮 下拉菜单背景颜色
64
- @btn-group-trigger-color-background: var(~'@{button-custom-prefix}-group-trigger-color-background', #4367c1);
65
- @btn-group-trigger-color-background-hover: var(~'@{button-custom-prefix}-group-trigger-color-background-hover', #4c74da);
66
- @btn-group-trigger-color-background-active: var(~'@{button-custom-prefix}-group-trigger-color-background-active', #3B5AA9);
67
- @btn-group-trigger-color-background-disabled: var(~'@{button-custom-prefix}-group-trigger-color-background-disabled', #95a4c8);
64
+ @btn-group-trigger-color-background: var(~'@{button-custom-prefix}-group-trigger-color-background', @color-theme-7);
65
+ @btn-group-trigger-color-background-hover: var(~'@{button-custom-prefix}-group-trigger-color-background-hover', @color-theme-6);
66
+ @btn-group-trigger-color-background-active: var(~'@{button-custom-prefix}-group-trigger-color-background-active', @color-theme-8);
67
+ @btn-group-trigger-color-background-disabled: var(~'@{button-custom-prefix}-group-trigger-color-background-disabled', @color-theme-5);
68
68
 
69
69
  // font
70
70
  @btn-g-font-weight: var(~'@{button-custom-prefix}-font-weight', @font-weight-light);
@@ -1,7 +1,7 @@
1
1
  import _defineProperty from "@babel/runtime-corejs3/helpers/defineProperty";
2
2
  import _slicedToArray from "@babel/runtime-corejs3/helpers/slicedToArray";
3
3
  import _concatInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/concat";
4
- import React, { useCallback, useContext, useEffect } from 'react';
4
+ import React, { useCallback, useContext, useEffect, useState, useRef } from 'react';
5
5
  import classNames from 'classnames';
6
6
  import ConfigContext from '../config-provider/ConfigContext';
7
7
  import { getCompProps } from '../_utils';
@@ -39,11 +39,12 @@ var InternalCheckbox = function InternalCheckbox(props, ref) {
39
39
  return isBoolean(checked) ? checked : defaultChecked;
40
40
  };
41
41
 
42
- var _React$useState = React.useState(getChecked()),
43
- _React$useState2 = _slicedToArray(_React$useState, 2),
44
- selected = _React$useState2[0],
45
- setSelected = _React$useState2[1];
42
+ var _useState = useState(getChecked()),
43
+ _useState2 = _slicedToArray(_useState, 2),
44
+ selected = _useState2[0],
45
+ setSelected = _useState2[1];
46
46
 
47
+ var labelRef = useRef(null);
47
48
  devWarning(CheckboxTypes.indexOf(checkboxType) === -1, 'checkbox', "cannot found checkbox type '".concat(checkboxType, "'"));
48
49
  devWarning(CheckboxSizes.indexOf(size) === -1, 'checkbox', "cannot found size type '".concat(size, "'"));
49
50
  var checkboxPrefixCls = getPrefixCls(prefixCls, 'checkbox', customPrefixcls);
@@ -70,14 +71,21 @@ var InternalCheckbox = function InternalCheckbox(props, ref) {
70
71
  useEffect(function () {
71
72
  isBoolean(checked) && checked !== selected && setSelected(checked);
72
73
  }, [checked, selected]);
74
+ useEffect(function () {
75
+ var handleRepeatClick = function handleRepeatClick(e) {
76
+ var element = e.target;
73
77
 
74
- var handleRepeatClick = function handleRepeatClick(e) {
75
- var element = e.target;
78
+ if (element.tagName !== 'INPUT') {
79
+ e.stopPropagation();
80
+ }
81
+ };
76
82
 
77
- if (element.tagName !== 'INPUT') {
78
- e.stopPropagation();
79
- }
80
- };
83
+ labelRef.current.addEventListener('click', handleRepeatClick);
84
+ return function () {
85
+ // eslint-disable-next-line react-hooks/exhaustive-deps
86
+ labelRef.current.removeEventListener('click', handleRepeatClick);
87
+ };
88
+ }, []);
81
89
 
82
90
  var getDefaultCheckbox = function getDefaultCheckbox() {
83
91
  var _context19, _context20;
@@ -88,7 +96,7 @@ var InternalCheckbox = function InternalCheckbox(props, ref) {
88
96
  React.createElement("label", {
89
97
  className: getRootClassName,
90
98
  style: style,
91
- onClick: handleRepeatClick
99
+ ref: labelRef
92
100
  }, /*#__PURE__*/React.createElement("span", {
93
101
  className: checkedWrapperClassName
94
102
  }, selected && /*#__PURE__*/React.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;
@@ -137,8 +137,7 @@ var compDefaultProps = {
137
137
  borderType: 'underline',
138
138
  mode: 'single',
139
139
  defaultOpen: false,
140
- showArrow: true,
141
- showSearch: false
140
+ showArrow: true
142
141
  },
143
142
  Image: {
144
143
  preview: true
package/es/form/Field.js CHANGED
@@ -98,7 +98,8 @@ var Field = function Field(props) {
98
98
  getInternalHooks = fieldContext.getInternalHooks,
99
99
  vertical = fieldContext.vertical,
100
100
  getDefaultValue = fieldContext.getDefaultValue,
101
- local = fieldContext.local;
101
+ local = fieldContext.local,
102
+ formDisabled = fieldContext.disabled;
102
103
 
103
104
  var _getInternalHooks = getInternalHooks(INTERNAL_HOOK_KEY),
104
105
  registerField = _getInternalHooks.registerField,
@@ -264,17 +265,17 @@ var Field = function Field(props) {
264
265
  chDisabled = _ch$props.disabled,
265
266
  chDefaultValue = _ch$props.defaultValue;
266
267
 
267
- var onChange = function onChange(evt) {
268
+ var onChange = function onChange() {
268
269
  if (chValue === undefined) {
269
- setFieldValue(getInputValueFormProp(evt));
270
+ setFieldValue(getInputValueFormProp(arguments.length <= 0 ? undefined : arguments[0]));
270
271
  }
271
272
 
272
273
  if (typeof faChange === 'function') {
273
- faChange(evt);
274
+ faChange.apply(void 0, arguments);
274
275
  }
275
276
 
276
277
  if (typeof chChange === 'function') {
277
- chChange(evt);
278
+ chChange.apply(void 0, arguments);
278
279
  }
279
280
  };
280
281
 
@@ -292,7 +293,7 @@ var Field = function Field(props) {
292
293
  return _extends(_extends({}, rest), (_extends3 = {
293
294
  onChange: onChange,
294
295
  defaultValue: defaultValue
295
- }, _defineProperty(_extends3, innerValuePropName, fieldValue), _defineProperty(_extends3, "disabled", chDisabled || faDisabled), _extends3));
296
+ }, _defineProperty(_extends3, innerValuePropName, fieldValue), _defineProperty(_extends3, "disabled", chDisabled !== undefined ? chDisabled : faDisabled !== undefined ? faDisabled : formDisabled), _extends3));
296
297
  };
297
298
 
298
299
  return /*#__PURE__*/React.createElement("div", {
package/es/form/Form.d.ts CHANGED
@@ -4,6 +4,7 @@ declare type BaseFormProps = Omit<React.FormHTMLAttributes<HTMLFormElement>, 'on
4
4
  export interface FormProps<Values = any> extends BaseFormProps {
5
5
  children?: React.ReactNode;
6
6
  defaultValues?: Store;
7
+ disabled?: boolean;
7
8
  className?: string;
8
9
  form?: FormInstance<Values>;
9
10
  labelAlign?: LabelAlign;
package/es/form/Form.js CHANGED
@@ -52,7 +52,8 @@ var Form = function Form(props, ref) {
52
52
  onFinish = formProps.onFinish,
53
53
  onFinishFailed = formProps.onFinishFailed,
54
54
  onValuesChange = formProps.onValuesChange,
55
- restProps = __rest(formProps, ["children", "defaultValues", "className", "form", "labelAlign", "labelWidth", "layout", "name", "prefixCls", "wrapperWidth", "onFinish", "onFinishFailed", "onValuesChange"]);
55
+ disabled = formProps.disabled,
56
+ restProps = __rest(formProps, ["children", "defaultValues", "className", "form", "labelAlign", "labelWidth", "layout", "name", "prefixCls", "wrapperWidth", "onFinish", "onFinishFailed", "onValuesChange", "disabled"]);
56
57
 
57
58
  var formPrefixCls = getPrefixCls(prefixCls, 'form', customizePrefixCls);
58
59
  var formClassName = classnames((_classnames = {}, _defineProperty(_classnames, "".concat(formPrefixCls), true), _defineProperty(_classnames, _concatInstanceProperty(_context = "".concat(formPrefixCls, "-")).call(_context, layout), true), _classnames), className);
@@ -90,6 +91,7 @@ var Form = function Form(props, ref) {
90
91
  labelWidth: labelWidth,
91
92
  wrapperWidth: wrapperWidth,
92
93
  local: formLang,
94
+ disabled: disabled,
93
95
  vertical: layout === 'vertical'
94
96
  });
95
97
  }, [formInstance, labelAlign, labelWidth, wrapperWidth, layout, formLang]);
@@ -34,6 +34,7 @@ export interface InternalFormInstance extends FormInstance {
34
34
  labelAlign?: LabelAlign;
35
35
  wrapperWidth?: string | number;
36
36
  vertical?: boolean;
37
+ disabled?: boolean;
37
38
  local?: InnerLocale;
38
39
  getInternalHooks: (key: string) => InternalHooks | null;
39
40
  }
package/es/menu/menu.d.ts CHANGED
@@ -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/es/menu/menu.js CHANGED
@@ -1,10 +1,11 @@
1
1
  import _defineProperty from "@babel/runtime-corejs3/helpers/defineProperty";
2
2
  import _extends from "@babel/runtime-corejs3/helpers/extends";
3
+ import _toConsumableArray from "@babel/runtime-corejs3/helpers/toConsumableArray";
3
4
  import _slicedToArray from "@babel/runtime-corejs3/helpers/slicedToArray";
4
5
  import _Object$getOwnPropertySymbols from "@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols";
5
- import _spliceInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/splice";
6
- import _concatInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/concat";
6
+ import _Set from "@babel/runtime-corejs3/core-js-stable/set";
7
7
  import _mapInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/map";
8
+ import _concatInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/concat";
8
9
 
9
10
  var __rest = this && this.__rest || function (s, e) {
10
11
  var t = {};
@@ -19,7 +20,7 @@ var __rest = this && this.__rest || function (s, e) {
19
20
  return t;
20
21
  };
21
22
 
22
- import * as React from 'react';
23
+ import React, { useEffect } from 'react';
23
24
  import { toArray } from '../_utils/react-children';
24
25
  import { ConfigContext } from '../config-provider';
25
26
  import { getCompProps } from '../_utils';
@@ -32,6 +33,8 @@ var isFunction = function isFunction(fn) {
32
33
  return fn && typeof fn === 'function';
33
34
  };
34
35
 
36
+ var openSubMenuSet = new _Set();
37
+
35
38
  var Menu = function Menu(props) {
36
39
  var _context2, _classNames;
37
40
 
@@ -42,6 +45,9 @@ var Menu = function Menu(props) {
42
45
  pkgPrefixCls = _React$useContext.prefixCls,
43
46
  userDefaultProps = _React$useContext.compDefaultProps;
44
47
 
48
+ var userSelectedKey = props.selectedKey,
49
+ userOpenKeys = props.openKeys;
50
+
45
51
  var _b = getCompProps('Menu', userDefaultProps, props),
46
52
  customPrefixcls = _b.prefixCls,
47
53
  mode = _b.mode,
@@ -57,30 +63,48 @@ var Menu = function Menu(props) {
57
63
  restProps = __rest(_b, ["prefixCls", "mode", "inlineIndent", "forceSubMenuRender", "additionalTools", "onClick", "onOpenChange", "children", "className", "theme", "collapsed"]);
58
64
 
59
65
  var prefixCls = getPrefixCls(pkgPrefixCls, 'menu', customPrefixcls);
60
- devWarning(['inline', 'vertical', undefined].indexOf(mode) === -1, 'menu', "cannot found menu mode '".concat(mode, "'"));
61
- var defaultSelectedKey = ('selectedKey' in restProps ? restProps.selectedKey : restProps.defaultSelectedKey) || '';
62
- var defaultOpenKeys = ('openKeys' in restProps ? restProps.openKeys : restProps.defaultOpenKeys) || []; // const [collapsed, setCollapsed] = React.useState<boolean | undefined>(restProps.collapsed)
66
+ devWarning(['inline', 'vertical', undefined].indexOf(mode) === -1, 'menu', "cannot found menu mode '".concat(mode, "'")); // const [collapsed, setCollapsed] = React.useState<boolean | undefined>(restProps.collapsed)
63
67
 
64
- var _React$useState = React.useState(defaultSelectedKey),
68
+ var _React$useState = React.useState(''),
65
69
  _React$useState2 = _slicedToArray(_React$useState, 2),
66
70
  selectedKey = _React$useState2[0],
67
71
  setSelectedKey = _React$useState2[1];
68
72
 
69
- var _React$useState3 = React.useState(defaultOpenKeys),
73
+ var _React$useState3 = React.useState([]),
70
74
  _React$useState4 = _slicedToArray(_React$useState3, 2),
71
75
  openKeys = _React$useState4[0],
72
- setOpenKeys = _React$useState4[1]; // triggerSubMenuAction内嵌模式固定为click,即该值设置只对垂直模式有效
73
-
76
+ setOpenKeys = _React$useState4[1];
74
77
 
75
78
  if (mode === 'inline') {
76
79
  restProps.triggerSubMenuAction = 'click';
77
- } // React.useEffect(() => {
80
+ }
81
+
82
+ useEffect(function () {
83
+ setOpenKeys([]);
84
+ setSelectedKey('');
85
+ openSubMenuSet.clear();
86
+ }, [mode]);
87
+ useEffect(function () {
88
+ if (userSelectedKey !== undefined) {
89
+ setSelectedKey(userSelectedKey);
90
+ }
91
+ }, [userSelectedKey]);
92
+ useEffect(function () {
93
+ if (userOpenKeys !== undefined && Array.isArray(userOpenKeys)) {
94
+ setOpenKeys(userOpenKeys);
95
+ openSubMenuSet.clear();
96
+ userOpenKeys.forEach(function (d) {
97
+ openSubMenuSet.add(d);
98
+ });
99
+ }
100
+ }, [userOpenKeys]); // React.useEffect(() => {
78
101
  // setCollapsed(restProps.collapsed)
79
102
  // }, [restProps.collapsed])
80
103
 
81
-
82
104
  var handleOnClick = function handleOnClick(info) {
83
- setSelectedKey(info.key);
105
+ if (userSelectedKey === undefined) {
106
+ setSelectedKey(info.key);
107
+ }
84
108
 
85
109
  if (mode !== 'inline' && openKeys.length > 0) {
86
110
  setOpenKeys([]);
@@ -102,18 +126,24 @@ var Menu = function Menu(props) {
102
126
  }; // 子菜单展开关闭的回调
103
127
 
104
128
 
105
- var handleOnOpenChange = function handleOnOpenChange(openKey) {
106
- var index = openKeys.indexOf(openKey);
129
+ var handleOnOpenChange = function handleOnOpenChange(openKey, isAdd) {
130
+ var clean = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
107
131
 
108
- if (index > -1) {
109
- _spliceInstanceProperty(openKeys).call(openKeys, index, 1);
110
-
111
- setOpenKeys(openKeys);
132
+ if (clean) {
133
+ openSubMenuSet.clear();
112
134
  } else {
113
- setOpenKeys(_concatInstanceProperty(openKeys).call(openKeys, openKey));
135
+ if (isAdd) {
136
+ openSubMenuSet.add(openKey);
137
+ } else {
138
+ openSubMenuSet.delete(openKey);
139
+ }
140
+ }
141
+
142
+ if (userOpenKeys === undefined) {
143
+ setOpenKeys(_toConsumableArray(openSubMenuSet));
114
144
  }
115
145
 
116
- onOpenChange && onOpenChange(openKey);
146
+ onOpenChange && onOpenChange(_toConsumableArray(openSubMenuSet));
117
147
  };
118
148
 
119
149
  var renderMenu = function renderMenu() {
@@ -129,11 +159,14 @@ var Menu = function Menu(props) {
129
159
  mode: mode,
130
160
  openKeys: openKeys,
131
161
  selectedKey: selectedKey,
162
+ theme: theme,
132
163
  triggerSubMenuAction: restProps.triggerSubMenuAction,
133
164
  forceSubMenuRender: forceSubMenuRender,
134
165
  handleOnOpenChange: handleOnOpenChange,
135
166
  handleOnClick: handleOnClick,
136
- inlineIndent: inlineIndent
167
+ inlineIndent: inlineIndent,
168
+ userOpenKeys: userOpenKeys,
169
+ userSelectedKey: userSelectedKey
137
170
  });
138
171
  }));
139
172
  };
@@ -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;