rsuite 5.6.0 → 5.6.1

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,12 @@
1
+ ## [5.6.1](https://github.com/rsuite/rsuite/compare/v5.6.0...v5.6.1) (2022-02-17)
2
+
3
+ ### Bug Fixes
4
+
5
+ - **caretAs:** fix DatePicker and DateRangePicker cannot replace caret ([#2360](https://github.com/rsuite/rsuite/issues/2360)) ([1e619b2](https://github.com/rsuite/rsuite/commit/1e619b2ef7abc58a93f6d6d4fc78ffea07761c81))
6
+ - **IconButton:** infer addtional props from as prop ([#2343](https://github.com/rsuite/rsuite/issues/2343)) ([3b6c25c](https://github.com/rsuite/rsuite/commit/3b6c25c103ed33a86baa47b8c757462da7ae8c4c))
7
+ - **Toaster:** code breaks when toaster is in a useEffect ([#2353](https://github.com/rsuite/rsuite/issues/2353)) ([d083fe2](https://github.com/rsuite/rsuite/commit/d083fe27013659cbc45196b7ead9ff5863404fb8)), closes [#2336](https://github.com/rsuite/rsuite/issues/2336)
8
+ - **useTimeout:** fix callback not being called after timeout ([#2349](https://github.com/rsuite/rsuite/issues/2349)) ([e82a12a](https://github.com/rsuite/rsuite/commit/e82a12aa2929cf66e7a3c6d70008c5bedb4ab128))
9
+
1
10
  # [5.6.0](https://github.com/rsuite/rsuite/compare/v5.5.2...v5.6.0) (2022-02-10)
2
11
 
3
12
  ### Bug Fixes
package/README.md CHANGED
@@ -130,9 +130,11 @@ If you like React Suite, you can show your support by either
130
130
  This project exists thanks to all the people who contribute.
131
131
 
132
132
  <a href="https://github.com/rsuite/rsuite/graphs/contributors" target="_blank">
133
- <img src="https://opencollective.com/rsuite/contributors.svg?width=890" />
133
+ <img src="https://contrib.rocks/image?repo=rsuite/rsuite" />
134
134
  </a>
135
135
 
136
+ [![opencollective-now][opencollective-svg]][opencollective-home]
137
+
136
138
  ## License
137
139
 
138
140
  React Suite is [MIT licensed][license]. Copyright (c) 2016-present, HYPERS.
@@ -1,9 +1,10 @@
1
1
  import React from 'react';
2
2
  import { RangeType } from './Toolbar';
3
3
  import { DatePickerLocale } from '../locales';
4
+ import { PickerToggleProps } from '../Picker';
4
5
  import { FormControlBaseProps, PickerBaseProps, RsRefForwardingComponent } from '../@types/common';
5
6
  export type { RangeType } from './Toolbar';
6
- export interface DatePickerProps extends PickerBaseProps<DatePickerLocale>, FormControlBaseProps<Date | null> {
7
+ export interface DatePickerProps extends PickerBaseProps<DatePickerLocale>, FormControlBaseProps<Date | null>, Pick<PickerToggleProps, 'caretAs' | 'readOnly' | 'plaintext'> {
7
8
  /** Configure shortcut options */
8
9
  ranges?: RangeType<Date>[];
9
10
  /** Calendar panel default presentation date and time */
@@ -68,6 +68,7 @@ var DatePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
68
68
  showWeekNumbers = props.showWeekNumbers,
69
69
  style = props.style,
70
70
  toggleAs = props.toggleAs,
71
+ caretAsProp = props.caretAs,
71
72
  disabledDateProp = props.disabledDate,
72
73
  renderValue = props.renderValue,
73
74
  onChange = props.onChange,
@@ -83,7 +84,7 @@ var DatePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
83
84
  onSelect = props.onSelect,
84
85
  onToggleMonthDropdown = props.onToggleMonthDropdown,
85
86
  onToggleTimeDropdown = props.onToggleTimeDropdown,
86
- rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["as", "className", "classPrefix", "calendarDefaultDate", "cleanable", "defaultValue", "disabled", "format", "isoWeek", "limitEndYear", "locale", "menuClassName", "appearance", "placement", "oneTap", "placeholder", "ranges", "value", "showMeridian", "showWeekNumbers", "style", "toggleAs", "disabledDate", "renderValue", "onChange", "onChangeCalendarDate", "onClean", "onClose", "onEntered", "onExited", "onNextMonth", "onOk", "onOpen", "onPrevMonth", "onSelect", "onToggleMonthDropdown", "onToggleTimeDropdown"]);
87
+ rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["as", "className", "classPrefix", "calendarDefaultDate", "cleanable", "defaultValue", "disabled", "format", "isoWeek", "limitEndYear", "locale", "menuClassName", "appearance", "placement", "oneTap", "placeholder", "ranges", "value", "showMeridian", "showWeekNumbers", "style", "toggleAs", "caretAs", "disabledDate", "renderValue", "onChange", "onChangeCalendarDate", "onClean", "onClose", "onEntered", "onExited", "onNextMonth", "onOk", "onOpen", "onPrevMonth", "onSelect", "onToggleMonthDropdown", "onToggleTimeDropdown"]);
87
88
 
88
89
  var _useCustom = (0, _utils.useCustom)('DatePicker', overrideLocale),
89
90
  locale = _useCustom.locale,
@@ -445,8 +446,8 @@ var DatePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
445
446
  return (_renderValue = renderValue === null || renderValue === void 0 ? void 0 : renderValue(value, formatStr)) !== null && _renderValue !== void 0 ? _renderValue : formatDate(value, formatStr);
446
447
  }, [formatStr, formatDate, placeholder, renderValue, value]);
447
448
  var caretAs = (0, _react.useMemo)(function () {
448
- return _utils.DateUtils.shouldOnlyTime(formatStr) ? _ClockO.default : _Calendar.default;
449
- }, [formatStr]);
449
+ return caretAsProp || (_utils.DateUtils.shouldOnlyTime(formatStr) ? _ClockO.default : _Calendar.default);
450
+ }, [caretAsProp, formatStr]);
450
451
  return /*#__PURE__*/_react.default.createElement(_Picker.PickerToggleTrigger, {
451
452
  trigger: "active",
452
453
  pickerProps: (0, _pick.default)(props, _Picker.pickTriggerPropKeys),
@@ -1,8 +1,8 @@
1
1
  import React from 'react';
2
2
  import { FormControlBaseProps, PickerBaseProps } from '../@types/common';
3
- import { PickerComponent } from '../Picker';
3
+ import { PickerComponent, PickerToggleProps } from '../Picker';
4
4
  import { DisabledDateFunction, RangeType, DateRange } from './types';
5
- export interface DateRangePickerProps extends PickerBaseProps, FormControlBaseProps<DateRange | null> {
5
+ export interface DateRangePickerProps extends PickerBaseProps, FormControlBaseProps<DateRange | null>, Pick<PickerToggleProps, 'caretAs' | 'readOnly' | 'plaintext'> {
6
6
  /** Configure shortcut options */
7
7
  ranges?: RangeType[];
8
8
  /** Format date */
@@ -82,6 +82,7 @@ var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
82
82
  showMeridian = props.showMeridian,
83
83
  style = props.style,
84
84
  toggleAs = props.toggleAs,
85
+ caretAs = props.caretAs,
85
86
  valueProp = props.value,
86
87
  onChange = props.onChange,
87
88
  onClean = props.onClean,
@@ -92,7 +93,7 @@ var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
92
93
  onOk = props.onOk,
93
94
  onOpen = props.onOpen,
94
95
  onSelect = props.onSelect,
95
- rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["as", "classPrefix", "className", "appearance", "cleanable", "character", "defaultCalendarValue", "defaultValue", "disabled", "disabledDate", "format", "hoverRange", "isoWeek", "limitEndYear", "locale", "menuClassName", "menuStyle", "oneTap", "placeholder", "placement", "ranges", "renderValue", "showOneCalendar", "showWeekNumbers", "showMeridian", "style", "toggleAs", "value", "onChange", "onClean", "onClose", "onEnter", "onEntered", "onExited", "onOk", "onOpen", "onSelect"]);
96
+ rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["as", "classPrefix", "className", "appearance", "cleanable", "character", "defaultCalendarValue", "defaultValue", "disabled", "disabledDate", "format", "hoverRange", "isoWeek", "limitEndYear", "locale", "menuClassName", "menuStyle", "oneTap", "placeholder", "placement", "ranges", "renderValue", "showOneCalendar", "showWeekNumbers", "showMeridian", "style", "toggleAs", "caretAs", "value", "onChange", "onClean", "onClose", "onEnter", "onEntered", "onExited", "onOk", "onOpen", "onSelect"]);
96
97
 
97
98
  var _useClassNames = (0, _utils.useClassNames)(classPrefix),
98
99
  merge = _useClassNames.merge,
@@ -632,8 +633,8 @@ var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
632
633
  hasValue: hasValue,
633
634
  active: isPickerToggleActive,
634
635
  placement: placement,
635
- caretAs: _Calendar.default,
636
- disabled: disabled
636
+ disabled: disabled,
637
+ caretAs: caretAs || _Calendar.default
637
638
  }), getDisplayString(value))));
638
639
  });
