rsuite 5.53.2 → 5.54.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 (100) hide show
  1. package/AutoComplete/styles/index.css +0 -2
  2. package/CHANGELOG.md +18 -0
  3. package/Cascader/styles/index.css +0 -2
  4. package/CheckPicker/styles/index.css +0 -2
  5. package/CheckTree/styles/index.css +0 -2
  6. package/CheckTreePicker/styles/index.css +0 -2
  7. package/DatePicker/styles/index.css +0 -2
  8. package/DateRangePicker/styles/index.css +0 -2
  9. package/FormGroup/styles/index.css +3 -0
  10. package/FormGroup/styles/index.less +2 -0
  11. package/InlineEdit/package.json +7 -0
  12. package/InlineEdit/styles/index.css +112 -0
  13. package/InlineEdit/styles/index.less +48 -0
  14. package/InputGroup/styles/index.css +0 -2
  15. package/InputGroup/styles/index.less +0 -2
  16. package/InputNumber/styles/index.css +0 -2
  17. package/InputPicker/styles/index.css +0 -2
  18. package/MultiCascader/styles/index.css +0 -2
  19. package/Pagination/styles/index.css +0 -2
  20. package/SelectPicker/styles/index.css +0 -2
  21. package/TagInput/styles/index.css +1 -4
  22. package/TagPicker/styles/index.css +1 -4
  23. package/TagPicker/styles/index.less +1 -2
  24. package/cjs/DatePicker/DatePicker.js +1 -1
  25. package/cjs/DateRangePicker/DateRangePicker.js +5 -0
  26. package/cjs/InlineEdit/EditableControls.d.ts +8 -0
  27. package/cjs/InlineEdit/EditableControls.js +34 -0
  28. package/cjs/InlineEdit/InlineEdit.d.ts +56 -0
  29. package/cjs/InlineEdit/InlineEdit.js +98 -0
  30. package/cjs/InlineEdit/index.d.ts +3 -0
  31. package/cjs/InlineEdit/index.js +9 -0
  32. package/cjs/InlineEdit/renderChildren.d.ts +12 -0
  33. package/cjs/InlineEdit/renderChildren.js +40 -0
  34. package/cjs/InlineEdit/useEditState.d.ts +22 -0
  35. package/cjs/InlineEdit/useEditState.js +82 -0
  36. package/cjs/InlineEdit/useFocusEvent.d.ts +14 -0
  37. package/cjs/InlineEdit/useFocusEvent.js +61 -0
  38. package/cjs/Input/Input.js +6 -3
  39. package/cjs/InputPicker/InputPicker.js +6 -5
  40. package/cjs/Slider/Slider.d.ts +2 -0
  41. package/cjs/Slider/Slider.js +4 -2
  42. package/cjs/index.d.ts +2 -0
  43. package/cjs/index.js +3 -1
  44. package/cjs/internals/Picker/Listbox.d.ts +5 -1
  45. package/cjs/internals/Picker/Listbox.js +6 -5
  46. package/cjs/internals/Picker/hooks/usePickerRef.js +2 -0
  47. package/cjs/internals/Picker/types.d.ts +2 -0
  48. package/cjs/internals/symbols.d.ts +2 -0
  49. package/cjs/internals/symbols.js +9 -0
  50. package/cjs/utils/getDataGroupBy.d.ts +0 -1
  51. package/cjs/utils/getDataGroupBy.js +3 -5
  52. package/dist/rsuite-no-reset-rtl.css +91 -4
  53. package/dist/rsuite-no-reset-rtl.min.css +1 -1
  54. package/dist/rsuite-no-reset-rtl.min.css.map +1 -1
  55. package/dist/rsuite-no-reset.css +91 -4
  56. package/dist/rsuite-no-reset.min.css +1 -1
  57. package/dist/rsuite-no-reset.min.css.map +1 -1
  58. package/dist/rsuite-rtl.css +91 -4
  59. package/dist/rsuite-rtl.min.css +1 -1
  60. package/dist/rsuite-rtl.min.css.map +1 -1
  61. package/dist/rsuite.css +91 -4
  62. package/dist/rsuite.js +86 -9
  63. package/dist/rsuite.js.map +1 -1
  64. package/dist/rsuite.min.css +1 -1
  65. package/dist/rsuite.min.css.map +1 -1
  66. package/dist/rsuite.min.js +1 -1
  67. package/dist/rsuite.min.js.map +1 -1
  68. package/esm/DatePicker/DatePicker.js +1 -1
  69. package/esm/DateRangePicker/DateRangePicker.js +5 -0
  70. package/esm/InlineEdit/EditableControls.d.ts +8 -0
  71. package/esm/InlineEdit/EditableControls.js +28 -0
  72. package/esm/InlineEdit/InlineEdit.d.ts +56 -0
  73. package/esm/InlineEdit/InlineEdit.js +92 -0
  74. package/esm/InlineEdit/index.d.ts +3 -0
  75. package/esm/InlineEdit/index.js +3 -0
  76. package/esm/InlineEdit/renderChildren.d.ts +12 -0
  77. package/esm/InlineEdit/renderChildren.js +34 -0
  78. package/esm/InlineEdit/useEditState.d.ts +22 -0
  79. package/esm/InlineEdit/useEditState.js +76 -0
  80. package/esm/InlineEdit/useFocusEvent.d.ts +14 -0
  81. package/esm/InlineEdit/useFocusEvent.js +56 -0
  82. package/esm/Input/Input.js +6 -3
  83. package/esm/InputPicker/InputPicker.js +6 -5
  84. package/esm/Slider/Slider.d.ts +2 -0
  85. package/esm/Slider/Slider.js +4 -2
  86. package/esm/index.d.ts +2 -0
  87. package/esm/index.js +1 -0
  88. package/esm/internals/Picker/Listbox.d.ts +5 -1
  89. package/esm/internals/Picker/Listbox.js +7 -6
  90. package/esm/internals/Picker/hooks/usePickerRef.js +2 -0
  91. package/esm/internals/Picker/types.d.ts +2 -0
  92. package/esm/internals/symbols.d.ts +2 -0
  93. package/esm/internals/symbols.js +3 -0
  94. package/esm/utils/getDataGroupBy.d.ts +0 -1
  95. package/esm/utils/getDataGroupBy.js +2 -3
  96. package/package.json +1 -1
  97. package/styles/color-modes/dark.less +3 -0
  98. package/styles/color-modes/high-contrast.less +3 -0
  99. package/styles/color-modes/light.less +3 -0
  100. package/styles/index.less +1 -0
