rsuite 5.24.0 → 5.25.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 (77) hide show
  1. package/Breadcrumb/styles/index.less +4 -0
  2. package/Button/styles/index.less +14 -10
  3. package/CHANGELOG.md +31 -0
  4. package/Calendar/styles/index.less +15 -16
  5. package/DatePicker/styles/index.less +9 -0
  6. package/DatePicker/styles/mixin.less +8 -0
  7. package/Picker/styles/index.less +5 -9
  8. package/Picker/styles/mixin.less +4 -40
  9. package/TreePicker/styles/index.less +13 -0
  10. package/cjs/@types/global.d.ts +6 -0
  11. package/cjs/Breadcrumb/BreadcrumbItem.js +1 -1
  12. package/cjs/Calendar/MonthDropdown.js +2 -4
  13. package/cjs/Calendar/TableHeaderRow.js +3 -3
  14. package/cjs/Cascader/Cascader.js +2 -2
  15. package/cjs/Cascader/utils.d.ts +1 -1
  16. package/cjs/Cascader/utils.js +2 -2
  17. package/cjs/Content/Content.d.ts +1 -1
  18. package/cjs/CustomProvider/CustomProvider.d.ts +2 -0
  19. package/cjs/CustomProvider/CustomProvider.js +5 -3
  20. package/cjs/Footer/Footer.d.ts +1 -1
  21. package/cjs/Header/Header.d.ts +1 -1
  22. package/cjs/MultiCascader/MultiCascader.js +4 -4
  23. package/cjs/MultiCascader/utils.d.ts +1 -1
  24. package/cjs/MultiCascader/utils.js +2 -2
  25. package/cjs/Navbar/NavbarBrand.d.ts +1 -1
  26. package/cjs/Overlay/OverlayTrigger.js +4 -0
  27. package/cjs/Picker/PickerToggle.js +1 -1
  28. package/cjs/Picker/PickerToggleTrigger.js +6 -7
  29. package/cjs/Ripple/Ripple.js +8 -0
  30. package/cjs/TreePicker/TreeNode.d.ts +3 -3
  31. package/cjs/TreePicker/TreeNode.js +1 -11
  32. package/cjs/TreePicker/TreePicker.js +8 -1
  33. package/cjs/utils/createComponent.d.ts +3 -3
  34. package/cjs/utils/treeUtils.d.ts +12 -0
  35. package/cjs/utils/treeUtils.js +42 -0
  36. package/cjs/utils/useCustom.js +3 -1
  37. package/dist/rsuite-rtl.css +299 -263
  38. package/dist/rsuite-rtl.min.css +1 -1
  39. package/dist/rsuite-rtl.min.css.map +1 -1
  40. package/dist/rsuite.css +299 -263
  41. package/dist/rsuite.js +19 -19
  42. package/dist/rsuite.min.css +1 -1
  43. package/dist/rsuite.min.css.map +1 -1
  44. package/dist/rsuite.min.js +1 -1
  45. package/dist/rsuite.min.js.map +1 -1
  46. package/esm/@types/global.d.ts +6 -0
  47. package/esm/Breadcrumb/BreadcrumbItem.js +1 -1
  48. package/esm/Calendar/MonthDropdown.js +2 -4
  49. package/esm/Calendar/TableHeaderRow.js +3 -3
  50. package/esm/Cascader/Cascader.js +2 -2
  51. package/esm/Cascader/utils.d.ts +1 -1
  52. package/esm/Cascader/utils.js +2 -2
  53. package/esm/Content/Content.d.ts +1 -1
  54. package/esm/CustomProvider/CustomProvider.d.ts +2 -0
  55. package/esm/CustomProvider/CustomProvider.js +5 -3
  56. package/esm/Footer/Footer.d.ts +1 -1
  57. package/esm/Header/Header.d.ts +1 -1
  58. package/esm/MultiCascader/MultiCascader.js +4 -4
  59. package/esm/MultiCascader/utils.d.ts +1 -1
  60. package/esm/MultiCascader/utils.js +2 -2
  61. package/esm/Navbar/NavbarBrand.d.ts +1 -1
  62. package/esm/Overlay/OverlayTrigger.js +4 -0
  63. package/esm/Picker/PickerToggle.js +1 -1
  64. package/esm/Picker/PickerToggleTrigger.js +7 -5
  65. package/esm/Ripple/Ripple.js +9 -1
  66. package/esm/TreePicker/TreeNode.d.ts +3 -3
  67. package/esm/TreePicker/TreeNode.js +2 -11
  68. package/esm/TreePicker/TreePicker.js +9 -2
  69. package/esm/utils/createComponent.d.ts +3 -3
  70. package/esm/utils/treeUtils.d.ts +12 -0
  71. package/esm/utils/treeUtils.js +36 -0
  72. package/esm/utils/useCustom.js +3 -1
  73. package/package.json +2 -2
  74. package/styles/color-modes/dark.less +6 -2
  75. package/styles/color-modes/high-contrast.less +4 -0
  76. package/styles/color-modes/light.less +5 -1
  77. package/styles/variables.less +7 -8