639
640
 
@@ -1,6 +1,7 @@
1
1
  import React from 'react';
2
- import { ButtonProps } from '../Button';
3
2
  import { IconProps } from '@rsuite/icons/lib/Icon';
3
+ import { RsRefForwardingComponent } from '../@types/common';
4
+ import Button, { ButtonProps } from '../Button';
4
5
  export interface IconButtonProps extends ButtonProps {
5
6
  /** Set the icon */
6
7
  icon?: React.ReactElement<IconProps>;
@@ -9,5 +10,7 @@ export interface IconButtonProps extends ButtonProps {
9
10
  /** The placement of icon */
10
11
  placement?: 'left' | 'right';
11
12
  }
12
- declare const IconButton: React.ForwardRefExoticComponent<IconButtonProps & React.RefAttributes<unknown>>;
13
+ declare const IconButton: RsRefForwardingComponent<typeof Button, IconButtonProps & {
14
+ ref?: React.Ref<HTMLElement>;
15
+ }>;
13
16
  export default IconButton;
@@ -13,10 +13,10 @@ var _react = _interopRequireDefault(require("react"));
13
13
 
14
14
  var _propTypes = _interopRequireDefault(require("prop-types"));
15
15
 
16
- var _Button = _interopRequireDefault(require("../Button"));
17
-
18
16
  var _utils = require("../utils");
19
17
 
18
+ var _Button = _interopRequireDefault(require("../Button"));
19
+
20
20
  var IconButton = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
21
21
  var icon = props.icon,
22
22
  _props$placement = props.placement,
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _react = _interopRequireDefault(require("react"));
6
+
7
+ var _IconButton = _interopRequireDefault(require("../IconButton"));
8
+
9
+ var Link = function Link(_ref) {
10
+ var to = _ref.to;
11
+ return /*#__PURE__*/_react.default.createElement("a", {
12
+ href: to
13
+ });
14
+ };
15
+
16
+ var ref = /*#__PURE__*/_react.default.createRef(); // Infer `as` component props
17
+
18
+
19
+ /*#__PURE__*/
20
+ _react.default.createElement(_IconButton.default, {
21
+ ref: ref,
22
+ as: Link,
23
+ to: "/home"
24
+ });
@@ -1,4 +1,5 @@
1
1
  import { pickTriggerPropKeys, omitTriggerPropKeys, OverlayTriggerInstance, PositionChildProps } from './PickerToggleTrigger';
2
+ import { PickerToggleProps } from './PickerToggle';
2
3
  import { PickerInstance, PickerComponent } from './types';
3
4
  export { default as DropdownMenu } from './DropdownMenu';
4
5
  export { default as DropdownMenuCheckItem } from './DropdownMenuCheckItem';
@@ -10,6 +11,6 @@ export { default as PickerToggleTrigger } from './PickerToggleTrigger';
10
11
  export { default as SearchBar } from './SearchBar';
11
12
  export { default as SelectedElement } from './SelectedElement';
12
13
  export { pickTriggerPropKeys, omitTriggerPropKeys };
13
- export type { OverlayTriggerInstance, PositionChildProps, PickerInstance, PickerComponent };
14
+ export type { OverlayTriggerInstance, PositionChildProps, PickerInstance, PickerComponent, PickerToggleProps };
14
15
  export * from './utils';
15
16
  export * from './propTypes';
@@ -8,7 +8,7 @@ export interface Toaster {
8
8
  * @param message
9
9
  * @param options
10
10
  */
11
- push(message: React.ReactNode, options?: ToastContainerProps): string;
11
+ push(message: React.ReactNode, options?: ToastContainerProps): string | undefined;
12
12
  /**
13
13
  * Remove a message by key
14
14
  * @param key
@@ -41,6 +41,8 @@ var toaster = function toaster(message) {
41
41
  };
42
42
 
43
43
  toaster.push = function (message, options) {
44
+ var _container$current;
45
+
44
46
  if (options === void 0) {
45
47
  options = {};
46
48
  }
@@ -53,18 +55,22 @@ toaster.push = function (message, options) {
53
55
  container = createContainer((_options$placement = options.placement) !== null && _options$placement !== void 0 ? _options$placement : '', options);
54
56
  }
55
57
 
56
- return container.current.push(message);
58
+ return (_container$current = container.current) === null || _container$current === void 0 ? void 0 : _container$current.push(message);
57
59
  };
58
60
 
59
61
  toaster.remove = function (key) {
60
62
  containers.forEach(function (c) {
61
- return c.current.remove(key);
63
+ var _c$current;
64
+
65
+ return (_c$current = c.current) === null || _c$current === void 0 ? void 0 : _c$current.remove(key);
62
66
  });
63
67
  };
64
68
 
65
69
  toaster.clear = function () {
66
70
  containers.forEach(function (c) {
67
- return c.current.clear();
71
+ var _c$current2;
72
+
73
+ return (_c$current2 = c.current) === null || _c$current2 === void 0 ? void 0 : _c$current2.clear();
68
74
  });
69
75
  };
70
76
 
@@ -6,7 +6,7 @@ export interface UseTimeoutFnReturn {
6
6
  * A timer hook
7
7
  * @param fn Timer callback function
8
8
  * @param ms Milliseconds of the timer
9
- * @param open Whether to open the timer
9
+ * @param enabled Whether to open the timer
10
10
  */
11
- declare function useTimeout(fn: (() => void) | undefined, ms?: number, open?: boolean): UseTimeoutFnReturn;
11
+ declare function useTimeout(fn: (() => void) | undefined, ms?: number, enabled?: boolean): UseTimeoutFnReturn;
12
12
  export default useTimeout;
@@ -9,32 +9,41 @@ var _react = require("react");
9
9
  * A timer hook
10
10
  * @param fn Timer callback function
11
11
  * @param ms Milliseconds of the timer
12
- * @param open Whether to open the timer
12
+ * @param enabled Whether to open the timer
13
13
  */
14
- function useTimeout(fn, ms, open) {
14
+ function useTimeout(fn, ms, enabled) {
15
15
  if (ms === void 0) {
16
16
  ms = 0;
17
17
  }
18
18
 
19
- if (open === void 0) {
20
- open = true;
19
+ if (enabled === void 0) {
20
+ enabled = true;
21
21
  }
22
22
 
23
23
  var timeout = (0, _react.useRef)();
24
+ var callback = (0, _react.useRef)(fn);
24
25
  var clear = (0, _react.useCallback)(function () {
25
26
  timeout.current && clearTimeout(timeout.current);
26
27
  }, []);
27
28
  var set = (0, _react.useCallback)(function () {
28
- if (open) {
29
+ timeout.current && clearTimeout(timeout.current);
30
+
31
+ if (enabled) {
29
32
  timeout.current = setTimeout(function () {
30
- return fn === null || fn === void 0 ? void 0 : fn();
33
+ var _callback$current;
34
+
35
+ (_callback$current = callback.current) === null || _callback$current === void 0 ? void 0 : _callback$current.call(callback);
31
36
  }, ms);
32
37
  }
33
- }, [ms, fn, open]);
38
+ }, [ms, enabled]); // update ref when function changes
39
+
40
+ (0, _react.useEffect)(function () {
41
+ callback.current = fn;
42
+ }, [fn]);
34
43
  (0, _react.useEffect)(function () {
35
44
  set();
36
45
  return clear;
37
- }, [fn, ms, open, clear, set]);
46
+ }, [ms, enabled, set, clear]);
38
47
  return {
39
48
  clear: clear,
40
49
  reset: set