rsuite 5.6.6 → 5.7.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.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,15 @@
1
+ # [5.7.0](https://github.com/rsuite/rsuite/compare/v5.6.6...v5.7.0) (2022-03-31)
2
+
3
+ ### Bug Fixes
4
+
5
+ - **Checkbox:** set checked attribute on underlying input ([#2419](https://github.com/rsuite/rsuite/issues/2419)) ([5ded872](https://github.com/rsuite/rsuite/commit/5ded8720c70c1fe4aee3941a81c0d7ec3b0c7423))
6
+ - **Dropdown:** Fix menu item hover highlight ([#2415](https://github.com/rsuite/rsuite/issues/2415)) ([59453cc](https://github.com/rsuite/rsuite/commit/59453cc0c3c6f648b2797c48473c22104e579b4a))
7
+ - **Dropdown:** Fixed Triggering onSelect twice on Dropdown Menu ([#2414](https://github.com/rsuite/rsuite/issues/2414)) ([e09eee5](https://github.com/rsuite/rsuite/commit/e09eee5f6dac88816ecbf8d20f3bb1b78f4afa71))
8
+
9
+ ### Features
10
+
11
+ - **Form:** export useFormClassNames hook ([#2420](https://github.com/rsuite/rsuite/issues/2420)) ([7e2bb85](https://github.com/rsuite/rsuite/commit/7e2bb8548103117a2df004f367fbde6609fcc216))
12
+
1
13
  ## [5.6.6](https://github.com/rsuite/rsuite/compare/v5.6.5...v5.6.6) (2022-03-24)
2
14
 
3
15
  ### Bug Fixes
@@ -24,15 +24,15 @@ var _CheckboxGroup = require("../CheckboxGroup");
24
24
  var _templateObject, _templateObject2, _templateObject3;
25
25
 
26
26
  var Checkbox = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
27
- var _useContext = (0, _react.useContext)(_CheckboxGroup.CheckboxGroupContext),
28
- inlineContext = _useContext.inline,
29
- nameContext = _useContext.name,
30
- disabledContext = _useContext.disabled,
31
- readOnlyContext = _useContext.readOnly,
32
- plaintextContext = _useContext.plaintext,
33
- groupValue = _useContext.value,
34
- controlled = _useContext.controlled,
35
- onGroupChange = _useContext.onChange;
27
+ var checkboxGroupContext = (0, _react.useContext)(_CheckboxGroup.CheckboxGroupContext);
28
+
29
+ var _ref = checkboxGroupContext !== null && checkboxGroupContext !== void 0 ? checkboxGroupContext : {},
30
+ inlineContext = _ref.inline,
31
+ nameContext = _ref.name,
32
+ disabledContext = _ref.disabled,
33
+ readOnlyContext = _ref.readOnly,
34
+ plaintextContext = _ref.plaintext,
35
+ onGroupChange = _ref.onChange;
36
36
 
37
37
  var _props$as = props.as,
38
38
  Component = _props$as === void 0 ? 'div' : _props$as,
@@ -43,7 +43,8 @@ var Checkbox = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
43
43
  classPrefix = _props$classPrefix === void 0 ? 'checkbox' : _props$classPrefix,
44
44
  _props$checkable = props.checkable,
45
45
  checkable = _props$checkable === void 0 ? true : _props$checkable,
46
- defaultChecked = props.defaultChecked,
46
+ _props$defaultChecked = props.defaultChecked,
47
+ defaultChecked = _props$defaultChecked === void 0 ? false : _props$defaultChecked,
47
48
  title = props.title,
48
49
  inputRef = props.inputRef,
49
50
  inputProps = props.inputProps,
@@ -65,19 +66,25 @@ var Checkbox = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
65
66
  onCheckboxClick = props.onCheckboxClick,
66
67
  onChange = props.onChange,
67
68
  rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["as", "checked", "className", "children", "classPrefix", "checkable", "defaultChecked", "title", "inputRef", "inputProps", "indeterminate", "tabIndex", "disabled", "readOnly", "plaintext", "inline", "name", "value", "onClick", "onCheckboxClick", "onChange"]);
68
- var isChecked = (0, _react.useCallback)(function () {
69
- if (typeof groupValue !== 'undefined' && typeof value !== 'undefined') {
70
- return groupValue.some(function (i) {
71
- return i === value;
72
- });
73
- }
74
69
 
75
- return controlledChecked;
76
- }, [controlledChecked, groupValue, value]);
70
+ var _useControlled = (0, _utils.useControlled)(controlledChecked, defaultChecked),
71
+ selfChecked = _useControlled[0],
72
+ setSelfChecked = _useControlled[1],
73
+ selfControlled = _useControlled[2]; // Either <Checkbox> is checked itself or by parent <CheckboxGroup>
74
+
75
+
76
+ var checked = (0, _react.useMemo)(function () {
77
+ var _checkboxGroupContext, _checkboxGroupContext2;
77
78
 
78
- var _useControlled = (0, _utils.useControlled)(isChecked(), defaultChecked),
79
- checked = _useControlled[0],
80
- setChecked = _useControlled[1];
79
+ if (!checkboxGroupContext) {
80
+ return selfChecked;
81
+ } // fixme value from group should not be nullable
82
+
83
+
84
+ return (_checkboxGroupContext = (_checkboxGroupContext2 = checkboxGroupContext.value) === null || _checkboxGroupContext2 === void 0 ? void 0 : _checkboxGroupContext2.some(function (checkedValue) {
85
+ return checkedValue === value;
86
+ })) !== null && _checkboxGroupContext !== void 0 ? _checkboxGroupContext : false;
87
+ }, [checkboxGroupContext, selfChecked, value]);
81
88
 
82
89
  var _useClassNames = (0, _utils.useClassNames)(classPrefix),
83
90
  merge = _useClassNames.merge,
@@ -93,7 +100,11 @@ var Checkbox = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
93
100
 
94
101
  var _partitionHTMLProps = (0, _utils.partitionHTMLProps)(rest),
95
102
  htmlInputProps = _partitionHTMLProps[0],
96
- restProps = _partitionHTMLProps[1];
103
+ restProps = _partitionHTMLProps[1]; // If <Checkbox> is within a <CheckboxGroup>, it's bound to be controlled
104
+ // because its checked state is inferred from group's value, not retrieved from the DOM
105
+
106
+
107
+ var controlled = checkboxGroupContext ? true : selfControlled;
97
108
 
98
109
  if (typeof controlled !== 'undefined') {
99
110
  // In uncontrolled situations, use defaultChecked instead of checked
@@ -101,16 +112,16 @@ var Checkbox = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
101
112
  }
102
113
 
103
114
  var handleChange = (0, _react.useCallback)(function (event) {
104
- var nextChecked = !checked;
115
+ var nextChecked = !event.target.checked;
105
116
 
106
117
  if (disabled || readOnly) {
107
118
  return;
108
119
  }
109
120
 
110
- setChecked(nextChecked);
121
+ setSelfChecked(nextChecked);
111
122
  onChange === null || onChange === void 0 ? void 0 : onChange(value, nextChecked, event);
112
123
  onGroupChange === null || onGroupChange === void 0 ? void 0 : onGroupChange(value, nextChecked, event);
113
- }, [checked, disabled, readOnly, setChecked, onChange, value, onGroupChange]);
124
+ }, [disabled, readOnly, setSelfChecked, onChange, value, onGroupChange]);
114
125
 
115
126
  if (plaintext) {
116
127
  return checked ? /*#__PURE__*/_react.default.createElement(Component, (0, _extends2.default)({}, restProps, {
@@ -10,4 +10,4 @@ export interface CheckboxGroupContextValue {
10
10
  plaintext?: boolean;
11
11
  onChange?: (value: any, checked: boolean, event: React.ChangeEvent<HTMLInputElement>) => void;
12
12
  }
13
- export declare const CheckboxGroupContext: React.Context<CheckboxGroupContextValue>;
13
+ export declare const CheckboxGroupContext: React.Context<CheckboxGroupContextValue | undefined>;
@@ -7,6 +7,6 @@ exports.CheckboxGroupContext = void 0;
7
7
 
8
8
  var _react = _interopRequireDefault(require("react"));
9
9
 
10
- var CheckboxGroupContext = /*#__PURE__*/_react.default.createContext({});
10
+ var CheckboxGroupContext = /*#__PURE__*/_react.default.createContext(void 0);
11
11
 
12
12
  exports.CheckboxGroupContext = CheckboxGroupContext;
@@ -111,15 +111,7 @@ var DropdownMenu = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
111
111
  return /*#__PURE__*/_react.default.createElement(_DropdownContext.default.Provider, {
112
112
  value: contextValue
113
113
  }, /*#__PURE__*/_react.default.createElement(_Menubar.default, {
114
- vertical: true,
115
- onActivateItem: function onActivateItem(event) {
116
- var _dataset = event.target.dataset,
117
- eventKey = _dataset.eventKey,
118
- eventKeyType = _dataset.eventKeyType; // Only cast number type for now
119
-
120
- var eventKeyToEmit = eventKeyType === 'number' ? Number(eventKey) : eventKey;
121
- onSelect === null || onSelect === void 0 ? void 0 : onSelect(eventKeyToEmit, event);
122
- }
114
+ vertical: true
123
115
  }, function (menubar, menubarRef) {
124
116
  return /*#__PURE__*/_react.default.createElement("ul", (0, _extends2.default)({
125
117
  ref: (0, _utils.mergeRefs)(menubarRef, ref),
package/cjs/Form/Form.js CHANGED
@@ -21,8 +21,6 @@ var _omit = _interopRequireDefault(require("lodash/omit"));
21
21
 
22
22
  var _schemaTyped = require("schema-typed");
23
23
 
24
- var _utils = require("../utils");
25
-
26
24
  var _FormContext = _interopRequireWildcard(require("./FormContext"));
27
25
 
28
26
  var _FormControl = _interopRequireDefault(require("../FormControl"));
@@ -35,6 +33,8 @@ var _FormGroup = _interopRequireDefault(require("../FormGroup"));
35
33
 
36
34
  var _FormHelpText = _interopRequireDefault(require("../FormHelpText"));
37
35
 
36
+ var _useFormClassNames = require("./useFormClassNames");
37
+
38
38
  var Form = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
39
39
  var _props$checkTrigger = props.checkTrigger,
40
40
  checkTrigger = _props$checkTrigger === void 0 ? 'change' : _props$checkTrigger,
@@ -61,16 +61,15 @@ var Form = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
61
61
  onError = props.onError,
62
62
  onChange = props.onChange,
63
63
  rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["checkTrigger", "classPrefix", "errorFromContext", "formDefaultValue", "formValue", "formError", "fluid", "layout", "model", "readOnly", "plaintext", "className", "children", "disabled", "onSubmit", "onCheck", "onError", "onChange"]);
64
-
65
- var _useClassNames = (0, _utils.useClassNames)(classPrefix),
66
- withClassPrefix = _useClassNames.withClassPrefix,
67
- merge = _useClassNames.merge;
68
-
69
- var classes = merge(className, withClassPrefix(layout, fluid && layout === 'vertical' ? 'fluid' : 'fixed-width', {
70
- readonly: readOnly,
71
- disabled: disabled,
72
- plaintext: plaintext
73
- }));
64
+ var classes = (0, _useFormClassNames.useFormClassNames)({
65
+ classPrefix: classPrefix,
66
+ className: className,
67
+ fluid: fluid,
68
+ layout: layout,
69
+ readOnly: readOnly,
70
+ plaintext: plaintext,
71
+ disabled: disabled
72
+ });
74
73
 
75
74
  var _useState = (0, _react.useState)(formDefaultValue),
76
75
  _formValue = _useState[0],
@@ -5,4 +5,5 @@ export type { FormErrorMessageProps } from '../FormErrorMessage';
5
5
  export type { FormControlLabelProps } from '../FormControlLabel';
6
6
  export type { FormHelpTextProps } from '../FormHelpText';
7
7
  export type { FormControlProps } from '../FormControl';
8
+ export * from './useFormClassNames';
8
9
  export default Form;
package/cjs/Form/index.js CHANGED
@@ -3,9 +3,18 @@
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
4
 
5
5
  exports.__esModule = true;
6
+ var _exportNames = {};
6
7
  exports.default = void 0;
7
8
 
8
9
  var _Form = _interopRequireDefault(require("./Form"));
9
10
 
11
+ var _useFormClassNames = require("./useFormClassNames");
12
+
13
+ Object.keys(_useFormClassNames).forEach(function (key) {
14
+ if (key === "default" || key === "__esModule") return;
15
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
16
+ if (key in exports && exports[key] === _useFormClassNames[key]) return;
17
+ exports[key] = _useFormClassNames[key];
18
+ });
10
19
  var _default = _Form.default;
11
20
  exports.default = _default;
@@ -0,0 +1,5 @@
1
+ import type { FormProps } from './Form';
2
+ /**
3
+ * Take <Form> props and return className for <Form> styles
4
+ */
5
+ export declare function useFormClassNames({ classPrefix, className, fluid, layout, readOnly, plaintext, disabled }: Pick<FormProps, 'classPrefix' | 'className' | 'fluid' | 'layout' | 'readOnly' | 'plaintext' | 'disabled'>): string;
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ exports.useFormClassNames = useFormClassNames;
5
+
6
+ var _utils = require("../utils");
7
+
8
+ /**
9
+ * Take <Form> props and return className for <Form> styles
10
+ */
11
+ function useFormClassNames(_ref) {
12
+ var _ref$classPrefix = _ref.classPrefix,
13
+ classPrefix = _ref$classPrefix === void 0 ? 'form' : _ref$classPrefix,
14
+ className = _ref.className,
15
+ fluid = _ref.fluid,
16
+ _ref$layout = _ref.layout,
17
+ layout = _ref$layout === void 0 ? 'vertical' : _ref$layout,
18
+ readOnly = _ref.readOnly,
19
+ plaintext = _ref.plaintext,
20
+ disabled = _ref.disabled;
21
+
22
+ var _useClassNames = (0, _utils.useClassNames)(classPrefix),
23
+ withClassPrefix = _useClassNames.withClassPrefix,
24
+ merge = _useClassNames.merge;
25
+
26
+ return merge(className, withClassPrefix(layout, fluid && layout === 'vertical' ? 'fluid' : 'fixed-width', {
27
+ readonly: readOnly,
28
+ disabled: disabled,
29
+ plaintext: plaintext
30
+ }));
31
+ }
@@ -111,6 +111,7 @@ function MenuItem(props) {
111
111
 
112
112
  if ((menuState === null || menuState === void 0 ? void 0 : menuState.role) === 'menubar') {
113
113
  menuitemProps.onMouseDown = handleMouseDown;
114
+ menuitemProps.onMouseOver = handleMouseMove;
114
115
  }
115
116
 
116
117
  return children(menuitemProps, menuitemRef);
@@ -20,7 +20,8 @@ var _utils = require("../utils");
20
20
  var _Checkbox = _interopRequireDefault(require("../Checkbox"));
21
21
 
22
22
  var DropdownMenuCheckItem = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
23
- var active = props.active,
23
+ var _props$active = props.active,
24
+ active = _props$active === void 0 ? false : _props$active,
24
25
  _props$as = props.as,
25
26
  Component = _props$as === void 0 ? 'div' : _props$as,
26
27
  _props$checkboxAs = props.checkboxAs,
package/cjs/index.d.ts CHANGED
@@ -50,7 +50,7 @@ export { default as Steps } from './Steps';
50
50
  export type { StepsProps, StepItemProps } from './Steps';
51
51
  export { default as Toggle } from './Toggle';
52
52
  export type { ToggleProps } from './Toggle';
53
- export { default as Form } from './Form';
53
+ export { default as Form, useFormClassNames } from './Form';
54
54
  export type { FormProps, FormGroupProps, FormErrorMessageProps, FormControlLabelProps, FormHelpTextProps, FormControlProps } from './Form';
55
55
  export { default as Input } from './Input';
56
56
  export type { InputProps } from './Input';
package/cjs/index.js CHANGED
@@ -1,9 +1,11 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
4
+
3
5
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
6
 
5
7
  exports.__esModule = true;
6
- 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.PanelGroup = exports.Panel = exports.CheckTree = exports.Tree = exports.Rate = exports.RangeSlider = exports.Slider = exports.Uploader = exports.AutoComplete = exports.DateRangePicker = exports.DatePicker = exports.MultiCascader = exports.Cascader = exports.CheckTreePicker = exports.TreePicker = exports.TagInput = exports.TagPicker = exports.InputPicker = exports.CheckPicker = exports.SelectPicker = 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
+ exports.useFormClassNames = 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.PanelGroup = exports.Panel = exports.CheckTree = exports.Tree = exports.Rate = exports.RangeSlider = exports.Slider = exports.Uploader = exports.AutoComplete = exports.DateRangePicker = exports.DatePicker = exports.MultiCascader = exports.Cascader = exports.CheckTreePicker = exports.TreePicker = exports.TagInput = exports.TagPicker = exports.InputPicker = exports.CheckPicker = exports.SelectPicker = 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
9
 
8
10
  var _Button = _interopRequireDefault(require("./Button"));
9
11
 
@@ -109,9 +111,10 @@ var _Toggle = _interopRequireDefault(require("./Toggle"));
109
111
 
110
112
  exports.Toggle = _Toggle.default;
111
113
 
112
- var _Form = _interopRequireDefault(require("./Form"));
114
+ var _Form = _interopRequireWildcard(require("./Form"));
113
115
 
114
116
  exports.Form = _Form.default;
117
+ exports.useFormClassNames = _Form.useFormClassNames;
115
118
 
116
119
  var _Input = _interopRequireDefault(require("./Input"));
117
120