@@ -0,0 +1,98 @@
1
+ 'use client';
2
+ "use strict";
3
+
4
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
5
+ exports.__esModule = true;
6
+ exports.default = void 0;
7
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
8
+ var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
9
+ var _react = _interopRequireDefault(require("react"));
10
+ var _propTypes = _interopRequireDefault(require("prop-types"));
11
+ var _utils = require("../utils");
12
+ var _propTypes2 = require("../internals/propTypes");
13
+ var _EditableControls = _interopRequireDefault(require("./EditableControls"));
14
+ var _useFocusEvent2 = _interopRequireDefault(require("./useFocusEvent"));
15
+ var _useEditState2 = _interopRequireDefault(require("./useEditState"));
16
+ var _renderChildren = require("./renderChildren");
17
+ var InlineEdit = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
18
+ var _props$as = props.as,
19
+ Component = _props$as === void 0 ? 'div' : _props$as,
20
+ _props$children = props.children,
21
+ children = _props$children === void 0 ? _renderChildren.defaultRenderInput : _props$children,
22
+ _props$classPrefix = props.classPrefix,
23
+ classPrefix = _props$classPrefix === void 0 ? 'inline-edit' : _props$classPrefix,
24
+ className = props.className,
25
+ disabled = props.disabled,
26
+ size = props.size,
27
+ _props$showControls = props.showControls,
28
+ showControls = _props$showControls === void 0 ? true : _props$showControls,
29
+ _props$stateOnBlur = props.stateOnBlur,
30
+ stateOnBlur = _props$stateOnBlur === void 0 ? 'save' : _props$stateOnBlur,
31
+ placeholder = props.placeholder,
32
+ rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["as", "children", "classPrefix", "className", "disabled", "size", "showControls", "stateOnBlur", "placeholder"]);
33
+ var _useClassNames = (0, _utils.useClassNames)(classPrefix),
34
+ withClassPrefix = _useClassNames.withClassPrefix,
35
+ merge = _useClassNames.merge,
36
+ prefix = _useClassNames.prefix;
37
+ var _useEditState = (0, _useEditState2.default)((0, _extends2.default)({}, rest, {
38
+ disabled: disabled
39
+ })),
40
+ value = _useEditState.value,
41
+ isEditing = _useEditState.isEditing,
42
+ onSave = _useEditState.onSave,
43
+ onCancel = _useEditState.onCancel,
44
+ onChange = _useEditState.onChange,
45
+ onKeyDown = _useEditState.onKeyDown,
46
+ onClick = _useEditState.onClick,
47
+ htmlProps = _useEditState.htmlProps;
48
+ var _useFocusEvent = (0, _useFocusEvent2.default)({
49
+ isEditing: isEditing,
50
+ stateOnBlur: stateOnBlur,
51
+ onSave: onSave,
52
+ onCancel: onCancel
53
+ }),
54
+ target = _useFocusEvent.target,
55
+ root = _useFocusEvent.root,
56
+ onBlur = _useFocusEvent.onBlur;
57
+ var childrenProps = {
58
+ size: size,
59
+ value: value,
60
+ disabled: disabled,
61
+ placeholder: placeholder,
62
+ plaintext: !isEditing,
63
+ onChange: onChange,
64
+ onBlur: onBlur
65
+ };
66
+ return /*#__PURE__*/_react.default.createElement(Component, (0, _extends2.default)({
67
+ ref: (0, _utils.mergeRefs)(root, ref),
68
+ tabIndex: 0,
69
+ className: merge(className, withClassPrefix(size, {
70
+ disabled: disabled
71
+ })),
72
+ onClick: onClick,
73
+ onKeyDown: onKeyDown
74
+ }, htmlProps), (0, _renderChildren.renderChildren)(children, childrenProps, target), showControls && isEditing && /*#__PURE__*/_react.default.createElement(_EditableControls.default, {
75
+ className: prefix('controls'),
76
+ onSave: onSave,
77
+ onCancel: onCancel
78
+ }));
79
+ });
80
+ InlineEdit.displayName = 'InlineEdit';
81
+ InlineEdit.propTypes = {
82
+ children: _propTypes.default.any,
83
+ classPrefix: _propTypes.default.string,
84
+ className: _propTypes.default.string,
85
+ disabled: _propTypes.default.bool,
86
+ defaultValue: _propTypes.default.any,
87
+ value: _propTypes.default.any,
88
+ showControls: _propTypes.default.bool,
89
+ placeholder: _propTypes.default.string,
90
+ size: (0, _propTypes2.oneOf)(['lg', 'md', 'sm', 'xs']),
91
+ stateOnBlur: (0, _propTypes2.oneOf)(['save', 'cancel']),
92
+ onChange: _propTypes.default.func,
93
+ onCancel: _propTypes.default.func,
94
+ onSave: _propTypes.default.func,
95
+ onEdit: _propTypes.default.func
96
+ };
97
+ var _default = InlineEdit;
98
+ exports.default = _default;
@@ -0,0 +1,3 @@
1
+ import InlineEdit from './InlineEdit';
2
+ export type { InlineEditProps } from './InlineEdit';
3
+ export default InlineEdit;
@@ -0,0 +1,9 @@
1
+ 'use client';
2
+ "use strict";
3
+
4
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
5
+ exports.__esModule = true;
6
+ exports.default = void 0;
7
+ var _InlineEdit = _interopRequireDefault(require("./InlineEdit"));
8
+ var _default = _InlineEdit.default;
9
+ exports.default = _default;
@@ -0,0 +1,12 @@
1
+ import React from 'react';
2
+ export interface ChildrenProps {
3
+ size?: 'lg' | 'md' | 'sm' | 'xs';
4
+ disabled?: boolean;
5
+ placeholder?: string;
6
+ plaintext?: boolean;
7
+ value: any;
8
+ onChange: (value: any, event: React.SyntheticEvent) => void;
9
+ onBlur?: (event: React.SyntheticEvent) => void;
10
+ }
11
+ export declare function defaultRenderInput(props: ChildrenProps, ref: React.Ref<any>): JSX.Element;
12
+ export declare function renderChildren(children: ((props: ChildrenProps, ref: React.Ref<any>) => React.ReactElement) | React.ReactElement, props: ChildrenProps, ref: React.Ref<any>): React.ReactElement<any, string | React.JSXElementConstructor<any>>;
@@ -0,0 +1,40 @@
1
+ 'use client';
2
+ "use strict";
3
+
4
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
5
+ exports.__esModule = true;
6
+ exports.defaultRenderInput = defaultRenderInput;
7
+ exports.renderChildren = renderChildren;
8
+ var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
9
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
+ var _react = _interopRequireDefault(require("react"));
11
+ var _Input = _interopRequireDefault(require("../Input"));
12
+ function defaultRenderInput(props, ref) {
13
+ return /*#__PURE__*/_react.default.createElement(_Input.default, (0, _extends2.default)({
14
+ ref: ref
15
+ }, props));
16
+ }
17
+ var pickers = ['DatePicker', 'DateRangePicker', 'InputPicker', 'TagPicker', 'Cascader', 'MultiCascader', 'SelectPicker', 'CheckPicker', 'CheckTreePicker', 'TreePicker'];
18
+ function getDisplayName(Component) {
19
+ var _Component$type;
20
+ if (typeof (Component === null || Component === void 0 ? void 0 : Component.type) === 'string') {
21
+ return Component === null || Component === void 0 ? void 0 : Component.type;
22
+ }
23
+ return (Component === null || Component === void 0 ? void 0 : (_Component$type = Component.type) === null || _Component$type === void 0 ? void 0 : _Component$type.displayName) || '';
24
+ }
25
+ function renderChildren(children, props, ref) {
26
+ if (typeof children === 'function') {
27
+ return children(props, ref);
28
+ }
29
+ if (pickers.includes(getDisplayName(children))) {
30
+ var onBlur = props.onBlur,
31
+ rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["onBlur"]); // if the children is a picker, we should pass the onBlur to the onClose
32
+ return /*#__PURE__*/_react.default.cloneElement(children, (0, _extends2.default)({}, rest, {
33
+ onClose: onBlur,
34
+ ref: ref
35
+ }));
36
+ }
37
+ return /*#__PURE__*/_react.default.cloneElement(children, (0, _extends2.default)({}, props, {
38
+ ref: ref
39
+ }));
40
+ }
@@ -0,0 +1,22 @@
1
+ import React from 'react';
2
+ interface EditStateProps {
3
+ value?: any;
4
+ defaultValue?: any;
5
+ disabled?: boolean;
6
+ onChange?: (value: any, event: React.ChangeEvent) => void;
7
+ onEdit?: (event: React.SyntheticEvent) => void;
8
+ onCancel?: (event?: React.MouseEvent) => void;
9
+ onSave?: (event?: React.MouseEvent) => void;
10
+ onClick?: (event: React.SyntheticEvent) => void;
11
+ }
12
+ declare const useEditState: (props: EditStateProps) => {
13
+ isEditing: boolean;
14
+ value: any;
15
+ onClick: (...args: any[]) => any;
16
+ onChange: (...args: any[]) => any;
17
+ onCancel: (...args: any[]) => any;
18
+ onSave: (...args: any[]) => any;
19
+ onKeyDown: (...args: any[]) => any;
20
+ htmlProps: {};
21
+ };
22
+ export default useEditState;
@@ -0,0 +1,82 @@
1
+ 'use client';
2
+ "use strict";
3
+
4
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
5
+ exports.__esModule = true;
6
+ exports.default = void 0;
7
+ var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
8
+ var _react = require("react");
9
+ var _utils = require("../utils");
10
+ var useEditState = function useEditState(props) {
11
+ var valueProp = props.value,
12
+ defaultValue = props.defaultValue,
13
+ disabled = props.disabled,
14
+ onChange = props.onChange,
15
+ onEdit = props.onEdit,
16
+ onCancel = props.onCancel,
17
+ onSave = props.onSave,
18
+ onClick = props.onClick,
19
+ htmlProps = (0, _objectWithoutPropertiesLoose2.default)(props, ["value", "defaultValue", "disabled", "onChange", "onEdit", "onCancel", "onSave", "onClick"]);
20
+ var _useState = (0, _react.useState)(false),
21
+ isEditing = _useState[0],
22
+ setIsEditing = _useState[1];
23
+ var _useControlled = (0, _utils.useControlled)(valueProp, defaultValue),
24
+ value = _useControlled[0],
25
+ setValue = _useControlled[1]; // When editing, the value is not updated, and the original value is restored when canceling
26
+ var _useState2 = (0, _react.useState)(),
27
+ resetValue = _useState2[0],
28
+ setResetValue = _useState2[1];
29
+ var handleClick = (0, _utils.useEventCallback)(function (event) {
30
+ if (disabled) {
31
+ return;
32
+ }
33
+ onClick === null || onClick === void 0 ? void 0 : onClick(event);
34
+ onEdit === null || onEdit === void 0 ? void 0 : onEdit(event);
35
+ setIsEditing(true);
36
+ setResetValue(value);
37
+ });
38
+ var handleChange = (0, _utils.useEventCallback)(function (value, event) {
39
+ setValue(value);
40
+ onChange === null || onChange === void 0 ? void 0 : onChange(value, event);
41
+ });
42
+ var handleCancel = (0, _utils.useEventCallback)(function (event) {
43
+ var _event$stopPropagatio;
44
+ setIsEditing(false);
45
+ setValue(resetValue);
46
+ onCancel === null || onCancel === void 0 ? void 0 : onCancel(event);
47
+ event === null || event === void 0 ? void 0 : (_event$stopPropagatio = event.stopPropagation) === null || _event$stopPropagatio === void 0 ? void 0 : _event$stopPropagatio.call(event);
48
+ });
49
+ var handleSave = (0, _utils.useEventCallback)(function (event) {
50
+ var _event$stopPropagatio2;
51
+ setIsEditing(false);
52
+ onSave === null || onSave === void 0 ? void 0 : onSave(event);
53
+ event === null || event === void 0 ? void 0 : (_event$stopPropagatio2 = event.stopPropagation) === null || _event$stopPropagatio2 === void 0 ? void 0 : _event$stopPropagatio2.call(event);
54
+ });
55
+ var handleKeyDown = (0, _utils.useEventCallback)(function (event) {
56
+ var _event$target;
57
+ if (isEditing) {
58
+ switch (event.key) {
59
+ case 'Enter':
60
+ if (((_event$target = event.target) === null || _event$target === void 0 ? void 0 : _event$target.tagName) === 'INPUT') {
61
+ handleSave(event);
62
+ }
63
+ break;
64
+ case 'Escape':
65
+ handleCancel(event);
66
+ break;
67
+ }
68
+ }
69
+ });
70
+ return {
71
+ isEditing: isEditing,
72
+ value: value,
73
+ onClick: handleClick,
74
+ onChange: handleChange,
75
+ onCancel: handleCancel,
76
+ onSave: handleSave,
77
+ onKeyDown: handleKeyDown,
78
+ htmlProps: htmlProps
79
+ };
80
+ };
81
+ var _default = useEditState;
82
+ exports.default = _default;
@@ -0,0 +1,14 @@
1
+ /// <reference types="react" />
2
+ import { PickerHandle } from '../internals/Picker/types';
3
+ interface FocusEventProps {
4
+ isEditing: boolean;
5
+ stateOnBlur?: 'save' | 'cancel';
6
+ onSave?: (event?: React.FocusEvent) => void;
7
+ onCancel?: (event?: React.FocusEvent) => void;
8
+ }
9
+ declare const useFocusEvent: ({ isEditing, stateOnBlur, onSave, onCancel }: FocusEventProps) => {
10
+ target: import("react").RefObject<HTMLInputElement | PickerHandle>;
11
+ root: import("react").RefObject<HTMLDivElement>;
12
+ onBlur: (...args: any[]) => any;
13
+ };
14
+ export default useFocusEvent;
@@ -0,0 +1,61 @@
1
+ 'use client';
2
+ "use strict";
3
+
4
+ exports.__esModule = true;
5
+ exports.default = void 0;
6
+ var _react = require("react");
7
+ var _domLib = require("dom-lib");
8
+ var _utils = require("../utils");
9
+ var _symbols = require("../internals/symbols");
10
+ var useFocusEvent = function useFocusEvent(_ref) {
11
+ var _ref$current;
12
+ var isEditing = _ref.isEditing,
13
+ stateOnBlur = _ref.stateOnBlur,
14
+ onSave = _ref.onSave,
15
+ onCancel = _ref.onCancel;
16
+ var ref = (0, _react.useRef)(null);
17
+ var rootRef = (0, _react.useRef)(null);
18
+ var isPicker = ((_ref$current = ref.current) === null || _ref$current === void 0 ? void 0 : _ref$current.type) === _symbols.RSUITE_PICKER_TYPE;
19
+ var focus = function focus() {
20
+ if (isPicker) {
21
+ setTimeout(function () {
22
+ var _ref$current2, _ref$current2$target, _ref$current2$target$;
23
+ (_ref$current2 = ref.current) === null || _ref$current2 === void 0 ? void 0 : (_ref$current2$target = _ref$current2.target) === null || _ref$current2$target === void 0 ? void 0 : (_ref$current2$target$ = _ref$current2$target.focus) === null || _ref$current2$target$ === void 0 ? void 0 : _ref$current2$target$.call(_ref$current2$target);
24
+ }, 100);
25
+ } else {
26
+ var _ref$current3, _ref$current3$focus;
27
+ (_ref$current3 = ref.current) === null || _ref$current3 === void 0 ? void 0 : (_ref$current3$focus = _ref$current3.focus) === null || _ref$current3$focus === void 0 ? void 0 : _ref$current3$focus.call(_ref$current3);
28
+ }
29
+ };
30
+ var handleBlur = (0, _utils.useEventCallback)(function (event) {
31
+ if (event) {
32
+ var _event$relatedTarget;
33
+ var relatedTarget = (_event$relatedTarget = event.relatedTarget) !== null && _event$relatedTarget !== void 0 ? _event$relatedTarget : (0, _domLib.ownerDocument)(event.currentTarget).activeElement;
34
+ if (rootRef.current && (0, _domLib.contains)(rootRef.current, relatedTarget)) {
35
+ return;
36
+ }
37
+ }
38
+ if (stateOnBlur === 'save') {
39
+ onSave === null || onSave === void 0 ? void 0 : onSave(event);
40
+ } else if (stateOnBlur === 'cancel') {
41
+ onCancel === null || onCancel === void 0 ? void 0 : onCancel(event);
42
+ }
43
+ });
44
+ (0, _utils.useIsomorphicLayoutEffect)(function () {
45
+ if (isEditing) {
46
+ focus();
47
+ }
48
+ }, []);
49
+ (0, _utils.useUpdateEffect)(function () {
50
+ if (isEditing) {
51
+ focus();
52
+ }
53
+ }, [isEditing]);
54
+ return {
55
+ target: ref,
56
+ root: rootRef,
57
+ onBlur: handleBlur
58
+ };
59
+ };
60
+ var _default = useFocusEvent;
61
+ exports.default = _default;
@@ -35,13 +35,14 @@ var Input = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
35
35
  size = props.size,
