@kdcloudjs/kdesign 1.3.2 → 1.3.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/CHANGELOG.md +27 -1
  2. package/dist/kdesign-complete.less +171 -103
  3. package/dist/kdesign.css +160 -73
  4. package/dist/kdesign.css.map +1 -1
  5. package/dist/kdesign.js +346 -268
  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/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/checkbox/checkbox.js +20 -12
  15. package/es/config-provider/compDefaultProps.d.ts +0 -1
  16. package/es/config-provider/compDefaultProps.js +1 -2
  17. package/es/menu/menu.d.ts +1 -1
  18. package/es/menu/menu.js +51 -19
  19. package/es/menu/menuItem.d.ts +1 -0
  20. package/es/menu/menuItem.js +14 -10
  21. package/es/menu/style/index.css +139 -53
  22. package/es/menu/style/index.less +101 -69
  23. package/es/menu/style/mixin.less +33 -1
  24. package/es/menu/style/token.less +4 -2
  25. package/es/menu/subMenu.d.ts +1 -1
  26. package/es/menu/subMenu.js +118 -112
  27. package/es/radio/radio.d.ts +1 -1
  28. package/es/radio/radio.js +18 -11
  29. package/es/select/select.js +9 -2
  30. package/lib/button/group.js +2 -1
  31. package/lib/button/style/index.css +20 -19
  32. package/lib/button/style/index.less +29 -27
  33. package/lib/button/style/token.less +4 -4
  34. package/lib/checkbox/checkbox.js +19 -11
  35. package/lib/config-provider/compDefaultProps.d.ts +0 -1
  36. package/lib/config-provider/compDefaultProps.js +1 -2
  37. package/lib/menu/menu.d.ts +1 -1
  38. package/lib/menu/menu.js +57 -23
  39. package/lib/menu/menuItem.d.ts +1 -0
  40. package/lib/menu/menuItem.js +16 -10
  41. package/lib/menu/style/index.css +139 -53
  42. package/lib/menu/style/index.less +101 -69
  43. package/lib/menu/style/mixin.less +33 -1
  44. package/lib/menu/style/token.less +4 -2
  45. package/lib/menu/subMenu.d.ts +1 -1
  46. package/lib/menu/subMenu.js +137 -135
  47. package/lib/radio/radio.d.ts +1 -1
  48. package/lib/radio/radio.js +30 -20
  49. package/lib/select/select.js +9 -2
  50. package/package.json +1 -1
@@ -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/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,20 +63,35 @@ 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,即该值设置只对垂直模式有效
76
+ setOpenKeys = _React$useState4[1];
73
77
 
78
+ useEffect(function () {
79
+ if (userSelectedKey !== undefined) {
80
+ setSelectedKey(userSelectedKey);
81
+ }
82
+ }, [userSelectedKey]);
83
+ useEffect(function () {
84
+ if (userOpenKeys !== undefined) {
85
+ setOpenKeys(userOpenKeys);
86
+ }
87
+ }, [userOpenKeys]);
88
+ useEffect(function () {
89
+ if (Array.isArray(userOpenKeys)) {
90
+ userOpenKeys.forEach(function (d) {
91
+ openSubMenuSet.add(d);
92
+ });
93
+ }
94
+ }, []); // triggerSubMenuAction内嵌模式固定为click,即该值设置只对垂直模式有效
74
95
 
