rsuite 5.0.0-beta.5 → 5.0.0

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 (194) hide show
  1. package/Animation/styles/index.less +16 -16
  2. package/Animation/styles/mixin.less +2 -2
  3. package/Button/styles/index.less +36 -1
  4. package/Button/styles/mixin.less +7 -1
  5. package/CHANGELOG.md +47 -4
  6. package/Calendar/styles/index.less +7 -1
  7. package/Checkbox/styles/index.less +18 -2
  8. package/DatePicker/styles/index.less +6 -2
  9. package/Drawer/styles/index.less +11 -2
  10. package/Drawer/styles/mixin.less +2 -2
  11. package/Dropdown/styles/index.less +4 -0
  12. package/Form/styles/mixin.less +6 -0
  13. package/InputGroup/styles/index.less +4 -0
  14. package/Message/styles/index.less +16 -0
  15. package/Modal/styles/index.less +3 -2
  16. package/Nav/styles/index.less +18 -2
  17. package/Navbar/styles/index.less +68 -34
  18. package/Notification/styles/index.less +9 -3
  19. package/Pagination/styles/index.less +12 -1
  20. package/Pagination/styles/mixin.less +7 -0
  21. package/Picker/styles/index.less +25 -3
  22. package/Picker/styles/mixin.less +7 -2
  23. package/Popover/styles/index.less +23 -30
  24. package/Popover/styles/mixins.less +72 -0
  25. package/README.md +4 -4
  26. package/Radio/styles/index.less +16 -0
  27. package/RadioGroup/styles/index.less +4 -0
  28. package/Rate/styles/index.less +13 -2
  29. package/Ripple/styles/index.less +8 -4
  30. package/Sidenav/styles/index.less +160 -47
  31. package/Table/styles/index.less +8 -0
  32. package/TagInput/package.json +7 -0
  33. package/TagInput/styles/index.less +13 -0
  34. package/Toggle/styles/index.less +29 -19
  35. package/Tooltip/styles/index.less +32 -38
  36. package/Tooltip/styles/mixins.less +72 -0
  37. package/Uploader/styles/index.less +11 -1
  38. package/cjs/@types/common.d.ts +2 -0
  39. package/cjs/Animation/Bounce.js +10 -4
  40. package/cjs/Animation/Collapse.d.ts +1 -48
  41. package/cjs/Animation/Collapse.js +60 -106
  42. package/cjs/Animation/Fade.js +10 -5
  43. package/cjs/Animation/Slide.js +8 -4
  44. package/cjs/Carousel/Carousel.d.ts +7 -0
  45. package/cjs/Carousel/Carousel.js +24 -11
  46. package/cjs/CheckTree/index.js +14 -5
  47. package/cjs/CheckTreePicker/CheckTreePicker.js +9 -5
  48. package/cjs/DatePicker/DatePicker.d.ts +5 -1
  49. package/cjs/DatePicker/DatePicker.js +2 -13
  50. package/cjs/DateRangePicker/Calendar.d.ts +2 -1
  51. package/cjs/DateRangePicker/Calendar.js +4 -3
  52. package/cjs/DateRangePicker/DateRangePicker.d.ts +1 -1
  53. package/cjs/DateRangePicker/DateRangePicker.js +58 -43
  54. package/cjs/DateRangePicker/utils.d.ts +1 -1
  55. package/cjs/DateRangePicker/utils.js +9 -5
  56. package/cjs/Dropdown/Dropdown.js +31 -18
  57. package/cjs/Dropdown/DropdownContext.d.ts +4 -1
  58. package/cjs/Dropdown/DropdownItem.js +31 -4
  59. package/cjs/Dropdown/DropdownState.d.ts +37 -0
  60. package/cjs/Dropdown/DropdownState.js +66 -0
  61. package/cjs/Dropdown/DropdownToggle.js +3 -6
  62. package/cjs/InputNumber/InputNumber.js +11 -10
  63. package/cjs/InputPicker/InputPicker.d.ts +16 -3
  64. package/cjs/InputPicker/InputPicker.js +85 -44
  65. package/cjs/List/ListItem.d.ts +1 -1
  66. package/cjs/Menu/MenuItem.js +1 -1
  67. package/cjs/MultiCascader/MultiCascader.js +4 -3
  68. package/cjs/Nav/NavItem.js +11 -63
  69. package/cjs/Navbar/NavbarItem.d.ts +19 -0
  70. package/cjs/Navbar/NavbarItem.js +93 -0
  71. package/cjs/Pagination/Pagination.js +1 -1
  72. package/cjs/Picker/PickerToggle.js +2 -2
  73. package/cjs/Picker/utils.d.ts +1 -1
  74. package/cjs/Picker/utils.js +26 -22
  75. package/cjs/Progress/ProgressCircle.js +15 -15
  76. package/cjs/SelectPicker/SelectPicker.d.ts +1 -3
  77. package/cjs/Sidenav/SidenavDropdown.js +6 -1
  78. package/cjs/Sidenav/SidenavItem.js +46 -12
  79. package/cjs/Slider/Slider.js +2 -1
  80. package/cjs/TagInput/index.d.ts +13 -0
  81. package/cjs/TagInput/index.js +58 -0
  82. package/cjs/TagPicker/index.d.ts +10 -2
  83. package/cjs/TagPicker/index.js +25 -6
  84. package/cjs/Tree/Tree.d.ts +0 -2
  85. package/cjs/Tree/Tree.js +13 -4
  86. package/cjs/Tree/TreeContext.d.ts +7 -0
  87. package/cjs/Tree/TreeContext.js +13 -0
  88. package/cjs/TreePicker/TreeNode.js +10 -3
  89. package/cjs/TreePicker/TreePicker.js +22 -10
  90. package/cjs/Uploader/UploadFileItem.d.ts +5 -0
  91. package/cjs/Uploader/UploadFileItem.js +4 -3
  92. package/cjs/Uploader/Uploader.d.ts +8 -3
  93. package/cjs/Uploader/Uploader.js +12 -6
  94. package/cjs/index.d.ts +2 -0
  95. package/cjs/index.js +5 -1
  96. package/cjs/utils/ajaxUpload.d.ts +5 -1
  97. package/cjs/utils/ajaxUpload.js +24 -13
  98. package/cjs/utils/constants.d.ts +1 -0
  99. package/cjs/utils/constants.js +1 -0
  100. package/cjs/utils/dateUtils.d.ts +1 -0
  101. package/cjs/utils/dateUtils.js +5 -1
  102. package/cjs/utils/useInternalId.d.ts +4 -0
  103. package/cjs/utils/useInternalId.js +24 -0
  104. package/cjs/utils/useUniqueId.d.ts +1 -1
  105. package/cjs/utils/useUniqueId.js +1 -1
  106. package/dist/rsuite-rtl.css +1614 -221
  107. package/dist/rsuite-rtl.min.css +1 -1
  108. package/dist/rsuite-rtl.min.css.map +1 -1
  109. package/dist/rsuite.css +1618 -221
  110. package/dist/rsuite.js +288 -288
  111. package/dist/rsuite.min.css +1 -1
  112. package/dist/rsuite.min.css.map +1 -1
  113. package/dist/rsuite.min.js +1 -1
  114. package/dist/rsuite.min.js.map +1 -1
  115. package/esm/@types/common.d.ts +2 -0
  116. package/esm/Animation/Bounce.js +8 -4
  117. package/esm/Animation/Collapse.d.ts +1 -48
  118. package/esm/Animation/Collapse.js +59 -104
  119. package/esm/Animation/Fade.js +8 -4
  120. package/esm/Animation/Slide.js +6 -3
  121. package/esm/Carousel/Carousel.d.ts +7 -0
  122. package/esm/Carousel/Carousel.js +25 -12
  123. package/esm/CheckTree/index.js +11 -5
  124. package/esm/CheckTreePicker/CheckTreePicker.js +8 -6
  125. package/esm/DatePicker/DatePicker.d.ts +5 -1
  126. package/esm/DatePicker/DatePicker.js +2 -13
  127. package/esm/DateRangePicker/Calendar.d.ts +2 -1
  128. package/esm/DateRangePicker/Calendar.js +4 -3
  129. package/esm/DateRangePicker/DateRangePicker.d.ts +1 -1
  130. package/esm/DateRangePicker/DateRangePicker.js +27 -12
  131. package/esm/DateRangePicker/utils.d.ts +1 -1
  132. package/esm/DateRangePicker/utils.js +7 -3
  133. package/esm/Dropdown/Dropdown.js +30 -19
  134. package/esm/Dropdown/DropdownContext.d.ts +4 -1
  135. package/esm/Dropdown/DropdownItem.js +30 -6
  136. package/esm/Dropdown/DropdownState.d.ts +37 -0
  137. package/esm/Dropdown/DropdownState.js +55 -0
  138. package/esm/Dropdown/DropdownToggle.js +3 -6
  139. package/esm/InputNumber/InputNumber.js +11 -10
  140. package/esm/InputPicker/InputPicker.d.ts +16 -3
  141. package/esm/InputPicker/InputPicker.js +84 -45
  142. package/esm/List/ListItem.d.ts +1 -1
  143. package/esm/Menu/MenuItem.js +1 -1
  144. package/esm/MultiCascader/MultiCascader.js +4 -3
  145. package/esm/Nav/NavItem.js +12 -61
  146. package/esm/Navbar/NavbarItem.d.ts +19 -0
  147. package/esm/Navbar/NavbarItem.js +73 -0
  148. package/esm/Pagination/Pagination.js +1 -1
  149. package/esm/Picker/PickerToggle.js +2 -2
  150. package/esm/Picker/utils.d.ts +1 -1
  151. package/esm/Picker/utils.js +26 -22
  152. package/esm/Progress/ProgressCircle.js +15 -15
  153. package/esm/SelectPicker/SelectPicker.d.ts +1 -3
  154. package/esm/Sidenav/SidenavDropdown.js +5 -1
  155. package/esm/Sidenav/SidenavItem.js +47 -13
  156. package/esm/Slider/Slider.js +2 -1
  157. package/esm/TagInput/index.d.ts +13 -0
  158. package/esm/TagInput/index.js +44 -0
  159. package/esm/TagPicker/index.d.ts +10 -2
  160. package/esm/TagPicker/index.js +23 -6
  161. package/esm/Tree/Tree.d.ts +0 -2
  162. package/esm/Tree/Tree.js +10 -4
  163. package/esm/Tree/TreeContext.d.ts +7 -0
  164. package/esm/Tree/TreeContext.js +3 -0
  165. package/esm/TreePicker/TreeNode.js +10 -4
  166. package/esm/TreePicker/TreePicker.js +23 -12
  167. package/esm/Uploader/UploadFileItem.d.ts +5 -0
  168. package/esm/Uploader/UploadFileItem.js +2 -3
  169. package/esm/Uploader/Uploader.d.ts +8 -3
  170. package/esm/Uploader/Uploader.js +12 -6
  171. package/esm/index.d.ts +2 -0
  172. package/esm/index.js +1 -0
  173. package/esm/utils/ajaxUpload.d.ts +5 -1
  174. package/esm/utils/ajaxUpload.js +24 -13
  175. package/esm/utils/constants.d.ts +1 -0
  176. package/esm/utils/constants.js +1 -0
  177. package/esm/utils/dateUtils.d.ts +1 -0
  178. package/esm/utils/dateUtils.js +1 -0
  179. package/esm/utils/useInternalId.d.ts +4 -0
  180. package/esm/utils/useInternalId.js +16 -0
  181. package/esm/utils/useUniqueId.d.ts +1 -1
  182. package/esm/utils/useUniqueId.js +1 -1
  183. package/package.json +4 -9
  184. package/styles/color-modes/dark.less +28 -5
  185. package/styles/color-modes/high-contrast.less +317 -0
  186. package/styles/color-modes/light.less +24 -1
  187. package/styles/color-modes.less +5 -0
  188. package/styles/colors/high-contrast.less +105 -0
  189. package/styles/index.less +1 -0
  190. package/styles/mixins/color-modes.less +6 -0
  191. package/styles/mixins/listbox.less +13 -1
  192. package/styles/mixins/menu.less +7 -0
  193. package/styles/mixins/utilities.less +9 -1
  194. package/styles/variables.less +11 -0