36
36
  htmlSize = props.htmlSize,
37
37
  plaintext = props.plaintext,
38
+ placeholder = props.placeholder,
38
39
  readOnly = props.readOnly,
39
40
  onPressEnter = props.onPressEnter,
40
41
  onFocus = props.onFocus,
41
42
  onBlur = props.onBlur,
42
43
  onKeyDown = props.onKeyDown,
43
44
  onChange = props.onChange,
44
- rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["className", "classPrefix", "as", "type", "disabled", "value", "defaultValue", "inputRef", "id", "size", "htmlSize", "plaintext", "readOnly", "onPressEnter", "onFocus", "onBlur", "onKeyDown", "onChange"]);
45
+ rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["className", "classPrefix", "as", "type", "disabled", "value", "defaultValue", "inputRef", "id", "size", "htmlSize", "plaintext", "placeholder", "readOnly", "onPressEnter", "onFocus", "onBlur", "onKeyDown", "onChange"]);
45
46
  var handleKeyDown = function handleKeyDown(event) {
46
47
  if (event.key === _utils.KEY_VALUES.ENTER) {
47
48
  onPressEnter === null || onPressEnter === void 0 ? void 0 : onPressEnter(event);
@@ -66,7 +67,8 @@ var Input = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
66
67
  if (plaintext) {
67
68
  return /*#__PURE__*/_react.default.createElement(_Plaintext.default, {
68
69
  ref: ref,
69
- localeKey: "unfilled"
70
+ localeKey: "unfilled",
71
+ placeholder: placeholder
70
72
  }, typeof value === 'undefined' ? defaultValue : value);
71
73
  }
72
74
  var inputable = !disabled && !readOnly;
@@ -86,7 +88,8 @@ var Input = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
86
88
  defaultValue: defaultValue,
87
89
  disabled: disabled,
88
90
  readOnly: readOnly,
89
- size: htmlSize
91
+ size: htmlSize,
92
+ placeholder: placeholder
90
93
  }));