75
96
  if (mode === 'inline') {
76
97
  restProps.triggerSubMenuAction = 'click';
@@ -80,7 +101,9 @@ var Menu = function Menu(props) {
80
101
 
81
102
 
82
103
  var handleOnClick = function handleOnClick(info) {
83
- setSelectedKey(info.key);
104
+ if (userSelectedKey === undefined) {
105
+ setSelectedKey(info.key);
106
+ }
84
107
 
85
108
  if (mode !== 'inline' && openKeys.length > 0) {
86
109
  setOpenKeys([]);
@@ -102,18 +125,24 @@ var Menu = function Menu(props) {
102
125
  }; // 子菜单展开关闭的回调
103
126
 
104
127
 
105
- var handleOnOpenChange = function handleOnOpenChange(openKey) {
106
- var index = openKeys.indexOf(openKey);
128
+ var handleOnOpenChange = function handleOnOpenChange(openKey, isAdd) {
129
+ var clean = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
107
130
 
108
- if (index > -1) {
109
- _spliceInstanceProperty(openKeys).call(openKeys, index, 1);
110
-
111
- setOpenKeys(openKeys);
131
+ if (clean) {
132
+ openSubMenuSet.clear();
112
133
  } else {
113
- setOpenKeys(_concatInstanceProperty(openKeys).call(openKeys, openKey));
134
+ if (isAdd) {
135
+ openSubMenuSet.add(openKey);
136
+ } else {
137
+ openSubMenuSet.delete(openKey);
138
+ }
139
+ }
140
+
141
+ if (userOpenKeys === undefined) {
142
+ setOpenKeys(_toConsumableArray(openSubMenuSet));
114
143
  }
115
144
 
116
- onOpenChange && onOpenChange(openKey);
145
+ onOpenChange && onOpenChange(_toConsumableArray(openSubMenuSet));
117
146
  };
118
147
 
119
148
  var renderMenu = function renderMenu() {
@@ -129,11 +158,14 @@ var Menu = function Menu(props) {
129
158
  mode: mode,
130
159
  openKeys: openKeys,
131
160
  selectedKey: selectedKey,
161
+ theme: theme,
132
162
  triggerSubMenuAction: restProps.triggerSubMenuAction,
133
163
  forceSubMenuRender: forceSubMenuRender,
134
164
  handleOnOpenChange: handleOnOpenChange,
135
165
  handleOnClick: handleOnClick,
136
- inlineIndent: inlineIndent
166
+ inlineIndent: inlineIndent,
167
+ userOpenKeys: userOpenKeys,
168
+ userSelectedKey: userSelectedKey
137
169
  });
138
170
  }));
139
171
  };
@@ -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;
@@ -21,14 +21,7 @@ import { getCompProps } from '../_utils';
21
21
  import classNames from 'classnames';
22
22
  import { renderReactNodeFunction, DEFAUTL_PADDING } from './util';
23
23
  import devWarning from '../_utils/devwarning';
24
-
25
- var renderItemChildren = function renderItemChildren(children) {
26
- if (typeof children === 'string') {
27
- return /*#__PURE__*/React.createElement("span", null, children);
28
- }
29
-
30
- return renderReactNodeFunction(children);
31
- };
24
+ export var MENU_ITEM_CONTAINER_NAME = 'menu-item-content-container';
32
25
 
33
26
  var InternalMenuItem = function InternalMenuItem(props, ref) {
34
27
  var _classNames;
@@ -63,9 +56,20 @@ var InternalMenuItem = function InternalMenuItem(props, ref) {
63
56
  var prefixCls = getPrefixCls(pkgPrefixCls, 'menu-item', customPrefixcls);
64
57
  var menuItemRef = ref || /*#__PURE__*/React.createRef();
65
58
 
59
+ var renderItemChildren = function renderItemChildren(children) {
60
+ if (typeof children === 'string') {
61
+ return /*#__PURE__*/React.createElement("span", {
62
+ className: MENU_ITEM_CONTAINER_NAME
63
+ }, children);
64
+ }
65
+
66
+ return /*#__PURE__*/React.createElement("div", {
67
+ className: MENU_ITEM_CONTAINER_NAME
68
+ }, typeof children === 'function' ? children() : children);
69
+ };
70
+
66
71
  var preventClick = function preventClick() {
67
- if (disabled || mode === 'inline') return true;
68
- return false;
72
+ return !!(disabled || mode === 'inline');
69
73
  };
70
74
 
71
75
  var handleOnMouseEnter = function handleOnMouseEnter(e) {