@@ -462,7 +462,7 @@ export function useSearch(props) {
462
462
  * @param ref
463
463
  * @param params
464
464
  */
465
- export function usePublicMethods(ref, _ref) {
465
+ export function usePublicMethods(ref, _ref, disabled) {
466
466
  var triggerRef = _ref.triggerRef,
467
467
  overlayRef = _ref.overlayRef,
468
468
  targetRef = _ref.targetRef,
@@ -482,25 +482,29 @@ export function usePublicMethods(ref, _ref) {
482
482
 
483
483
  (_triggerRef$current5 = triggerRef.current) === null || _triggerRef$current5 === void 0 ? void 0 : _triggerRef$current5.updatePosition();
484
484
  }, [triggerRef]);
485
- useImperativeHandle(ref, function () {
486
- return {
487
- get root() {
488
- var _triggerRef$current6;
489
-
490
- return rootRef !== null && rootRef !== void 0 && rootRef.current ? rootRef === null || rootRef === void 0 ? void 0 : rootRef.current : (_triggerRef$current6 = triggerRef.current) === null || _triggerRef$current6 === void 0 ? void 0 : _triggerRef$current6.root;
491
- },
492
-
493
- get overlay() {
494
- return overlayRef.current;
495
- },
496
-
497
- get target() {
498
- return targetRef === null || targetRef === void 0 ? void 0 : targetRef.current;
499
- },
500
-
501
- updatePosition: handleUpdatePosition,
502
- open: handleOpen,
503
- close: handleClose
504
- };
505
- });
485
+
486
+ if (!disabled) {
487
+ // eslint-disable-next-line react-hooks/rules-of-hooks
488
+ useImperativeHandle(ref, function () {
489
+ return {
490
+ get root() {
491
+ var _triggerRef$current6;
492
+
493
+ return rootRef !== null && rootRef !== void 0 && rootRef.current ? rootRef === null || rootRef === void 0 ? void 0 : rootRef.current : (_triggerRef$current6 = triggerRef.current) === null || _triggerRef$current6 === void 0 ? void 0 : _triggerRef$current6.root;
494
+ },
495
+
496
+ get overlay() {
497
+ return overlayRef.current;
498
+ },
499
+
500
+ get target() {
501
+ return targetRef === null || targetRef === void 0 ? void 0 : targetRef.current;
502
+ },
503
+
504
+ updatePosition: handleUpdatePosition,
505
+ open: handleOpen,
506
+ close: handleClose
507
+ };
508
+ });
509
+ }
506
510
  }
@@ -35,35 +35,35 @@ var ProgressCircle = /*#__PURE__*/React.forwardRef(function (props, ref) {
35
35
 
36
36
  var getPathStyles = useCallback(function () {
37
37
  var radius = 50 - strokeWidth / 2;
38
- var beginPositionX = 0;
39
- var beginPositionY = -radius;
40
- var endPositionX = 0;
41
- var endPositionY = -2 * radius;
38
+ var x1 = 0;
39
+ var y1 = -radius;
40
+ var x2 = 0;
41
+ var y2 = -2 * radius;
42
42
 
43
43
  switch (gapPosition) {
44
44
  case 'left':
45
- beginPositionX = -radius;
46
- beginPositionY = 0;
47
- endPositionX = 2 * radius;
48
- endPositionY = 0;
45
+ x1 = -radius;
46
+ y1 = 0;
47
+ x2 = 2 * radius;
48
+ y2 = 0;
49
49
  break;
50
50
 
51
51
  case 'right':
52
- beginPositionX = radius;
53
- beginPositionY = 0;
54
- endPositionX = -2 * radius;
55
- endPositionY = 0;
52
+ x1 = radius;
53
+ y1 = 0;
54
+ x2 = -2 * radius;
55
+ y2 = 0;
56
56
  break;
57
57
 
58
58
  case 'bottom':
59
- beginPositionY = radius;
60
- endPositionY = 2 * radius;
59
+ y1 = radius;
60
+ y2 = 2 * radius;
61
61
  break;
62
62
 
63
63
  default:
64
64
  }
65
65
 
66
- var pathString = "M 50,50 m " + beginPositionX + "," + beginPositionY + "\n a " + radius + "," + radius + " 0 1 1 " + endPositionX + "," + -endPositionY + "\n a " + radius + "," + radius + " 0 1 1 " + -endPositionX + "," + endPositionY;
66
+ var pathString = "M 50,50 m " + x1 + "," + y1 + " a " + radius + "," + radius + " 0 1 1 " + x2 + "," + -y2 + " a " + radius + "," + radius + " 0 1 1 " + -x2 + "," + y2;
67
67
  var len = Math.PI * 2 * radius;
68
68
  var trailPathStyle = {
69
69
  stroke: trailColor,
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
2
  import { PickerLocale } from '../locales';
3
3
  import { PickerComponent } from '../Picker';
4
- import { TypeAttributes, FormControlPickerProps, ItemDataType } from '../@types/common';
4
+ import { FormControlPickerProps, ItemDataType } from '../@types/common';
5
5
  import { ListProps } from 'react-virtualized/dist/commonjs/List';
6
6
  export declare type ValueType = number | string;
7
7
  export interface SelectProps<T = ValueType> {
@@ -16,8 +16,6 @@ export interface SelectProps<T = ValueType> {
16
16
  * https://github.com/bvaughn/react-virtualized/blob/master/docs/List.md#prop-types
17
17
  */
18
18
  listProps?: ListProps;
19
- /** A picker can have different sizes */
20
- size?: TypeAttributes.Size;
21
19
  /** Custom search rules. */
22
20
  searchBy?: (keyword: string, label: React.ReactNode, item: ItemDataType) => boolean;
23
21
  /** Sort options */
@@ -11,6 +11,7 @@ import { SidenavContext } from './Sidenav';
11
11
  import deprecatePropType from '../utils/deprecatePropType';
12
12
  import SidenavDropdownCollapse from './SidenavDropdownCollapse';
13
13
  import Disclosure from '../Disclosure/Disclosure';
14
+ import DropdownContext from '../Dropdown/DropdownContext';
14
15
  var defaultProps = {
15
16
  as: 'div',
16
17
  classPrefix: 'dropdown',
@@ -43,6 +44,9 @@ var SidenavDropdown = /*#__PURE__*/React.forwardRef(function (props, ref) {
43
44
  openKeys = _useContext$openKeys === void 0 ? [] : _useContext$openKeys,
44
45
  onOpenChange = _useContext.onOpenChange;
45
46
 
47
+ var _useContext2 = useContext(DropdownContext),
48
+ hasSelectedItem = _useContext2.hasSelectedItem;
49
+
46
50
  var _useClassNames = useClassNames(classPrefix),
47
51
  merge = _useClassNames.merge,
48
52
  withClassPrefix = _useClassNames.withClassPrefix;
@@ -65,7 +69,7 @@ var SidenavDropdown = /*#__PURE__*/React.forwardRef(function (props, ref) {
65
69
  var _withClassPrefix;
66
70
 
67
71
  var open = _ref.open;
68
- var classes = merge(className, withClassPrefix((_withClassPrefix = {}, _withClassPrefix["placement-" + kebabCase(placementPolyfill(placement))] = placement, _withClassPrefix[open ? 'expand' : 'collapse'] = true, _withClassPrefix.disabled = disabled, _withClassPrefix['no-caret'] = noCaret, _withClassPrefix)));
72
+ var classes = merge(className, withClassPrefix((_withClassPrefix = {}, _withClassPrefix["placement-" + kebabCase(placementPolyfill(placement))] = placement, _withClassPrefix[open ? 'expand' : 'collapse'] = true, _withClassPrefix.disabled = disabled, _withClassPrefix['selected-within'] = hasSelectedItem, _withClassPrefix['no-caret'] = noCaret, _withClassPrefix)));
69
73
  return /*#__PURE__*/React.createElement(Component, _extends({
70
74
  ref: mergeRefs(ref, containerRef),
71
75
  style: style,
@@ -3,20 +3,22 @@ import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWith
3
3
  import React, { useContext, useCallback } from 'react';
4
4
  import PropTypes from 'prop-types';
5
5
  import isNil from 'lodash/isNil';
6
- import { useClassNames, shallowEqual } from '../utils';
6
+ import { useClassNames, shallowEqual, mergeRefs, appendTooltip } from '../utils';
7
7
  import Ripple from '../Ripple';
8
8
  import SafeAnchor from '../SafeAnchor';
9
9
  import NavContext from '../Nav/NavContext';
10
- var defaultProps = {
11
- as: 'div',
12
- classPrefix: 'dropdown'
13
- };
10
+ import MenuItem from '../Menu/MenuItem';
11
+ import omit from 'lodash/omit';
12
+ import { SidenavContext } from './Sidenav';
14
13
  var SidenavItem = /*#__PURE__*/React.forwardRef(function (props, ref) {
15
- var activeProp = props.active,
16
- children = props.children,
14
+ var _props$as = props.as,
15
+ Component = _props$as === void 0 ? SafeAnchor : _props$as,
16
+ activeProp = props.active,
17
+ _children = props.children,
17
18
  className = props.className,
18
19
  disabled = props.disabled,
19
- classPrefix = props.classPrefix,
20
+ _props$classPrefix = props.classPrefix,
21
+ classPrefix = _props$classPrefix === void 0 ? 'sidenav-item' : _props$classPrefix,
20
22
  icon = props.icon,
21
23
  eventKey = props.eventKey,
22
24
  style = props.style,
@@ -24,7 +26,9 @@ var SidenavItem = /*#__PURE__*/React.forwardRef(function (props, ref) {
24
26
  onSelect = props.onSelect,
25
27
  divider = props.divider,
26
28
  panel = props.panel,
27
- rest = _objectWithoutPropertiesLoose(props, ["active", "children", "className", "disabled", "classPrefix", "icon", "eventKey", "style", "onClick", "onSelect", "divider", "panel"]);
29
+ rest = _objectWithoutPropertiesLoose(props, ["as", "active", "children", "className", "disabled", "classPrefix", "icon", "eventKey", "style", "onClick", "onSelect", "divider", "panel"]);
30
+
31
+ var sidenav = useContext(SidenavContext);
28
32
 
29
33
  var _useContext = useContext(NavContext),
30
34
  activeKey = _useContext.activeKey,
@@ -43,6 +47,37 @@ var SidenavItem = /*#__PURE__*/React.forwardRef(function (props, ref) {
43
47
  onClick === null || onClick === void 0 ? void 0 : onClick(event);
44
48
  }, [disabled, onSelect, onSelectFromNav, eventKey, onClick]);
45
49
 
50
+ if (!sidenav.expanded) {
51
+ return /*#__PURE__*/React.createElement(MenuItem, {
52
+ selected: selected,
53
+ disabled: disabled,
54
+ onActivate: handleClick
55
+ }, function (_ref, menuitemRef) {
56
+ var selected = _ref.selected,
57
+ active = _ref.active,
58
+ menuitem = _objectWithoutPropertiesLoose(_ref, ["selected", "active"]);
59
+
60
+ var classes = merge(className, withClassPrefix({
61
+ focus: active,
62
+ active: selected,
63
+ disabled: disabled
64
+ })); // Show tooltip when inside a collapse <Sidenav>
65
+
66
+ return appendTooltip({
67
+ children: function children(triggerProps, triggerRef) {
68
+ return /*#__PURE__*/React.createElement(Component, _extends({
69
+ ref: mergeRefs(mergeRefs(ref, menuitemRef), triggerRef),
70
+ disabled: Component === SafeAnchor ? disabled : undefined,
71
+ className: classes,
72
+ "data-event-key": eventKey
73
+ }, omit(rest, ['divider', 'panel']), triggerProps, menuitem), icon, _children, /*#__PURE__*/React.createElement(Ripple, null));
74
+ },
75
+ message: _children,
76
+ placement: 'right'
77
+ });
78
+ });
79
+ }
80
+
46
81
  if (divider) {
47
82
  return /*#__PURE__*/React.createElement("li", _extends({
48
83
  ref: ref,
@@ -58,10 +93,10 @@ var SidenavItem = /*#__PURE__*/React.forwardRef(function (props, ref) {
58
93
  role: "none presentation",
59
94
  style: style,
60
95
  className: merge(className, prefix('panel'))
61
- }, rest), children);
96
+ }, rest), _children);
62
97
  }
63
98
 
64
- return /*#__PURE__*/React.createElement(SafeAnchor, _extends({
99
+ return /*#__PURE__*/React.createElement(Component, _extends({
65
100
  ref: ref,
66
101
  className: merge(className, withClassPrefix({
67
102
  active: selected,
@@ -71,10 +106,9 @@ var SidenavItem = /*#__PURE__*/React.forwardRef(function (props, ref) {
71
106
  style: style,
72
107
  "aria-selected": selected || undefined,
73
108
  "data-event-key": eventKey
74
- }, rest), icon, children, /*#__PURE__*/React.createElement(Ripple, null));
109
+ }, rest), icon, _children, /*#__PURE__*/React.createElement(Ripple, null));
75
110
  });
76
111
  SidenavItem.displayName = 'Sidenav.Item';
77
- SidenavItem.defaultProps = defaultProps;
78
112
  SidenavItem.propTypes = {
79
113
  classPrefix: PropTypes.string,
80
114
  disabled: PropTypes.bool,
@@ -208,7 +208,8 @@ var Slider = /*#__PURE__*/React.forwardRef(function (props, ref) {
208
208
 
209
209
  if (plaintext) {
210
210
  return /*#__PURE__*/React.createElement(Plaintext, {
211
- localeKey: "notSelected"
211
+ localeKey: "notSelected",
212
+ ref: ref
212
213
  }, value);
213
214
  }
214
215
 
@@ -0,0 +1,13 @@
1
+ import { InputPickerProps, TriggerType } from '../InputPicker/InputPicker';
2
+ import type { PickerComponent } from '../Picker/types';
3
+ import type { TagProps } from '../Tag';
4
+ export interface TagInputProps extends InputPickerProps {
5
+ /** Tag related props. */
6
+ tagProps?: TagProps;
7
+ /**
8
+ * Set the trigger for creating tags. only valid when creatable
9
+ */
10
+ trigger: TriggerType | TriggerType[];
11
+ }
12
+ declare const TagInput: PickerComponent<TagInputProps>;
13
+ export default TagInput;
@@ -0,0 +1,44 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
2
+ import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
+ import React, { useMemo } from 'react';
4
+ import InputPicker, { InputPickerContext } from '../InputPicker/InputPicker';
5
+ var TagInput = /*#__PURE__*/React.forwardRef(function (props, ref) {
6
+ var tagProps = props.tagProps,
7
+ trigger = props.trigger,
8
+ value = props.value,
9
+ defaultValue = props.defaultValue,
10
+ rest = _objectWithoutPropertiesLoose(props, ["tagProps", "trigger", "value", "defaultValue"]);
11
+
12
+ var contextValue = useMemo(function () {
13
+ return {
14
+ multi: true,
15
+ disabledOptions: true,
16
+ trigger: trigger,
17
+ tagProps: tagProps
18
+ };
19
+ }, [tagProps, trigger]);
20
+ var data = useMemo(function () {
21
+ return (value || defaultValue || []).map(function (v) {
22
+ return {
23
+ value: v,
24
+ label: v
25
+ };
26
+ });
27
+ }, [defaultValue, value]);
28
+ return /*#__PURE__*/React.createElement(InputPickerContext.Provider, {
29
+ value: contextValue
30
+ }, /*#__PURE__*/React.createElement(InputPicker, _extends({}, rest, {
31
+ value: value,
32
+ defaultValue: defaultValue,
33
+ data: data,
34
+ placement: null,
35
+ creatable: true,
36
+ ref: ref
37
+ })));
38
+ });
39
+ TagInput.defaultProps = {
40
+ trigger: 'Enter',
41
+ tagProps: {}
42
+ };
43
+ TagInput.displayName = 'TagInput';
44
+ export default TagInput;
@@ -1,5 +1,13 @@
1
- import { InputPickerProps } from '../InputPicker/InputPicker';
1
+ import { InputPickerProps, TriggerType } from '../InputPicker/InputPicker';
2
2
  import type { PickerComponent } from '../Picker/types';
3
- export declare type TagPickerProps = InputPickerProps;
3
+ import type { TagProps } from '../Tag';
4
+ export interface TagPickerProps extends InputPickerProps {
5
+ /** Tag related props. */
6
+ tagProps?: TagProps;
7
+ /**
8
+ * Set the trigger for creating tags. only valid when creatable
9
+ */
10
+ trigger: TriggerType | TriggerType[];
11
+ }
4
12
  declare const TagPicker: PickerComponent<TagPickerProps>;
5
13
  export default TagPicker;
@@ -1,11 +1,28 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
- import React from 'react';
3
- import InputPicker from '../InputPicker/InputPicker';
2
+ import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
+ import React, { useMemo } from 'react';
4
+ import InputPicker, { InputPickerContext } from '../InputPicker/InputPicker';
4
5
  var TagPicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
5
- return /*#__PURE__*/React.createElement(InputPicker, _extends({}, props, {
6
- ref: ref,
7
- multi: true
8
- }));
6
+ var tagProps = props.tagProps,
7
+ trigger = props.trigger,
8
+ rest = _objectWithoutPropertiesLoose(props, ["tagProps", "trigger"]);
9
+
10
+ var contextValue = useMemo(function () {
11
+ return {
12
+ multi: true,
13
+ trigger: trigger,
14
+ tagProps: tagProps
15
+ };
16
+ }, [tagProps, trigger]);
17
+ return /*#__PURE__*/React.createElement(InputPickerContext.Provider, {
18
+ value: contextValue
19
+ }, /*#__PURE__*/React.createElement(InputPicker, _extends({}, rest, {
20
+ ref: ref
21
+ })));
9
22
  });
23
+ TagPicker.defaultProps = {
24
+ trigger: 'Enter',
25
+ tagProps: {}
26
+ };
10
27
  TagPicker.displayName = 'TagPicker';
11
28
  export default TagPicker;
@@ -40,8 +40,6 @@ export interface TreeDragProps<ItemDataType = Record<string, any>> {
40
40
  export interface TreeBaseProps<ValueType = string | number, ItemDataType = Record<string, any>> extends StandardProps {
41
41
  /** The height of Dropdown */
42
42
  height?: number;
43
- /** Display inline */
44
- inline?: boolean;
45
43
  /** Whether display search input box */
46
44
  searchable?: boolean;
47
45
  /** Whether using virtualized list */
package/esm/Tree/Tree.js CHANGED
@@ -1,6 +1,7 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
- import React from 'react';
2
+ import React, { useRef } from 'react';
3
3
  import TreePicker from '../TreePicker';
4
+ import TreeContext from './TreeContext';
4
5
 
5
6
  /**
6
7
  * Tree Node Drag Type
@@ -14,10 +15,15 @@ export var TREE_NODE_DROP_POSITION;
14
15
  })(TREE_NODE_DROP_POSITION || (TREE_NODE_DROP_POSITION = {}));
15
16
 
16
17
  var Tree = /*#__PURE__*/React.forwardRef(function (props, ref) {
17
- return /*#__PURE__*/React.createElement(TreePicker, _extends({
18
- inline: true,
18
+ var dragNodeRef = useRef();
19
+ return /*#__PURE__*/React.createElement(TreeContext.Provider, {
20
+ value: {
21
+ inline: true,
22
+ dragNodeRef: dragNodeRef
23
+ }
24
+ }, /*#__PURE__*/React.createElement(TreePicker, _extends({
19
25
  ref: ref
20
- }, props));
26
+ }, props)));
21
27
  });
22
28
  Tree.displayName = 'Tree';
23
29
  export default Tree;
@@ -0,0 +1,7 @@
1
+ import React from 'react';
2
+ export interface TreeContextProps {
3
+ inline?: boolean;
4
+ dragNodeRef?: React.MutableRefObject<any>;
5
+ }
6
+ declare const TreeContext: React.Context<TreeContextProps>;
7
+ export default TreeContext;
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ var TreeContext = /*#__PURE__*/React.createContext({});
3
+ export default TreeContext;
@@ -1,10 +1,11 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
- import React, { forwardRef, useCallback } from 'react';
3
+ import React, { forwardRef, useCallback, useContext } from 'react';
4
4
  import PropTypes from 'prop-types';
5
5
  import { hasClass } from 'dom-lib';
6
6
  import ArrowDown from '@rsuite/icons/legacy/ArrowDown';
7
7
  import Spinner from '@rsuite/icons/legacy/Spinner';
8
+ import TreeContext from '../Tree/TreeContext';
8
9
  import reactToString from '../utils/reactToString';
9
10
  import { useClassNames, TREE_NODE_PADDING, TREE_NODE_ROOT_PADDING } from '../utils';
10
11
  var TreeNode = /*#__PURE__*/forwardRef(function (_ref, ref) {
@@ -48,6 +49,9 @@ var TreeNode = /*#__PURE__*/forwardRef(function (_ref, ref) {
48
49
  merge = _useClassNames.merge,
49
50
  withClassPrefix = _useClassNames.withClassPrefix;
50
51
 
52
+ var _useContext = useContext(TreeContext),
53
+ dragNodeRef = _useContext.dragNodeRef;
54
+
51
55
  var getTitle = useCallback(function () {
52
56
  if (typeof label === 'string') {
53
57
  return label;
@@ -77,14 +81,16 @@ var TreeNode = /*#__PURE__*/forwardRef(function (_ref, ref) {
77
81
  onSelect === null || onSelect === void 0 ? void 0 : onSelect(nodeData, event);
78
82
  }, [nodeData, disabled, prefix, onSelect]);
79
83
  var handleDragStart = useCallback(function (event) {
80
- var dragNode = document.getElementById('drag-node');
84
+ var dragNode = dragNodeRef === null || dragNodeRef === void 0 ? void 0 : dragNodeRef.current;
81
85
 
82
86
  if (dragNode) {
83
- event.dataTransfer.setDragImage(dragNode, 0, 0);
87
+ var _event$dataTransfer;
88
+
89
+ (_event$dataTransfer = event.dataTransfer) === null || _event$dataTransfer === void 0 ? void 0 : _event$dataTransfer.setDragImage(dragNode, 0, 0);
84
90
  }
85
91
 
86
92
  onDragStart === null || onDragStart === void 0 ? void 0 : onDragStart(nodeData, event);
87
- }, [nodeData, onDragStart]);
93
+ }, [dragNodeRef, nodeData, onDragStart]);
88
94
  var handleDragEnter = useCallback(function (event) {
89
95
  event.preventDefault();
90
96
  event.stopPropagation();
@@ -5,14 +5,15 @@ import _isNil from "lodash/isNil";
5
5
  import _isUndefined from "lodash/isUndefined";
6
6
  import _omit from "lodash/omit";
7
7
  import _pick from "lodash/pick";
8
- import React, { useState, useRef, useEffect, useCallback } from 'react';
8
+ import React, { useState, useRef, useEffect, useCallback, useContext } from 'react';
9
9
  import PropTypes from 'prop-types';
10
10
  import { List, AutoSizer } from '../Picker/VirtualizedList';
11
11
  import TreeNode from './TreeNode';
12
12
  import { createChainedFunction, useClassNames, useCustom, useControlled, TREE_NODE_DROP_POSITION, KEY_VALUES, mergeRefs, shallowEqual } from '../utils';
13
13
  import { getExpandWhenSearching, hasVisibleChildren, getDragNodeKeys, calDropNodePosition, createUpdateTreeDataFunction, useTreeDrag, useFlattenTreeData, getTreeActiveNode, getDefaultExpandItemValues, useTreeNodeRefs, useTreeSearch, focusPreviousItem, getFocusableItems, focusNextItem, getActiveItem, toggleExpand, useGetTreeNodeChildren, focusToActiveTreeNode, leftArrowHandler, focusTreeNode, rightArrowHandler, isSearching } from '../utils/treeUtils';
14
14
  import { PickerToggle, PickerOverlay, SearchBar, PickerToggleTrigger, createConcatChildrenFunction, usePickerClassName, onMenuKeyDown as _onMenuKeyDown, usePublicMethods, listPickerPropTypes, listPickerDefaultProps, pickTriggerPropKeys, omitTriggerPropKeys, useToggleKeyDownEvent } from '../Picker';
15
- // default value for virtualized
15
+ import TreeContext from '../Tree/TreeContext'; // default value for virtualized
16
+
16
17
  export var maxTreeHeight = 320;
17
18
 
18
19
  var defaultProps = _extends({}, listPickerDefaultProps, {
@@ -31,7 +32,6 @@ var TreePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
31
32
  data = props.data,
32
33
  style = props.style,
33
34
  controlledValue = props.value,
34
- inline = props.inline,
35
35
  overrideLocale = props.locale,
36
36
  height = props.height,
37
37
  className = props.className,
@@ -61,6 +61,7 @@ var TreePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
61
61
  getChildren = props.getChildren,
62
62
  renderTreeIcon = props.renderTreeIcon,
63
63
  renderTreeNode = props.renderTreeNode,
64
+ onExit = props.onExit,
64
65
  onExited = props.onExited,
65
66
  onClean = props.onClean,
66
67
  onOpen = props.onOpen,
@@ -80,7 +81,7 @@ var TreePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
80
81
  renderMenu = props.renderMenu,
81
82
  renderValue = props.renderValue,
82
83
  renderDragNode = props.renderDragNode,
83
- rest = _objectWithoutPropertiesLoose(props, ["as", "data", "style", "value", "inline", "locale", "height", "className", "disabled", "placement", "cleanable", "menuStyle", "searchable", "virtualized", "classPrefix", "defaultValue", "placeholder", "searchKeyword", "menuClassName", "menuAutoWidth", "searchBy", "toggleAs", "labelKey", "valueKey", "childrenKey", "draggable", "defaultExpandAll", "disabledItemValues", "expandItemValues", "defaultExpandItemValues", "id", "getChildren", "renderTreeIcon", "renderTreeNode", "onExited", "onClean", "onOpen", "onSearch", "onSelect", "onChange", "onEntered", "onClose", "onDragEnd", "onDragStart", "onDragEnter", "onDragLeave", "onDragOver", "onDrop", "onExpand", "renderExtraFooter", "renderMenu", "renderValue", "renderDragNode"]);
84
+ rest = _objectWithoutPropertiesLoose(props, ["as", "data", "style", "value", "locale", "height", "className", "disabled", "placement", "cleanable", "menuStyle", "searchable", "virtualized", "classPrefix", "defaultValue", "placeholder", "searchKeyword", "menuClassName", "menuAutoWidth", "searchBy", "toggleAs", "labelKey", "valueKey", "childrenKey", "draggable", "defaultExpandAll", "disabledItemValues", "expandItemValues", "defaultExpandItemValues", "id", "getChildren", "renderTreeIcon", "renderTreeNode", "onExit", "onExited", "onClean", "onOpen", "onSearch", "onSelect", "onChange", "onEntered", "onClose", "onDragEnd", "onDragStart", "onDragEnter", "onDragLeave", "onDragOver", "onDrop", "onExpand", "renderExtraFooter", "renderMenu", "renderValue", "renderDragNode"]);
84
85
 
85
86
  var triggerRef = useRef();
86
87
  var targetRef = useRef();
@@ -93,6 +94,10 @@ var TreePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
93
94
  rtl = _useCustom.rtl,
94
95
  locale = _useCustom.locale;
95
96
 
97
+ var _useContext = useContext(TreeContext),
98
+ inline = _useContext.inline,
99
+ dragNodeRef = _useContext.dragNodeRef;
100
+
96
101
  var _useControlled = useControlled(controlledValue, defaultValue),
97
102
  value = _useControlled[0],
98
103
  setValue = _useControlled[1],
@@ -217,6 +222,14 @@ var TreePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
217
222
  useEffect(function () {
218
223
  setSearchKeyword(searchKeyword !== null && searchKeyword !== void 0 ? searchKeyword : '');
219
224
  }, [searchKeyword, setSearchKeyword]);
225
+ useEffect(function () {
226
+ if (dragNodeRef) {
227
+ var _treeViewRef$current;
228
+
229
+ dragNodeRef.current = (_treeViewRef$current = treeViewRef.current) === null || _treeViewRef$current === void 0 ? void 0 : _treeViewRef$current.querySelector("." + treePrefix('drag-node-mover'));
230
+ } // eslint-disable-next-line react-hooks/exhaustive-deps
231
+
232
+ }, []);
220
233
  var getDropData = useCallback(function (nodeData) {
221
234
  var options = {
222
235
  valueKey: valueKey,
@@ -386,7 +399,6 @@ var TreePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
386
399
 
387
400
  (_triggerRef$current3 = triggerRef.current) === null || _triggerRef$current3 === void 0 ? void 0 : (_triggerRef$current3$ = _triggerRef$current3.close) === null || _triggerRef$current3$ === void 0 ? void 0 : _triggerRef$current3$.call(_triggerRef$current3);
388
401
  setSearchKeyword('');
389
- onClose === null || onClose === void 0 ? void 0 : onClose();
390
402
  setActive(false);
391
403
  setFocusItemValue(activeNode === null || activeNode === void 0 ? void 0 : activeNode[valueKey]);
392
404
  /**
@@ -394,12 +406,12 @@ var TreePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
394
406
  */
395
407
 
396
408
  (_targetRef$current2 = targetRef.current) === null || _targetRef$current2 === void 0 ? void 0 : _targetRef$current2.focus();
397
- }, [activeNode, onClose, setSearchKeyword, valueKey]);
409
+ }, [activeNode, setSearchKeyword, valueKey]);
398
410
  usePublicMethods(ref, {
399
411
  triggerRef: triggerRef,
400
412
  overlayRef: overlayRef,
401
413
  targetRef: targetRef
402
- });
414
+ }, inline);
403
415
  var handleFocusItem = useCallback(function (key) {
404
416
  var focusableItems = getFocusableItems(filteredData, {
405
417
  disabledItemValues: disabledItemValues,
@@ -593,7 +605,6 @@ var TreePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
593
605
  }
594
606
 
595
607
  return /*#__PURE__*/React.createElement("span", {
596
- id: "drag-node",
597
608
  className: treePrefix('drag-node-mover')
598
609
  }, dragNodeContent);
599
610
  }
@@ -609,10 +620,10 @@ var TreePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
609
620
  var styles = inline ? _extends({
610
621
  height: height
611
622
  }, style) : {};
612
- return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
623
+ return /*#__PURE__*/React.createElement("div", {
613
624
  role: "tree",
614
625
  id: id ? id + "-listbox" : undefined,
615
- ref: treeViewRef,
626
+ ref: inline ? mergeRefs(treeViewRef, ref) : treeViewRef,
616
627
  className: classes,
617
628
  style: styles,
618
629
  onKeyDown: inline ? handleTreeKeyDown : undefined
@@ -636,7 +647,7 @@ var TreePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
636
647
  rowRenderer: renderVirtualListNode(formattedNodes),
637
648
  scrollToAlignment: "center"
638
649
  });
639
- }) : formattedNodes)), renderDefaultDragNode());
650
+ }) : formattedNodes), renderDefaultDragNode());
640
651
  };
641
652
 
642
653
  var renderDropdownMenu = function renderDropdownMenu(positionProps, speakerRef) {
@@ -707,6 +718,7 @@ var TreePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
707
718
  placement: placement,
708
719
  onEnter: handleOpen,
709
720
  onEntered: onEntered,
721
+ onExit: createChainedFunction(onClose, onExit),
710
722
  onExited: createChainedFunction(handleClose, onExited),
711
723
  speaker: renderDropdownMenu
712
724
  }, /*#__PURE__*/React.createElement(Component, {
@@ -732,7 +744,6 @@ TreePicker.propTypes = _extends({}, listPickerPropTypes, {
732
744
  locale: PropTypes.any,
733
745
  appearance: PropTypes.oneOf(['default', 'subtle']),
734
746
  height: PropTypes.number,
735
- inline: PropTypes.bool,
736
747
  draggable: PropTypes.bool,
737
748
  virtualized: PropTypes.bool,
738
749
  searchable: PropTypes.bool,
@@ -17,5 +17,10 @@ export interface UploadFileItemProps extends WithAsProps {
17
17
  onPreview?: (file: FileType, event: React.MouseEvent) => void;
18
18
  onReupload?: (file: FileType, event: React.MouseEvent) => void;
19
19
  }
20
+ /**
21
+ * Format display file size
22
+ * @param size
23
+ */
24
+ export declare const formatSize: (size?: number) => string;
20
25
  declare const UploadFileItem: React.ForwardRefExoticComponent<UploadFileItemProps & React.RefAttributes<HTMLDivElement>>;
21
26
  export default UploadFileItem;
@@ -11,7 +11,7 @@ import CloseButton from '../CloseButton';
11
11
  * Format display file size
12
12
  * @param size
13
13
  */
14
- var getSize = function getSize(size) {
14
+ export var formatSize = function formatSize(size) {
15
15
  if (size === void 0) {
16
16
  size = 0;
17
17
  }
@@ -34,7 +34,6 @@ var getSize = function getSize(size) {
34
34
 
35
35
  return size + "B";
36
36
  };
37
-
38
37
  var defaultProps = {
39
38
  as: 'div',
40
39
  classPrefix: 'uploader-file-item',
@@ -223,7 +222,7 @@ var UploadFileItem = /*#__PURE__*/React.forwardRef(function (props, ref) {
223
222
 
224
223
  return /*#__PURE__*/React.createElement("span", {
225
224
  className: prefix('size')
226
- }, getSize(file === null || file === void 0 ? void 0 : (_file$blobFile2 = file.blobFile) === null || _file$blobFile2 === void 0 ? void 0 : _file$blobFile2.size));
225
+ }, formatSize(file === null || file === void 0 ? void 0 : (_file$blobFile2 = file.blobFile) === null || _file$blobFile2 === void 0 ? void 0 : _file$blobFile2.size));
227
226
  }
228
227
 
229
228
  return null;