91
94
  });
92
95
  Input.displayName = 'Input';
@@ -30,6 +30,7 @@ var _Tag = _interopRequireDefault(require("../Tag"));
30
30
  var _InputAutosize = _interopRequireDefault(require("./InputAutosize"));
31
31
  var _TextBox = _interopRequireDefault(require("./TextBox"));
32
32
  var _InputPickerContext = _interopRequireDefault(require("./InputPickerContext"));
33
+ var _Stack = _interopRequireDefault(require("../Stack"));
33
34
  var _templateObject, _templateObject2, _templateObject3, _templateObject4;
34
35
  var convertSize = function convertSize(size) {
35
36
  switch (size) {
@@ -642,12 +643,12 @@ var InputPicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
642
643
  if (plaintext) {
643
644
  var plaintextProps = {};
644
645
 
645
- // TagPicker has -6px margin-left on the plaintext wrapper
646
- // for fixing margin-left on tags from 2nd line on
646
+ // When multiple selection, the tag is displayed in a stack layout.
647
647
  if (multi && hasValue) {
648
- plaintextProps.style = {
649
- marginLeft: -6
650
- };
648
+ plaintextProps.as = _Stack.default;
649
+ plaintextProps.spacing = 6;
650
+ plaintextProps.wrap = true;
651
+ plaintextProps.childrenRenderMode = 'clone';
651
652
  }
652
653
  return /*#__PURE__*/_react.default.createElement(_Plaintext.default, (0, _extends2.default)({
653
654
  localeKey: "notSelected",
@@ -40,6 +40,8 @@ export interface SliderProps<T = number> extends WithAsProps, FormControlBasePro
40
40
  tooltip?: boolean;
41
41
  /** Show sliding progress bar */
42
42
  progress?: boolean;
43
+ /** Placeholder text */
44
+ placeholder?: React.ReactNode;
43
45
  /** Vertical Slide */
44
46
  vertical?: boolean;
45
47
  /** Customize labels on the render ruler */
@@ -80,12 +80,13 @@ var Slider = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
80
80
  valueProp = props.value,
81
81
  _props$max = props.max,
82
82
  maxProp = _props$max === void 0 ? 100 : _props$max,
83
+ placeholder = props.placeholder,
83
84
  getAriaValueText = props.getAriaValueText,
84
85
  renderTooltip = props.renderTooltip,
85
86
  renderMark = props.renderMark,
86
87
  onChange = props.onChange,
87
88
  onChangeCommitted = props.onChangeCommitted,
88
- rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["aria-label", "aria-labelledby", "aria-valuetext", "as", "graduated", "className", "barClassName", "progress", "vertical", "disabled", "readOnly", "plaintext", "classPrefix", "min", "handleClassName", "handleStyle", "handleTitle", "tooltip", "step", "defaultValue", "value", "max", "getAriaValueText", "renderTooltip", "renderMark", "onChange", "onChangeCommitted"]);
89
+ rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["aria-label", "aria-labelledby", "aria-valuetext", "as", "graduated", "className", "barClassName", "progress", "vertical", "disabled", "readOnly", "plaintext", "classPrefix", "min", "handleClassName", "handleStyle", "handleTitle", "tooltip", "step", "defaultValue", "value", "max", "placeholder", "getAriaValueText", "renderTooltip", "renderMark", "onChange", "onChangeCommitted"]);
89
90
  var barRef = (0, _react.useRef)(null);
90
91
  var _useClassNames = (0, _utils.useClassNames)(classPrefix),
91
92
  merge = _useClassNames.merge,
@@ -207,7 +208,8 @@ var Slider = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
207
208
  if (plaintext) {
208
209
  return /*#__PURE__*/_react.default.createElement(_Plaintext.default, {
209
210
  localeKey: "notSelected",
210
- ref: ref
211
+ ref: ref,
212
+ placeholder: placeholder
211
213
  }, value);
212
214
  }
213
215
  return /*#__PURE__*/_react.default.createElement(Componnet, (0, _extends2.default)({}, rest, {
package/cjs/index.d.ts CHANGED
@@ -108,6 +108,8 @@ export { default as RangeSlider } from './RangeSlider';
108
108
  export type { RangeSliderProps } from './RangeSlider';
109
109
  export { default as Rate } from './Rate';
110
110
  export type { RateProps } from './Rate';
111
+ export { default as InlineEdit } from './InlineEdit';
112
+ export type { InlineEditProps } from './InlineEdit';
111
113
  export { default as Tree } from './Tree';
112
114
  export type { TreeProps } from './Tree';
113
115
  export { default as CheckTree } from './CheckTree';
package/cjs/index.js CHANGED
@@ -4,7 +4,7 @@
4
4
  var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
5
5
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
6
6
  exports.__esModule = true;
7
- exports.useFormClassNames = exports.useToaster = exports.VisuallyHidden = exports.useMediaQuery = exports.CustomProvider = exports.Affix = exports.DOMHelper = exports.Animation = exports.Schema = exports.Stack = exports.Divider = exports.Footer = exports.Sidebar = exports.Header = exports.Content = exports.Container = exports.FlexboxGrid = exports.Col = exports.Row = exports.Grid = exports.Carousel = exports.Calendar = exports.List = exports.TagGroup = exports.Tag = exports.Timeline = exports.Progress = exports.Table = exports.Tabs = exports.PanelGroup = exports.Accordion = exports.Panel = exports.CheckTree = exports.Tree = exports.Rate = exports.RangeSlider = exports.Slider = exports.Uploader = exports.AutoComplete = exports.DateRangePicker = exports.DateRangeInput = exports.DatePicker = exports.DateInput = exports.MultiCascader = exports.Cascader = exports.CheckTreePicker = exports.TreePicker = exports.TagInput = exports.TagPicker = exports.InputPicker = exports.CheckPicker = exports.SelectPicker = exports.RadioTileGroup = exports.RadioTile = exports.RadioGroup = exports.Radio = exports.CheckboxGroup = exports.Checkbox = exports.InputGroup = exports.InputNumber = exports.MaskedInput = exports.Input = exports.Form = exports.Toggle = exports.Steps = exports.Pagination = exports.Breadcrumb = exports.Sidenav = exports.Navbar = exports.Nav = exports.Dropdown = exports.toaster = exports.AvatarGroup = exports.Avatar = exports.Badge = exports.Placeholder = exports.SafeAnchor = exports.Loader = exports.Drawer = exports.Message = exports.Notification = exports.Modal = exports.Popover = exports.Tooltip = exports.Whisper = exports.ButtonGroup = exports.ButtonToolbar = exports.IconButton = exports.Button = void 0;
7
+ exports.useFormClassNames = exports.useToaster = exports.VisuallyHidden = exports.useMediaQuery = exports.CustomProvider = exports.Affix = exports.DOMHelper = exports.Animation = exports.Schema = exports.Stack = exports.Divider = exports.Footer = exports.Sidebar = exports.Header = exports.Content = exports.Container = exports.FlexboxGrid = exports.Col = exports.Row = exports.Grid = exports.Carousel = exports.Calendar = exports.List = exports.TagGroup = exports.Tag = exports.Timeline = exports.Progress = exports.Table = exports.Tabs = exports.PanelGroup = exports.Accordion = exports.Panel = exports.CheckTree = exports.Tree = exports.InlineEdit = exports.Rate = exports.RangeSlider = exports.Slider = exports.Uploader = exports.AutoComplete = exports.DateRangePicker = exports.DateRangeInput = exports.DatePicker = exports.DateInput = exports.MultiCascader = exports.Cascader = exports.CheckTreePicker = exports.TreePicker = exports.TagInput = exports.TagPicker = exports.InputPicker = exports.CheckPicker = exports.SelectPicker = exports.RadioTileGroup = exports.RadioTile = exports.RadioGroup = exports.Radio = exports.CheckboxGroup = exports.Checkbox = exports.InputGroup = exports.InputNumber = exports.MaskedInput = exports.Input = exports.Form = exports.Toggle = exports.Steps = exports.Pagination = exports.Breadcrumb = exports.Sidenav = exports.Navbar = exports.Nav = exports.Dropdown = exports.toaster = exports.AvatarGroup = exports.Avatar = exports.Badge = exports.Placeholder = exports.SafeAnchor = exports.Loader = exports.Drawer = exports.Message = exports.Notification = exports.Modal = exports.Popover = exports.Tooltip = exports.Whisper = exports.ButtonGroup = exports.ButtonToolbar = exports.IconButton = exports.Button = void 0;
8
8
  var _Button = _interopRequireDefault(require("./Button"));
9
9
  exports.Button = _Button.default;
10
10
  var _IconButton = _interopRequireDefault(require("./IconButton"));
@@ -117,6 +117,8 @@ var _RangeSlider = _interopRequireDefault(require("./RangeSlider"));
117
117
  exports.RangeSlider = _RangeSlider.default;
118
118
  var _Rate = _interopRequireDefault(require("./Rate"));
119
119
  exports.Rate = _Rate.default;
120
+ var _InlineEdit = _interopRequireDefault(require("./InlineEdit"));
121
+ exports.InlineEdit = _InlineEdit.default;
120
122
  var _Tree = _interopRequireDefault(require("./Tree"));
121
123
  exports.Tree = _Tree.default;
122
124
  var _CheckTree = _interopRequireDefault(require("./CheckTree"));
@@ -1,9 +1,13 @@
1
1
  import React from 'react';
2
2
  import { ListProps, ListHandle } from '../../internals/Windowing';
3
3
  import { StandardProps, ItemDataType } from '../../@types/common';
4
+ import { RSUITE_PICKER_GROUP_KEY } from '../../internals/symbols';
5
+ interface InnerItemDataType extends ItemDataType {
6
+ [RSUITE_PICKER_GROUP_KEY]?: boolean;
7
+ }
4
8
  export interface ListboxProps<Multiple = false> extends StandardProps, Omit<React.HTMLAttributes<HTMLDivElement>, 'onSelect'> {
5
9
  classPrefix: string;
6
- data?: ItemDataType[];
10
+ data?: InnerItemDataType[];
7
11
  group?: boolean;
8
12
  groupBy?: string;
9
13
  disabledItemValues?: any[];
@@ -24,6 +24,7 @@ var _utils = require("../../utils");
24
24
  var _ListItemGroup = _interopRequireDefault(require("./ListItemGroup"));
25
25
  var _getDataGroupBy = require("../../utils/getDataGroupBy");
26
26
  var _useCombobox2 = _interopRequireDefault(require("./hooks/useCombobox"));
27
+ var _symbols = require("../../internals/symbols");
27
28
  var _this = void 0;
28
29
  var Listbox = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
29
30
  var _props$data = props.data,
@@ -92,7 +93,7 @@ var Listbox = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
92
93
  });
93
94
  var getRowHeight = function getRowHeight(list, index) {
94
95
  var item = list[index];
95
- if (group && item[_getDataGroupBy.KEY_GROUP] && index !== 0) {
96
+ if (group && item[_symbols.RSUITE_PICKER_GROUP_KEY] && index !== 0) {
96
97
  return rowGroupHeight;
97
98
  }
98
99
  return rowHeight;
@@ -121,7 +122,7 @@ var Listbox = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
121
122
  var filteredItems = group ? data.filter(function (item) {
122
123
  var _item$parent;
123
124
  // Display group title items
124
- if (item[_getDataGroupBy.KEY_GROUP]) return true;
125
+ if (item[_symbols.RSUITE_PICKER_GROUP_KEY]) return true;
125
126
 
126
127
  // Display items under the unfolded group
127
128
  // FIXME-Doma
@@ -145,7 +146,7 @@ var Listbox = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
145
146
  var item = itemData || data[index];
146
147
  var value = item[valueKey];
147
148
  var label = item[labelKey];
148
- if ((0, _isUndefined.default)(label) && !item[_getDataGroupBy.KEY_GROUP]) {
149
+ if ((0, _isUndefined.default)(label) && !item[_symbols.RSUITE_PICKER_GROUP_KEY]) {
149
150
  throw Error("labelKey \"" + labelKey + "\" is not defined in \"data\" : " + index);
150
151
  }
151
152
 
@@ -156,7 +157,7 @@ var Listbox = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
156
157
  * Render <ListboxGroup>
157
158
  * when if `group` is enabled
158
159
  */
159
- if (group && item[_getDataGroupBy.KEY_GROUP]) {
160
+ if (group && item[_symbols.RSUITE_PICKER_GROUP_KEY]) {
160
161
  var groupValue = item[_getDataGroupBy.KEY_GROUP_TITLE];
161
162
  // TODO: grouped options should be owned by group
162
163
  return /*#__PURE__*/_react.default.createElement(_ListItemGroup.default, {
@@ -170,7 +171,7 @@ var Listbox = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
170
171
  key: "group-" + groupValue,
171
172
  onClick: handleGroupTitleClick.bind(null, groupValue)
172
173
  }, renderMenuGroup ? renderMenuGroup(groupValue, item) : groupValue);
173
- } else if ((0, _isUndefined.default)(value) && !(0, _isUndefined.default)(item[_getDataGroupBy.KEY_GROUP])) {
174
+ } else if ((0, _isUndefined.default)(value) && !(0, _isUndefined.default)(item[_symbols.RSUITE_PICKER_GROUP_KEY])) {
174
175
  throw Error("valueKey \"" + valueKey + "\" is not defined in \"data\" : " + index + " ");
175
176
  }
176
177
  var disabled = disabledItemValues === null || disabledItemValues === void 0 ? void 0 : disabledItemValues.some(function (disabledValue) {
@@ -6,6 +6,7 @@ exports.__esModule = true;
6
6
  exports.default = void 0;
7
7
  var _react = require("react");
8
8
  var _useEventCallback = _interopRequireDefault(require("../../../utils/useEventCallback"));
9
+ var _symbols = require("../../../internals/symbols");
9
10
  /**
10
11
  * A hook of the exposed method of Picker
11
12
  */
@@ -69,6 +70,7 @@ function usePickerRef(ref, parmas) {
69
70
  }
70
71
  return list === null || list === void 0 ? void 0 : list.current;
71
72
  },
73
+ type: _symbols.RSUITE_PICKER_TYPE,
72
74
  updatePosition: handleUpdatePosition,
73
75
  open: handleOpen,
74
76
  close: handleClose
@@ -1,7 +1,9 @@
1
1
  /// <reference types="react" />
2
2
  import { RsRefForwardingComponent } from '../../@types/common';
3
3
  import type { ListHandle } from '../../internals/Windowing';
4
+ import { RSUITE_PICKER_TYPE } from '../../internals/symbols';
4
5
  export interface PickerHandle {
6
+ type?: typeof RSUITE_PICKER_TYPE;
5
7
  root: HTMLElement | null;
6
8
  list?: ListHandle;
7
9
  overlay?: HTMLElement | null;
@@ -0,0 +1,2 @@
1
+ export declare const RSUITE_PICKER_TYPE: symbol;
2
+ export declare const RSUITE_PICKER_GROUP_KEY: unique symbol;
@@ -0,0 +1,9 @@
1
+ 'use client';
2
+ "use strict";
3
+
4
+ exports.__esModule = true;
5
+ exports.RSUITE_PICKER_GROUP_KEY = exports.RSUITE_PICKER_TYPE = void 0;
6
+ var RSUITE_PICKER_TYPE = Symbol.for('rsuite.picker');
7
+ exports.RSUITE_PICKER_TYPE = RSUITE_PICKER_TYPE;
8
+ var RSUITE_PICKER_GROUP_KEY = Symbol.for('rsuite.picker_group_key');
9
+ exports.RSUITE_PICKER_GROUP_KEY = RSUITE_PICKER_GROUP_KEY;
@@ -1,4 +1,3 @@
1
- export declare const KEY_GROUP: string | symbol;
2
1
  export declare const KEY_GROUP_TITLE = "groupTitle";
3
2
  export declare function getDataGroupBy<T>(data: readonly T[], key: string, sort?: (isGroup: boolean) => <T>(a: T, b: T) => number): (T | {
4
3
  groupTitle: string;
@@ -4,12 +4,10 @@
4
4
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
5
5
  exports.__esModule = true;
6
6
  exports.getDataGroupBy = getDataGroupBy;
7
- exports.KEY_GROUP_TITLE = exports.KEY_GROUP = void 0;
7
+ exports.KEY_GROUP_TITLE = void 0;
8
8
  var _groupBy2 = _interopRequireDefault(require("lodash/groupBy"));
9
9
  var _treeUtils = require("../utils/treeUtils");
10
- var hasSymbol = typeof Symbol === 'function';
11
- var KEY_GROUP = hasSymbol ? Symbol('_$grouped') : '_$grouped';
12
- exports.KEY_GROUP = KEY_GROUP;
10
+ var _symbols = require("../internals/symbols");
13
11
  var KEY_GROUP_TITLE = 'groupTitle';
14
12
  exports.KEY_GROUP_TITLE = KEY_GROUP_TITLE;
15
13
  function getDataGroupBy(data, key, sort) {
@@ -21,7 +19,7 @@ function getDataGroupBy(data, key, sort) {
21
19
  children = _ref[1];
22
20
  return _ref2 = {
23
21
  children: isSort ? children.sort(sort(false)) : children
24
- }, _ref2[KEY_GROUP_TITLE] = groupTitle, _ref2[KEY_GROUP] = true, _ref2;
22
+ }, _ref2[KEY_GROUP_TITLE] = groupTitle, _ref2[_symbols.RSUITE_PICKER_GROUP_KEY] = true, _ref2;
25
23
  });
26
24
  if (isSort) {
27
25
  groups.sort(sort(true));