rsuite 5.53.1 → 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 (106) hide show
  1. package/AutoComplete/styles/index.css +0 -2
  2. package/CHANGELOG.md +28 -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/CheckTreePicker/CheckTreePicker.js +20 -10
  25. package/cjs/DatePicker/DatePicker.js +1 -1
  26. package/cjs/DateRangePicker/DateRangePicker.js +5 -0
  27. package/cjs/InlineEdit/EditableControls.d.ts +8 -0
  28. package/cjs/InlineEdit/EditableControls.js +34 -0
  29. package/cjs/InlineEdit/InlineEdit.d.ts +56 -0
  30. package/cjs/InlineEdit/InlineEdit.js +98 -0
  31. package/cjs/InlineEdit/index.d.ts +3 -0
  32. package/cjs/InlineEdit/index.js +9 -0
  33. package/cjs/InlineEdit/renderChildren.d.ts +12 -0
  34. package/cjs/InlineEdit/renderChildren.js +40 -0
  35. package/cjs/InlineEdit/useEditState.d.ts +22 -0
  36. package/cjs/InlineEdit/useEditState.js +82 -0
  37. package/cjs/InlineEdit/useFocusEvent.d.ts +14 -0
  38. package/cjs/InlineEdit/useFocusEvent.js +61 -0
  39. package/cjs/Input/Input.js +6 -3
  40. package/cjs/InputPicker/InputPicker.js +6 -5
  41. package/cjs/Slider/Slider.d.ts +2 -0
  42. package/cjs/Slider/Slider.js +4 -2
  43. package/cjs/TreePicker/TreePicker.js +20 -11
  44. package/cjs/index.d.ts +2 -0
  45. package/cjs/index.js +3 -1
  46. package/cjs/internals/Picker/ListCheckItem.js +0 -1
  47. package/cjs/internals/Picker/Listbox.d.ts +5 -1
  48. package/cjs/internals/Picker/Listbox.js +6 -5
  49. package/cjs/internals/Picker/hooks/usePickerRef.js +2 -0
  50. package/cjs/internals/Picker/types.d.ts +2 -0
  51. package/cjs/internals/symbols.d.ts +2 -0
  52. package/cjs/internals/symbols.js +9 -0
  53. package/cjs/utils/getDataGroupBy.d.ts +0 -1
  54. package/cjs/utils/getDataGroupBy.js +3 -5
  55. package/dist/rsuite-no-reset-rtl.css +91 -4
  56. package/dist/rsuite-no-reset-rtl.min.css +1 -1
  57. package/dist/rsuite-no-reset-rtl.min.css.map +1 -1
  58. package/dist/rsuite-no-reset.css +91 -4
  59. package/dist/rsuite-no-reset.min.css +1 -1
  60. package/dist/rsuite-no-reset.min.css.map +1 -1
  61. package/dist/rsuite-rtl.css +91 -4
  62. package/dist/rsuite-rtl.min.css +1 -1
  63. package/dist/rsuite-rtl.min.css.map +1 -1
  64. package/dist/rsuite.css +91 -4
  65. package/dist/rsuite.js +89 -12
  66. package/dist/rsuite.js.map +1 -1
  67. package/dist/rsuite.min.css +1 -1
  68. package/dist/rsuite.min.css.map +1 -1
  69. package/dist/rsuite.min.js +1 -1
  70. package/dist/rsuite.min.js.map +1 -1
  71. package/esm/CheckTreePicker/CheckTreePicker.js +20 -10
  72. package/esm/DatePicker/DatePicker.js +1 -1
  73. package/esm/DateRangePicker/DateRangePicker.js +5 -0
  74. package/esm/InlineEdit/EditableControls.d.ts +8 -0
  75. package/esm/InlineEdit/EditableControls.js +28 -0
  76. package/esm/InlineEdit/InlineEdit.d.ts +56 -0
  77. package/esm/InlineEdit/InlineEdit.js +92 -0
  78. package/esm/InlineEdit/index.d.ts +3 -0
  79. package/esm/InlineEdit/index.js +3 -0
  80. package/esm/InlineEdit/renderChildren.d.ts +12 -0
  81. package/esm/InlineEdit/renderChildren.js +34 -0
  82. package/esm/InlineEdit/useEditState.d.ts +22 -0
  83. package/esm/InlineEdit/useEditState.js +76 -0
  84. package/esm/InlineEdit/useFocusEvent.d.ts +14 -0
  85. package/esm/InlineEdit/useFocusEvent.js +56 -0
  86. package/esm/Input/Input.js +6 -3
  87. package/esm/InputPicker/InputPicker.js +6 -5
  88. package/esm/Slider/Slider.d.ts +2 -0
  89. package/esm/Slider/Slider.js +4 -2
  90. package/esm/TreePicker/TreePicker.js +20 -11
  91. package/esm/index.d.ts +2 -0
  92. package/esm/index.js +1 -0
  93. package/esm/internals/Picker/ListCheckItem.js +0 -1
  94. package/esm/internals/Picker/Listbox.d.ts +5 -1
  95. package/esm/internals/Picker/Listbox.js +7 -6
  96. package/esm/internals/Picker/hooks/usePickerRef.js +2 -0
  97. package/esm/internals/Picker/types.d.ts +2 -0
  98. package/esm/internals/symbols.d.ts +2 -0
  99. package/esm/internals/symbols.js +3 -0
  100. package/esm/utils/getDataGroupBy.d.ts +0 -1
  101. package/esm/utils/getDataGroupBy.js +2 -3
  102. package/package.json +1 -1
  103. package/styles/color-modes/dark.less +3 -0
  104. package/styles/color-modes/high-contrast.less +3 -0
  105. package/styles/color-modes/light.less +3 -0
  106. package/styles/index.less +1 -0