@@ -39,6 +39,9 @@ var getPosition = function getPosition(target, event) {
39
39
  };
40
40
 
41
41
  var Ripple = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
42
+ var _useCustom = (0, _utils.useCustom)(),
43
+ disableRipple = _useCustom.disableRipple;
44
+
42
45
  var _props$as = props.as,
43
46
  Component = _props$as === void 0 ? 'span' : _props$as,
44
47
  className = props.className,
@@ -88,6 +91,11 @@ var Ripple = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
88
91
  };
89
92
  }
90
93
  }, [handleMouseDown]);
94
+
95
+ if (disableRipple) {
96
+ return null;
97
+ }
98
+
91
99
  return /*#__PURE__*/_react.default.createElement(Component, (0, _extends2.default)({}, rest, {
92
100
  className: classes,
93
101
  ref: (0, _utils.mergeRefs)(triggerRef, ref)
@@ -1,10 +1,10 @@
1
1
  import React from 'react';
2
- import { WithAsProps, RsRefForwardingComponent } from '../@types/common';
2
+ import { WithAsProps, RsRefForwardingComponent, ItemDataType } from '../@types/common';
3
3
  export interface TreeNodeProps extends WithAsProps {
4
4
  rtl?: boolean;
5
5
  layer: number;
6
- value?: any;
7
- label?: any;
6
+ value?: ItemDataType['value'];
7
+ label?: ItemDataType['label'];
8
8
  focus?: boolean;
9
9
  loading?: boolean;
10
10
  expand?: boolean;
@@ -21,8 +21,6 @@ var _ArrowDown = _interopRequireDefault(require("@rsuite/icons/legacy/ArrowDown"
21
21
 
22
22
  var _Spinner = _interopRequireDefault(require("@rsuite/icons/legacy/Spinner"));
23
23
 
24
- var _reactToString = _interopRequireDefault(require("../utils/reactToString"));
25
-
26
24
  var _utils = require("../utils");
27
25
 
28
26
  var _treeUtils = require("../utils/treeUtils");
@@ -68,14 +66,6 @@ var TreeNode = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
68
66
  merge = _useClassNames.merge,
69
67
  withClassPrefix = _useClassNames.withClassPrefix;
70
68
 
71
- var getTitle = (0, _react.useCallback)(function () {
72
- if (typeof label === 'string') {
73
- return label;
74
- } else if ( /*#__PURE__*/_react.default.isValidElement(label)) {
75
- var nodes = (0, _reactToString.default)(label);
76
- return nodes.join('');
77
- }
78
- }, [label]);
79
69
  var handleExpand = (0, _react.useCallback)(function (event) {
80
70
  var _event$nativeEvent, _event$nativeEvent$st;
81
71
 
@@ -165,7 +155,7 @@ var TreeNode = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
165
155
  });
166
156
  return /*#__PURE__*/_react.default.createElement("span", {
167
157
  className: prefix('label'),
168
- title: getTitle(),
158
+ title: (0, _treeUtils.stringifyTreeNodeLabel)(label),
169
159
  "data-layer": layer,
170
160
  "data-key": (nodeData === null || nodeData === void 0 ? void 0 : nodeData.refKey) || '',
171
161
  role: "button",
@@ -353,11 +353,15 @@ var TreePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
353
353
  }, [valueKey, childrenKey, expandItemValues, getChildren, onExpand, setExpandItemValues, loadChildren]);
354
354
  var handleDragStart = (0, _react.useCallback)(function (nodeData, event) {
355
355
  if (draggable) {
356
+ var _event$dataTransfer;
357
+
358
+ var dragMoverNode = (0, _treeUtils.createDragPreview)((0, _treeUtils.stringifyTreeNodeLabel)(nodeData[labelKey]), treePrefix('drag-preview'));
359
+ (_event$dataTransfer = event.dataTransfer) === null || _event$dataTransfer === void 0 ? void 0 : _event$dataTransfer.setDragImage(dragMoverNode, 0, 0);
356
360
  setDragNodeKeys((0, _treeUtils.getDragNodeKeys)(nodeData, childrenKey, valueKey));
357
361
  setDragNode(flattenNodes[nodeData.refKey]);
358
362
  onDragStart === null || onDragStart === void 0 ? void 0 : onDragStart(nodeData, event);
359
363
  }
360
- }, [draggable, childrenKey, flattenNodes, onDragStart, setDragNodeKeys, setDragNode, valueKey]);
364
+ }, [draggable, labelKey, treePrefix, setDragNodeKeys, childrenKey, valueKey, setDragNode, flattenNodes, onDragStart]);
361
365
  var handleDragEnter = (0, _react.useCallback)(function (nodeData, event) {
362
366
  if (dragNodeKeys.some(function (d) {
363
367
  return (0, _utils.shallowEqual)(d, nodeData[valueKey]);
@@ -376,6 +380,7 @@ var TreePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
376
380
  if (dragNodeKeys.some(function (d) {
377
381
  return (0, _utils.shallowEqual)(d, nodeData[valueKey]);
378
382
  })) {
383
+ event.dataTransfer.dropEffect = 'none';
379
384
  return;
380
385
  }
381
386
 
@@ -391,6 +396,7 @@ var TreePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
391
396
  onDragLeave === null || onDragLeave === void 0 ? void 0 : onDragLeave(nodeData, event);
392
397
  }, [onDragLeave]);
393
398
  var handleDragEnd = (0, _react.useCallback)(function (nodeData, event) {
399
+ (0, _treeUtils.removeDragPreview)();
394
400
  setDragNode(null);
395
401
  setDragNodeKeys([]);
396
402
  setDragOverNodeKey(null);
@@ -406,6 +412,7 @@ var TreePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
406
412
  onDrop === null || onDrop === void 0 ? void 0 : onDrop(dropData, event);
407
413
  }
408
414
 
415
+ (0, _treeUtils.removeDragPreview)();
409
416
  setDragNode(null);
410
417
  setDragNodeKeys([]);
411
418
  setDragOverNodeKey(null);
@@ -1,13 +1,13 @@
1
1
  import React from 'react';
2
2
  import { WithAsProps, RsRefForwardingComponent } from '../@types/common';
3
3
  export declare type ComponentProps = WithAsProps & React.HTMLAttributes<HTMLDivElement>;
4
- interface Props extends React.HTMLAttributes<HTMLDivElement> {
4
+ interface Props<TElement extends React.ElementType> extends React.HTMLAttributes<HTMLDivElement> {
5
5
  name: string;
6
- componentAs?: React.ElementType;
6
+ componentAs?: TElement;
7
7
  componentClassPrefix?: string;
8
8
  }
9
9
  /**
10
10
  * Create a component with `classPrefix` and `as` attributes.
11
11
  */
12
- declare function createComponent({ name, componentAs, componentClassPrefix, ...defaultProps }: Props): RsRefForwardingComponent<"div", ComponentProps>;
12
+ declare function createComponent<TElement extends React.ElementType = 'div'>({ name, componentAs, componentClassPrefix, ...defaultProps }: Props<TElement>): RsRefForwardingComponent<TElement, ComponentProps>;
13
13
  export default createComponent;
@@ -262,3 +262,15 @@ export declare function getTreeNodeIndent(rtl: any, layer: any, absolute?: boole
262
262
  * @returns
263
263
  */
264
264
  export declare function getNodeFormattedRefKey(value: string | number): string;
265
+ /**
266
+ * create drag preview when tree node start drag
267
+ * @param name
268
+ * @param className
269
+ * @returns
270
+ */
271
+ export declare function createDragPreview(name: string, className: string): HTMLDivElement;
272
+ /**
273
+ * remove drag preview when tree node drop
274
+ */
275
+ export declare function removeDragPreview(): void;
276
+ export declare function stringifyTreeNodeLabel(label: string | React.ReactNode): string;
@@ -35,6 +35,9 @@ exports.focusToActiveTreeNode = focusToActiveTreeNode;
35
35
  exports.isSearching = isSearching;
36
36
  exports.getTreeNodeIndent = getTreeNodeIndent;
37
37
  exports.getNodeFormattedRefKey = getNodeFormattedRefKey;
38
+ exports.createDragPreview = createDragPreview;
39
+ exports.removeDragPreview = removeDragPreview;
40
+ exports.stringifyTreeNodeLabel = stringifyTreeNodeLabel;
38
41
  exports.getScrollToIndex = exports.focusPreviousItem = exports.focusNextItem = exports.focusTreeNode = exports.getElementByDataKey = exports.getActiveItem = exports.getActiveIndex = exports.getFocusableItems = void 0;
39
42
 
40
43
  var _extends3 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
@@ -1128,4 +1131,43 @@ function getTreeNodeIndent(rtl, layer, absolute) {
1128
1131
 
1129
1132
  function getNodeFormattedRefKey(value) {
1130
1133
  return "" + (typeof value === 'number' ? 'Number_' : 'String_') + value;
1134
+ }
1135
+ /**
1136
+ * create drag preview when tree node start drag
1137
+ * @param name
1138
+ * @param className
1139
+ * @returns
1140
+ */
1141
+
1142
+
1143
+ function createDragPreview(name, className) {
1144
+ var dragPreview = document.createElement('div');
1145
+ dragPreview.id = 'rs-tree-drag-preview';
1146
+ dragPreview.innerHTML = name;
1147
+ dragPreview.classList.add(className);
1148
+ document.body.appendChild(dragPreview);
1149
+ return dragPreview;
1150
+ }
1151
+ /**
1152
+ * remove drag preview when tree node drop
1153
+ */
1154
+
1155
+
1156
+ function removeDragPreview() {
1157
+ var _dragPreview$parentNo, _dragPreview$parentNo2;
1158
+
1159
+ var dragPreview = document.getElementById('rs-tree-drag-preview');
1160
+ dragPreview === null || dragPreview === void 0 ? void 0 : (_dragPreview$parentNo = dragPreview.parentNode) === null || _dragPreview$parentNo === void 0 ? void 0 : (_dragPreview$parentNo2 = _dragPreview$parentNo.removeChild) === null || _dragPreview$parentNo2 === void 0 ? void 0 : _dragPreview$parentNo2.call(_dragPreview$parentNo, dragPreview);
1161
+ }
1162
+
1163
+ function stringifyTreeNodeLabel(label) {
1164
+ if (typeof label === 'string') {
1165
+ return label;
1166
+ } else if ( /*#__PURE__*/_react.default.isValidElement(label)) {
1167
+ var _nodes2 = (0, _reactToString.default)(label);
1168
+
1169
+ return _nodes2.join('');
1170
+ }
1171
+
1172
+ return '';
1131
1173
  }
@@ -41,7 +41,8 @@ function useCustom(keys, overrideLocale) {
41
41
  rtl = _useContext$rtl === void 0 ? getDefaultRTL() : _useContext$rtl,
42
42
  formatDate = _useContext.formatDate,
43
43
  parseDate = _useContext.parseDate,
44
- toasters = _useContext.toasters;
44
+ toasters = _useContext.toasters,
45
+ disableRipple = _useContext.disableRipple;
45
46
 
46
47
  var componentLocale = (0, _extends2.default)({}, locale === null || locale === void 0 ? void 0 : locale.common, typeof keys === 'string' ? locale === null || locale === void 0 ? void 0 : locale[keys] : typeof keys === 'object' ? mergeObject(keys.map(function (key) {
47
48
  return locale === null || locale === void 0 ? void 0 : locale[key];
@@ -69,6 +70,7 @@ function useCustom(keys, overrideLocale) {
69
70
  locale: componentLocale,
70
71
  rtl: rtl,
71
72
  toasters: toasters,
73
+ disableRipple: disableRipple,
72
74
  formatDate: formatDate || defaultFormatDate,
73
75
  parseDate: parseDate || defaultParseDate
74
76
  };