@@ -0,0 +1,56 @@
1
+ import React from 'react';
2
+ import { WithAsProps, RsRefForwardingComponent } from '../@types/common';
3
+ import { type ChildrenProps } from './renderChildren';
4
+ export interface InlineEditProps extends WithAsProps {
5
+ /**
6
+ * If true, the InlineEdit will be disabled.
7
+ */
8
+ disabled?: boolean;
9
+ /**
10
+ * The initial value of the InlineEdit when it is not controlled.
11
+ */
12
+ defaultValue?: any;
13
+ /**
14
+ * The value of the InlineEdit.
15
+ */
16
+ value?: any;
17
+ /**
18
+ * show the control buttons when editing.
19
+ * @default true
20
+ */
21
+ showControls?: boolean;
22
+ /**
23
+ * The placeholder of the InlineEdit.
24
+ */
25
+ placeholder?: string;
26
+ /**
27
+ * The size of the InlineEdit.
28
+ */
29
+ size?: 'lg' | 'md' | 'sm' | 'xs';
30
+ /**
31
+ * The state of the InlineEdit when it is blurred.
32
+ */
33
+ stateOnBlur?: 'save' | 'cancel';
34
+ /**
35
+ * The callback function that is called when the value of the InlineEdit is changed.
36
+ */
37
+ onChange?: (value: any, event: React.ChangeEvent) => void;
38
+ /**
39
+ * The callback function that is called when the InlineEdit is canceled.
40
+ */
41
+ onCancel?: (event?: React.SyntheticEvent) => void;
42
+ /**
43
+ * The callback function that is called when the InlineEdit is saved.
44
+ */
45
+ onSave?: (event?: React.SyntheticEvent) => void;
46
+ /**
47
+ * The callback function that is called when the InlineEdit is clicked.
48
+ */
49
+ onEdit?: (event: React.SyntheticEvent) => void;
50
+ /**
51
+ * The render function of the InlineEdit.
52
+ */
53
+ children?: ((props: ChildrenProps, ref: React.Ref<any>) => React.ReactElement) | React.ReactElement;
54
+ }
55
+ declare const InlineEdit: RsRefForwardingComponent<'div', InlineEditProps>;
56
+ export default InlineEdit;
@@ -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, {
@@ -162,7 +162,7 @@ var TreePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
162
162
  var _useClassNames = (0, _utils.useClassNames)(classPrefix),
163
163
  prefix = _useClassNames.prefix,
164
164
  merge = _useClassNames.merge;
165
- var _useClassNames2 = (0, _utils.useClassNames)('tree'),
165
+ var _useClassNames2 = (0, _utils.useClassNames)(inline && classPrefix !== 'picker' ? classPrefix : 'tree'),
166
166
  treePrefix = _useClassNames2.prefix,
167
167
  withTreeClassPrefix = _useClassNames2.withClassPrefix;
168
168
  var _useTreeSearch = (0, _treeUtils.useTreeSearch)({
@@ -589,18 +589,27 @@ var TreePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
589
589
  }, nodeProps));
590
590
  };
591
591
  var renderTree = function renderTree() {
592
- var _withTreeClassPrefix;
593
- var classes = withTreeClassPrefix((_withTreeClassPrefix = {}, _withTreeClassPrefix[className !== null && className !== void 0 ? className : ''] = inline, _withTreeClassPrefix.virtualized = virtualized, _withTreeClassPrefix));
592
+ var _merge2;
593
+ var classes = merge(withTreeClassPrefix({
594
+ virtualized: virtualized
595
+ }), (_merge2 = {}, _merge2[className !== null && className !== void 0 ? className : ''] = inline, _merge2));
594
596
  var formattedNodes = getFormattedNodes(renderNode);
595
- return /*#__PURE__*/_react.default.createElement(_Picker.TreeView, {
597
+ var treeViewProps = {
598
+ ref: treeView
599
+ };
600
+ if (inline) {
601
+ treeViewProps = (0, _extends2.default)({
602
+ ref: root,
603
+ style: (0, _extends2.default)({
604
+ height: height
605
+ }, style),
606
+ onKeyDown: handleTreeKeyDown
607
+ }, rest);
608
+ }
609
+ return /*#__PURE__*/_react.default.createElement(_Picker.TreeView, (0, _extends2.default)({}, treeViewProps, {
596
610
  treeRootClassName: treePrefix('root'),
597
- ref: inline ? root : treeView,
598
- className: classes,
599
- style: inline ? (0, _extends2.default)({
600
- height: height
601
- }, style) : {},
602
- onKeyDown: inline ? handleTreeKeyDown : undefined
603
- }, virtualized ? /*#__PURE__*/_react.default.createElement(_Windowing.AutoSizer, {
611
+ className: classes
612
+ }), virtualized ? /*#__PURE__*/_react.default.createElement(_Windowing.AutoSizer, {
604
613
  defaultHeight: inline ? height : menuMaxHeight,
605
614
  style: {
606
615
  width: 'auto',
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"));
@@ -70,7 +70,6 @@ var ListCheckItem = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
70
70
  onClick: handleSelectItem,
71
71
  onCheckboxClick: handleCheck
72
72
  };
73
- console.log(className, 'className');
74
73
  return /*#__PURE__*/_react.default.createElement(Component, (0, _extends2.default)({
75
74
  role: "option",
76
75
  "aria-selected": active,
@@ -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[];