rsuite 5.54.0 → 5.55.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 (83) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/Pagination/styles/index.css +3 -0
  3. package/Pagination/styles/pagination-group.less +4 -0
  4. package/cjs/Calendar/CalendarContainer.d.ts +4 -0
  5. package/cjs/Calendar/CalendarContainer.js +3 -1
  6. package/cjs/Calendar/TableCell.js +3 -2
  7. package/cjs/Calendar/types.d.ts +1 -0
  8. package/cjs/Cascader/DropdownMenu.js +3 -1
  9. package/cjs/Cascader/TreeView.js +3 -1
  10. package/cjs/DOMHelper/index.d.ts +23 -32
  11. package/cjs/DatePicker/DatePicker.d.ts +6 -0
  12. package/cjs/DatePicker/DatePicker.js +3 -2
  13. package/cjs/DateRangePicker/DateRangePicker.js +3 -2
  14. package/cjs/InputNumber/InputNumber.d.ts +36 -11
  15. package/cjs/InputNumber/InputNumber.js +47 -28
  16. package/cjs/Pagination/LimitPicker.d.ts +15 -0
  17. package/cjs/Pagination/LimitPicker.js +51 -0
  18. package/cjs/Pagination/Pagination.js +7 -8
  19. package/cjs/Pagination/PaginationButton.js +3 -18
  20. package/cjs/Pagination/PaginationGroup.d.ts +35 -7
  21. package/cjs/Pagination/PaginationGroup.js +77 -98
  22. package/cjs/RangeSlider/RangeSlider.js +14 -11
  23. package/cjs/Slider/Handle.js +19 -62
  24. package/cjs/Slider/ProgressBar.js +2 -1
  25. package/cjs/Slider/Slider.js +14 -10
  26. package/cjs/Slider/useDrag.d.ts +16 -0
  27. package/cjs/Slider/useDrag.js +88 -0
  28. package/cjs/Slider/utils.d.ts +6 -2
  29. package/cjs/Slider/utils.js +15 -1
  30. package/cjs/internals/Overlay/positionUtils.d.ts +1 -6
  31. package/cjs/locales/cs_CZ.d.ts +120 -0
  32. package/cjs/locales/cs_CZ.js +88 -0
  33. package/cjs/locales/index.d.ts +1 -0
  34. package/cjs/locales/index.js +4 -2
  35. package/dist/rsuite-no-reset-rtl.css +3 -0
  36. package/dist/rsuite-no-reset-rtl.min.css +1 -1
  37. package/dist/rsuite-no-reset-rtl.min.css.map +1 -1
  38. package/dist/rsuite-no-reset.css +3 -0
  39. package/dist/rsuite-no-reset.min.css +1 -1
  40. package/dist/rsuite-no-reset.min.css.map +1 -1
  41. package/dist/rsuite-rtl.css +3 -0
  42. package/dist/rsuite-rtl.min.css +1 -1
  43. package/dist/rsuite-rtl.min.css.map +1 -1
  44. package/dist/rsuite.css +3 -0
  45. package/dist/rsuite.js +88 -55
  46. package/dist/rsuite.js.map +1 -1
  47. package/dist/rsuite.min.css +1 -1
  48. package/dist/rsuite.min.css.map +1 -1
  49. package/dist/rsuite.min.js +1 -1
  50. package/dist/rsuite.min.js.map +1 -1
  51. package/esm/Calendar/CalendarContainer.d.ts +4 -0
  52. package/esm/Calendar/CalendarContainer.js +3 -1
  53. package/esm/Calendar/TableCell.js +5 -4
  54. package/esm/Calendar/types.d.ts +1 -0
  55. package/esm/Cascader/DropdownMenu.js +3 -1
  56. package/esm/Cascader/TreeView.js +3 -1
  57. package/esm/DOMHelper/index.d.ts +23 -32
  58. package/esm/DatePicker/DatePicker.d.ts +6 -0
  59. package/esm/DatePicker/DatePicker.js +3 -2
  60. package/esm/DateRangePicker/DateRangePicker.js +3 -2
  61. package/esm/InputNumber/InputNumber.d.ts +36 -11
  62. package/esm/InputNumber/InputNumber.js +49 -30
  63. package/esm/Pagination/LimitPicker.d.ts +15 -0
  64. package/esm/Pagination/LimitPicker.js +44 -0
  65. package/esm/Pagination/Pagination.js +7 -7
  66. package/esm/Pagination/PaginationButton.js +4 -18
  67. package/esm/Pagination/PaginationGroup.d.ts +35 -7
  68. package/esm/Pagination/PaginationGroup.js +79 -98
  69. package/esm/RangeSlider/RangeSlider.js +15 -12
  70. package/esm/Slider/Handle.js +19 -61
  71. package/esm/Slider/ProgressBar.js +2 -1
  72. package/esm/Slider/Slider.js +16 -12
  73. package/esm/Slider/useDrag.d.ts +16 -0
  74. package/esm/Slider/useDrag.js +82 -0
  75. package/esm/Slider/utils.d.ts +6 -2
  76. package/esm/Slider/utils.js +15 -3
  77. package/esm/internals/Overlay/positionUtils.d.ts +1 -6
  78. package/esm/locales/cs_CZ.d.ts +120 -0
  79. package/esm/locales/cs_CZ.js +82 -0
  80. package/esm/locales/index.d.ts +1 -0
  81. package/esm/locales/index.js +2 -1
  82. package/locales/cs_CZ/package.json +7 -0
  83. package/package.json +2 -2
package/CHANGELOG.md CHANGED
@@ -1,3 +1,21 @@
1
+ # [5.55.0](https://github.com/rsuite/rsuite/compare/v5.54.0...v5.55.0) (2024-03-01)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * **DateRangePicker:** fix time picker does not update when clicking the shortcut item ([#3647](https://github.com/rsuite/rsuite/issues/3647)) ([00c9eaa](https://github.com/rsuite/rsuite/commit/00c9eaa9b246da027c729fb3cf3639001473d4fe))
7
+ * **Pagination:** fix SelectPicker rendering misalignment ([#3643](https://github.com/rsuite/rsuite/issues/3643)) ([044c48f](https://github.com/rsuite/rsuite/commit/044c48f3e358f93bc7568bc83242e7ea6348825e))
8
+ * **Slider,RangeSlider:** fix touch event not working ([#3653](https://github.com/rsuite/rsuite/issues/3653)) ([3d57ebc](https://github.com/rsuite/rsuite/commit/3d57ebcaebafa3207b84987ba7e80cd4c38a2741))
9
+
10
+
11
+ ### Features
12
+
13
+ * added czech locale ([#3649](https://github.com/rsuite/rsuite/issues/3649)) ([f589257](https://github.com/rsuite/rsuite/commit/f58925757314da09dd2a2ee0706321860a32ab13))
14
+ * **DatePicker:** add support `renderCell` on `<DatePicker>` ([#3641](https://github.com/rsuite/rsuite/issues/3641)) ([b63d1a3](https://github.com/rsuite/rsuite/commit/b63d1a37b0289383dbe0099481609097e1c4a436))
15
+ * **InputNumber:** add support for `formatter` on `<InputNumber>` ([#3642](https://github.com/rsuite/rsuite/issues/3642)) ([d457d3a](https://github.com/rsuite/rsuite/commit/d457d3a67d929fa02780e4d012844756361c7c68))
16
+
17
+
18
+
1
19
  # [5.54.0](https://github.com/rsuite/rsuite/compare/v5.53.2...v5.54.0) (2024-02-22)
2
20
 
3
21
 
@@ -3444,6 +3444,9 @@ textarea.rs-input-group-inside.rs-input-group-xs > .rs-input-group-btn {
3444
3444
  .rs-pagination-group .rs-pagination {
3445
3445
  vertical-align: middle;
3446
3446
  }
3447
+ .rs-pagination-group-limit {
3448
+ position: relative;
3449
+ }
3447
3450
  .rs-pagination-group-limit + .rs-pagination-group-total {
3448
3451
  margin-left: 18px;
3449
3452
  }
@@ -25,6 +25,10 @@
25
25
  vertical-align: middle;
26
26
  }
27
27
 
28
+ &-limit {
29
+ position: relative;
30
+ }
31
+
28
32
  // There is a gap between Length Menu and Page info.
29
33
  &-limit + &-total {
30
34
  margin-left: 18px;
@@ -58,6 +58,10 @@ export interface CalendarProps extends WithAsProps, Omit<HTMLAttributes<HTMLDivE
58
58
  onSelect?: (date: Date, event: React.MouseEvent) => void;
59
59
  /** Custom rendering cell*/
60
60
  renderCell?: (date: Date) => React.ReactNode;
61
+ /**
62
+ * Custom rendering cell on the picker
63
+ */
64
+ renderCellOnPicker?: (date: Date) => React.ReactNode;
61
65
  /** Custom cell classes base on it's date */
62
66
  cellClassName?: (date: Date) => string | undefined;
63
67
  /** Called when opening the month view */
@@ -50,12 +50,13 @@ var CalendarContainer = /*#__PURE__*/_react.default.forwardRef(function (props,
50
50
  calendarDateProp = props.calendarDate,
51
51
  cellClassName = props.cellClassName,
52
52
  renderCell = props.renderCell,
53
+ renderCellOnPicker = props.renderCellOnPicker,
53
54
  renderTitle = props.renderTitle,
54
55
  renderToolbar = props.renderToolbar,
55
56
  showMeridian = props.showMeridian,
56
57
  showWeekNumbers = props.showWeekNumbers,
57
58
  inline = props.inline,
58
- rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["as", "className", "classPrefix", "dateRange", "disabledBackward", "defaultState", "disabledDate", "disabledForward", "format", "hoverRangeValue", "isoWeek", "targetId", "limitEndYear", "limitStartYear", "locale", "onChangeMonth", "onChangeTime", "onMouseMove", "onMoveBackward", "onMoveForward", "onSelect", "onToggleMeridian", "onToggleMonthDropdown", "onToggleTimeDropdown", "calendarDate", "cellClassName", "renderCell", "renderTitle", "renderToolbar", "showMeridian", "showWeekNumbers", "inline"]);
59
+ rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["as", "className", "classPrefix", "dateRange", "disabledBackward", "defaultState", "disabledDate", "disabledForward", "format", "hoverRangeValue", "isoWeek", "targetId", "limitEndYear", "limitStartYear", "locale", "onChangeMonth", "onChangeTime", "onMouseMove", "onMoveBackward", "onMoveForward", "onSelect", "onToggleMeridian", "onToggleMonthDropdown", "onToggleTimeDropdown", "calendarDate", "cellClassName", "renderCell", "renderCellOnPicker", "renderTitle", "renderToolbar", "showMeridian", "showWeekNumbers", "inline"]);
59
60
  var _useClassNames = (0, _utils.useClassNames)(classPrefix),
60
61
  withClassPrefix = _useClassNames.withClassPrefix,
61
62
  merge = _useClassNames.merge,
@@ -140,6 +141,7 @@ var CalendarContainer = /*#__PURE__*/_react.default.forwardRef(function (props,
140
141
  onSelect: onSelect,
141
142
  cellClassName: cellClassName,
142
143
  renderCell: renderCell,
144
+ renderCellOnPicker: renderCellOnPicker,
143
145
  showWeekNumbers: showWeekNumbers,
144
146
  inline: inline
145
147
  };
@@ -30,6 +30,7 @@ var TableCell = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
30
30
  onMouseMove = _useCalendarContext.onMouseMove,
31
31
  cellClassName = _useCalendarContext.cellClassName,
32
32
  renderCell = _useCalendarContext.renderCell,
33
+ renderCellOnPicker = _useCalendarContext.renderCellOnPicker,
33
34
  overrideLocale = _useCalendarContext.locale;
34
35
  var _useClassNames = (0, _utils.useClassNames)(classPrefix),
35
36
  prefix = _useClassNames.prefix,
@@ -63,9 +64,9 @@ var TableCell = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
63
64
  onClick: onSelect ? (0, _partial.default)(onSelect, date, disabled) : undefined
64
65
  }, rest), /*#__PURE__*/_react.default.createElement("div", {
65
66
  className: prefix('cell-content')
66
- }, /*#__PURE__*/_react.default.createElement("span", {
67
+ }, renderCellOnPicker ? renderCellOnPicker(date) : /*#__PURE__*/_react.default.createElement("span", {
67
68
  className: prefix('cell-day')
68
- }, _utils.DateUtils.getDate(date)), renderCell === null || renderCell === void 0 ? void 0 : renderCell(date)));
69
+ }, (0, _dateUtils.getDate)(date)), renderCell === null || renderCell === void 0 ? void 0 : renderCell(date)));
69
70
  });
70
71
  TableCell.displayName = 'CalendarTableCell';
71
72
  var _default = TableCell;
@@ -13,6 +13,7 @@ export interface CalendarInnerContextValue {
13
13
  onMouseMove?: (date: Date) => void;
14
14
  onSelect?: (date: Date, event: React.MouseEvent) => void;
15
15
  renderCell?: (date: Date) => React.ReactNode;
16
+ renderCellOnPicker?: (date: Date) => React.ReactNode;
16
17
  cellClassName?: (date: Date) => string | undefined;
17
18
  showWeekNumbers?: boolean;
18
19
  inline?: boolean;
@@ -71,7 +71,9 @@ var TreeView = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
71
71
  if (activeItem) {
72
72
  var position = (0, _getPosition.default)(activeItem, column);
73
73
  // Let the active option scroll into view.
74
- (0, _scrollTop.default)(column, position === null || position === void 0 ? void 0 : position.top);
74
+ if (position !== null && position !== void 0 && position.top) {
75
+ (0, _scrollTop.default)(column, position === null || position === void 0 ? void 0 : position.top);
76
+ }
75
77
  }
76
78
  });
77
79
  }, [prefix]);
@@ -71,7 +71,9 @@ var TreeView = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
71
71
  if (activeItem) {
72
72
  var position = (0, _getPosition.default)(activeItem, column);
73
73
  // Let the active option scroll into view.
74
- (0, _scrollTop.default)(column, position === null || position === void 0 ? void 0 : position.top);
74
+ if (position !== null && position !== void 0 && position.top) {
75
+ (0, _scrollTop.default)(column, position === null || position === void 0 ? void 0 : position.top);
76
+ }
75
77
  }
76
78
  });
77
79
  }, [prefix]);
@@ -11,43 +11,34 @@ declare const DOMHelper: {
11
11
  off: typeof helpers.off;
12
12
  WheelHandler: typeof helpers.WheelHandler;
13
13
  DOMMouseMoveTracker: typeof helpers.DOMMouseMoveTracker;
14
- addClass: (target: Element, className: string) => Element;
15
- removeClass: (target: Element, className: string) => Element;
16
- hasClass: (target: Element, className: string) => boolean;
17
- toggleClass: (target: Element, className: string) => Element;
18
- cancelAnimationFramePolyfill: typeof cancelAnimationFrame | typeof clearTimeout;
14
+ PointerMoveTracker: typeof helpers.PointerMoveTracker;
15
+ addClass: typeof helpers.addClass;
16
+ removeClass: typeof helpers.removeClass;
17
+ hasClass: typeof helpers.hasClass;
18
+ toggleClass: typeof helpers.toggleClass;
19
+ cancelAnimationFramePolyfill: typeof cancelAnimationFrame;
19
20
  requestAnimationFramePolyfill: typeof requestAnimationFrame | ((callback: (t: number) => void) => NodeJS.Timeout);
20
21
  getAnimationEnd: typeof helpers.getAnimationEnd;
21
- ownerDocument: (node: Element | null) => Document;
22
- ownerWindow: (componentOrElement: Element) => Window;
23
- getWindow: (node: any) => Window;
24
- getContainer: (container: Element | (() => Element | null) | null, defaultContainer?: Element | undefined) => Element;
22
+ ownerDocument: typeof helpers.ownerDocument;
23
+ ownerWindow: typeof helpers.ownerWindow;
24
+ getWindow: typeof helpers.getWindow;
25
+ getContainer: typeof helpers.getContainer;
25
26
  canUseDOM: boolean;
26
27
  contains: (context: Element, node: Node & ParentNode) => boolean;
27
- scrollTop: (node: Element, val?: number | undefined) => number;
28
- scrollLeft: (node: Element, val?: number | undefined) => number;
29
- getOffset: (node: Element | null) => {
30
- top: number;
31
- left: number;
32
- height: number;
33
- width: number;
34
- } | DOMRect | null;
35
- nodeName: (node: Element) => string;
36
- getOffsetParent: (node: Element) => Element;
37
- getPosition: (node: Element, offsetParent?: Element | undefined, calcMargin?: boolean | undefined) => DOMRect | {
38
- top: number;
39
- left: number;
40
- height: number;
41
- width: number;
42
- } | null;
43
- isOverflowing: (container: Element) => boolean;
44
- getScrollbarSize: (recalc?: boolean | undefined) => number | void;
45
- getHeight: (node: Element | Window, client?: Element | undefined) => number;
46
- getWidth: (node: Element | Window, client?: Element | undefined) => number;
28
+ scrollTop: typeof helpers.scrollTop;
29
+ scrollLeft: typeof helpers.scrollLeft;
30
+ getOffset: typeof helpers.getOffset;
31
+ nodeName: typeof helpers.nodeName;
32
+ getOffsetParent: typeof helpers.getOffsetParent;
33
+ getPosition: typeof helpers.getPosition;
34
+ isOverflowing: typeof helpers.isOverflowing;
35
+ getScrollbarSize: typeof helpers.getScrollbarSize;
36
+ getHeight: typeof helpers.getHeight;
37
+ getWidth: typeof helpers.getWidth;
47
38
  isFocusable: typeof helpers.isFocusable;
48
- getStyle: (node: Element, property?: string | undefined) => string | CSSStyleDeclaration;
49
- removeStyle: (node: Element, keys: string | string[]) => void;
50
- addStyle: (node: Element, property: string | Partial<import("dom-lib/esm/addStyle").CSSProperty>, value?: string | number | undefined) => void;
39
+ getStyle: typeof helpers.getStyle;
40
+ removeStyle: typeof helpers.removeStyle;
41
+ addStyle: typeof helpers.addStyle;
51
42
  translateDOMPositionXY: (style: CSSStyleDeclaration, x?: number | undefined, y?: number | undefined) => CSSStyleDeclaration;
52
43
  };
53
44
  export default DOMHelper;
@@ -117,6 +117,12 @@ export interface DatePickerProps extends PickerBaseProps<DatePickerLocale>, Form
117
117
  * @deprecated
118
118
  */
119
119
  renderValue?: (value: Date, format: string) => string;
120
+ /**
121
+ * Custom rendering calendar cell content.
122
+ *
123
+ * @version 5.54.0
124
+ */
125
+ renderCell?: (date: Date) => React.ReactNode;
120
126
  }
121
127
  /**
122
128
  * A date picker allows users to select a date from a calendar.
@@ -101,7 +101,8 @@ var DatePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
101
101
  onToggleMonthDropdown = props.onToggleMonthDropdown,
102
102
  onToggleTimeDropdown = props.onToggleTimeDropdown,
103
103
  onShortcutClick = props.onShortcutClick,
104
- restProps = (0, _objectWithoutPropertiesLoose2.default)(props, ["as", "className", "classPrefix", "calendarDefaultDate", "cleanable", "editable", "defaultValue", "disabled", "readOnly", "plaintext", "format", "id", "isoWeek", "limitEndYear", "limitStartYear", "locale", "loading", "label", "menuClassName", "menuStyle", "appearance", "placement", "oneTap", "placeholder", "ranges", "value", "showMeridian", "showWeekNumbers", "style", "size", "caretAs", "disabledDate", "disabledHours", "disabledMinutes", "disabledSeconds", "shouldDisableDate", "shouldDisableHour", "shouldDisableMinute", "shouldDisableSecond", "onChange", "onChangeCalendarDate", "onClean", "onClose", "onEntered", "onExited", "onNextMonth", "onOk", "onOpen", "onPrevMonth", "onSelect", "onToggleMonthDropdown", "onToggleTimeDropdown", "onShortcutClick"]);
104
+ renderCell = props.renderCell,
105
+ restProps = (0, _objectWithoutPropertiesLoose2.default)(props, ["as", "className", "classPrefix", "calendarDefaultDate", "cleanable", "editable", "defaultValue", "disabled", "readOnly", "plaintext", "format", "id", "isoWeek", "limitEndYear", "limitStartYear", "locale", "loading", "label", "menuClassName", "menuStyle", "appearance", "placement", "oneTap", "placeholder", "ranges", "value", "showMeridian", "showWeekNumbers", "style", "size", "caretAs", "disabledDate", "disabledHours", "disabledMinutes", "disabledSeconds", "shouldDisableDate", "shouldDisableHour", "shouldDisableMinute", "shouldDisableSecond", "onChange", "onChangeCalendarDate", "onClean", "onClose", "onEntered", "onExited", "onNextMonth", "onOk", "onOpen", "onPrevMonth", "onSelect", "onToggleMonthDropdown", "onToggleTimeDropdown", "onShortcutClick", "renderCell"]);
105
106
  var id = (0, _utils.useUniqueId)('rs-', idProp);
106
107
  var _usePickerRef = (0, _Picker.usePickerRef)(ref),
107
108
  trigger = _usePickerRef.trigger,
@@ -457,6 +458,7 @@ var DatePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
457
458
  format: formatStr,
458
459
  isoWeek: isoWeek,
459
460
  calendarDate: calendarDate,
461
+ renderCellOnPicker: renderCell,
460
462
  onMoveForward: handleMoveForward,
461
463
  onMoveBackward: handleMoveBackward,
462
464
  onSelect: handleSelect,
@@ -582,7 +584,6 @@ DatePicker.propTypes = (0, _extends2.default)({}, _Picker.pickerPropTypes, {
582
584
  onToggleMonthDropdown: _propTypes.default.func,
583
585
  onToggleTimeDropdown: _propTypes.default.func,
584
586
  oneTap: _propTypes.default.bool,
585
- panelContainerRef: _propTypes.default.any,
586
587
  ranges: _propTypes.default.array,
587
588
  showMeridian: _propTypes.default.bool,
588
589
  showWeekNumbers: _propTypes.default.bool,
@@ -172,7 +172,7 @@ var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
172
172
  var nextValue = dateRange;
173
173
 
174
174
  // The time should remain the same when the dates in the date range are changed.
175
- if ((0, _dateUtils.shouldRenderTime)(formatStr) && dateRange !== null && dateRange !== void 0 && dateRange.length && eventName !== 'changeTime') {
175
+ if ((0, _dateUtils.shouldRenderTime)(formatStr) && dateRange !== null && dateRange !== void 0 && dateRange.length && eventName !== 'changeTime' && eventName !== 'shortcutSelection') {
176
176
  var _startDate = (0, _dateUtils.copyTime)({
177
177
  from: getCalendarDatetime('start'),
178
178
  to: dateRange[0]
@@ -447,7 +447,8 @@ var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
447
447
  }
448
448
  var value = range.value;
449
449
  setCalendarDateRange({
450
- dateRange: value
450
+ dateRange: value,
451
+ eventName: 'shortcutSelection'
451
452
  });
452
453
  if (closeOverlay) {
453
454
  setDateRange(event, value, closeOverlay);
@@ -1,29 +1,54 @@
1
1
  import React from 'react';
2
2
  import { WithAsProps, TypeAttributes, FormControlBaseProps } from '../@types/common';
3
- export interface InputNumberProps<T = number | string> extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'value' | 'defaultValue' | 'onChange' | 'size' | 'prefix'>, WithAsProps, FormControlBaseProps<T> {
4
- /** Button can have different appearances */
3
+ export interface InputNumberProps<T = number | string | null> extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'value' | 'defaultValue' | 'onChange' | 'size' | 'prefix'>, WithAsProps, FormControlBaseProps<T> {
4
+ /**
5
+ * Button can have different appearances
6
+ */
5
7
  buttonAppearance?: TypeAttributes.Appearance;
6
- /** An input can show that it is disabled */
8
+ /**
9
+ * An input can show that it is disabled
10
+ */
7
11
  disabled?: boolean;
8
- /** Minimum value */
12
+ /**
13
+ * Format the value of the input
14
+ */
15
+ formatter?: (value: number | string) => string;
16
+ /**
17
+ * Minimum value
18
+ */
9
19
  min?: number;
10
- /** Maximum value */
20
+ /**
21
+ * Maximum value
22
+ */
11
23
  max?: number;
12
- /** The value of each step. can be decimal */
24
+ /**
25
+ * The value of each step. can be decimal
26
+ */
13
27
  step?: number;
14
- /** Sets the element displayed to the left of the component */
28
+ /**
29
+ * Sets the element displayed to the left of the component
30
+ */
15
31
  prefix?: React.ReactNode;
16
- /** Sets the element displayed on the right side of the component */
32
+ /**
33
+ * Sets the element displayed on the right side of the component
34
+ */
17
35
  postfix?: React.ReactNode;
18
- /** An Input can have different sizes */
36
+ /**
37
+ * An Input can have different sizes
38
+ */
19
39
  size?: TypeAttributes.Size;
20
- /** Whether the value can be changed through the wheel event */
40
+ /**
41
+ * Whether the value can be changed through the wheel event
42
+ */
21
43
  scrollable?: boolean;
44
+ /**
45
+ * Callback function when wheel event is triggered
46
+ */
22
47
  onWheel?: (event: React.WheelEvent) => void;
23
48
  }
24
49
  /**
25
50
  * The `InputNumber` component is used to enter a numerical value.
26
51
  * @see https://rsuitejs.com/components/input-number
27
52
  */
28
- declare const InputNumber: React.ForwardRefExoticComponent<InputNumberProps<string | number> & React.RefAttributes<unknown>>;
53
+ declare const InputNumber: React.ForwardRefExoticComponent<InputNumberProps<string | number | null> & React.RefAttributes<unknown>>;
29
54
  export default InputNumber;
@@ -85,6 +85,7 @@ var InputNumber = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
85
85
  _props$classPrefix = props.classPrefix,
86
86
  classPrefix = _props$classPrefix === void 0 ? 'input-number' : _props$classPrefix,
87
87
  disabled = props.disabled,
88
+ formatter = props.formatter,
88
89
  readOnly = props.readOnly,
89
90
  plaintext = props.plaintext,
90
91
  valueProp = props.value,
@@ -102,12 +103,17 @@ var InputNumber = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
102
103
  scrollable = _props$scrollable === void 0 ? true : _props$scrollable,
103
104
  onChange = props.onChange,
104
105
  onWheel = props.onWheel,
105
- restProps = (0, _objectWithoutPropertiesLoose2.default)(props, ["as", "className", "classPrefix", "disabled", "readOnly", "plaintext", "value", "defaultValue", "size", "prefix", "postfix", "step", "buttonAppearance", "min", "max", "scrollable", "onChange", "onWheel"]);
106
+ onBlur = props.onBlur,
107
+ onFocus = props.onFocus,
108
+ restProps = (0, _objectWithoutPropertiesLoose2.default)(props, ["as", "className", "classPrefix", "disabled", "formatter", "readOnly", "plaintext", "value", "defaultValue", "size", "prefix", "postfix", "step", "buttonAppearance", "min", "max", "scrollable", "onChange", "onWheel", "onBlur", "onFocus"]);
106
109
  var min = minProp !== null && minProp !== void 0 ? minProp : -Infinity;
107
110
  var max = maxProp !== null && maxProp !== void 0 ? maxProp : Infinity;
108
111
  var _useControlled = (0, _utils.useControlled)(valueProp, defaultValue),
109
112
  value = _useControlled[0],
110
113
  setValue = _useControlled[1];
114
+ var _useState = (0, _react.useState)(false),
115
+ isFocused = _useState[0],
116
+ setIsFocused = _useState[1];
111
117
  var _useClassNames = (0, _utils.useClassNames)(classPrefix),
112
118
  withClassPrefix = _useClassNames.withClassPrefix,
113
119
  merge = _useClassNames.merge,
@@ -117,13 +123,7 @@ var InputNumber = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
117
123
  htmlInputProps = _partitionHTMLProps[0],
118
124
  rest = _partitionHTMLProps[1];
119
125
  var inputRef = (0, _react.useRef)();
120
- var handleChangeValue = (0, _react.useCallback)(function (currentValue, event) {
121
- if (currentValue !== value) {
122
- setValue(currentValue);
123
- onChange === null || onChange === void 0 ? void 0 : onChange(currentValue, event);
124
- }
125
- }, [onChange, setValue, value]);
126
- var getSafeValue = (0, _react.useCallback)(function (value) {
126
+ var getSafeValue = function getSafeValue(value) {
127
127
  if (!Number.isNaN(value)) {
128
128
  if (+value > max) {
129
129
  value = max;
@@ -135,28 +135,34 @@ var InputNumber = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
135
135
  value = '';
136
136
  }
137
137
  return value.toString();
138
- }, [max, min]);
138
+ };
139
+ var handleChangeValue = (0, _utils.useEventCallback)(function (currentValue, event) {
140
+ if (currentValue !== value) {
141
+ setValue(currentValue);
142
+ onChange === null || onChange === void 0 ? void 0 : onChange(currentValue, event);
143
+ }
144
+ });
139
145
 
140
146
  // Increment value by step
141
- var handleStepUp = (0, _react.useCallback)(function (event) {
147
+ var handleStepUp = (0, _utils.useEventCallback)(function (event) {
142
148
  var val = +(value || 0);
143
149
  var bit = decimals(val, step);
144
150
  handleChangeValue(getSafeValue((val + step).toFixed(bit)), event);
145
- }, [getSafeValue, handleChangeValue, step, value]);
151
+ });
146
152
 
147
153
  // Decrement value by step
148
- var handleStepDown = (0, _react.useCallback)(function (event) {
154
+ var handleStepDown = (0, _utils.useEventCallback)(function (event) {
149
155
  var val = +(value || 0);
150
156
  var bit = decimals(val, step);
151
157
  handleChangeValue(getSafeValue((val - step).toFixed(bit)), event);
152
- }, [getSafeValue, handleChangeValue, step, value]);
158
+ });
153
159
 
154
160
  // Disables step up/down button when
155
161
  // - InputNumber is disabled/readonly
156
162
  // - value reaches max/min limits
157
163
  var stepUpDisabled = disabled || readOnly || valueReachesMax(value, max);
158
164
  var stepDownDisabled = disabled || readOnly || valueReachesMin(value, min);
159
- var handleKeyDown = (0, _react.useCallback)(function (event) {
165
+ var handleKeyDown = (0, _utils.useEventCallback)(function (event) {
160
166
  switch (event.key) {
161
167
  case _utils.KEY_VALUES.UP:
162
168
  event.preventDefault();
@@ -179,8 +185,8 @@ var InputNumber = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
179
185
  }
180
186
  break;
181
187
  }
182
- }, [handleStepUp, handleStepDown, minProp, maxProp, handleChangeValue, getSafeValue]);
183
- var handleWheel = (0, _react.useCallback)(function (event) {
188
+ });
189
+ var handleWheel = (0, _utils.useEventCallback)(function (event) {
184
190
  if (!scrollable) {
185
191
  event.preventDefault();
186
192
  return;
@@ -196,18 +202,19 @@ var InputNumber = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
196
202
  }
197
203
  }
198
204
  onWheel === null || onWheel === void 0 ? void 0 : onWheel(event);
199
- }, [disabled, handleStepDown, handleStepUp, onWheel, readOnly, scrollable]);
200
- var handleChange = (0, _react.useCallback)(function (value, event) {
205
+ });
206
+ var handleChange = (0, _utils.useEventCallback)(function (value, event) {
201
207
  if (!/^-?(?:\d+)?(\.)?\d*$/.test(value) && value !== '') {
202
208
  return;
203
209
  }
204
210
  handleChangeValue(value, event);
205
- }, [handleChangeValue]);
206
- var handleBlur = (0, _react.useCallback)(function (event) {
211
+ });
212
+ var handleBlur = (0, _utils.useEventCallback)(function (event) {
207
213
  var _event$target;
208
214
  var targetValue = Number.parseFloat((_event$target = event.target) === null || _event$target === void 0 ? void 0 : _event$target.value);
209
215
  handleChangeValue(getSafeValue(targetValue), event);
210
- }, [getSafeValue, handleChangeValue]);
216
+ setIsFocused(false);
217
+ });
211
218
  (0, _react.useEffect)(function () {
212
219
  var wheelListener;
213
220
  if (inputRef.current) {
@@ -220,19 +227,31 @@ var InputNumber = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
220
227
  (_wheelListener = wheelListener) === null || _wheelListener === void 0 ? void 0 : _wheelListener.off();
221
228
  };
222
229
  }, [handleWheel, scrollable]);
230
+ var renderValue = function renderValue() {
231
+ if ((0, _isNil.default)(value)) {
232
+ return '';
233
+ }
234
+ if (isFocused) {
235
+ return value;
236
+ }
237
+ return formatter ? formatter(value) : value;
238
+ };
223
239
  var input = /*#__PURE__*/_react.default.createElement(_Input.default, (0, _extends2.default)({}, htmlInputProps, {
224
- type: "number",
240
+ ref: plaintext ? ref : undefined,
241
+ inputRef: inputRef,
225
242
  autoComplete: "off",
243
+ inputMode: "numeric",
226
244
  step: step,
227
- inputRef: inputRef,
228
- onChange: handleChange,
229
- onBlur: (0, _utils.createChainedFunction)(handleBlur, htmlInputProps === null || htmlInputProps === void 0 ? void 0 : htmlInputProps.onBlur),
230
- value: (0, _isNil.default)(value) ? '' : "" + value,
245
+ value: renderValue(),
231
246
  disabled: disabled,
232
247
  readOnly: readOnly,
233
248
  plaintext: plaintext,
234
- ref: plaintext ? ref : undefined,
235
- onKeyDown: handleKeyDown
249
+ onKeyDown: handleKeyDown,
250
+ onChange: handleChange,
251
+ onBlur: (0, _utils.createChainedFunction)(handleBlur, onBlur),
252
+ onFocus: (0, _utils.createChainedFunction)(function () {
253
+ return setIsFocused(true);
254
+ }, onFocus)
236
255
  }));
237
256
  if (plaintext) {
238
257
  return input;
@@ -0,0 +1,15 @@
1
+ /// <reference types="react" />
2
+ import { type SelectPickerProps } from '../SelectPicker';
3
+ import { PaginationLocale } from '../locales';
4
+ import { OnChangeCallback, TypeAttributes } from '../@types/common';
5
+ interface LimitPickerProps extends Omit<SelectPickerProps<any>, 'locale' | 'disabled' | 'data'> {
6
+ disabled?: boolean | ((eventKey: number | string) => boolean);
7
+ limitOptions: number[];
8
+ locale: PaginationLocale;
9
+ limit: number;
10
+ size?: TypeAttributes.Size;
11
+ prefix: (input: string) => string;
12
+ onChangeLimit: OnChangeCallback<any>;
13
+ }
14
+ declare const LimitPicker: (props: LimitPickerProps) => JSX.Element;
15
+ export default LimitPicker;
@@ -0,0 +1,51 @@
1
+ 'use client';
2
+ "use strict";
3
+
4
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
5
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
6
+ exports.__esModule = true;
7
+ exports.default = void 0;
8
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
+ var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
10
+ var _react = _interopRequireWildcard(require("react"));
11
+ var _SelectPicker = _interopRequireDefault(require("../SelectPicker"));
12
+ var _utils = require("../utils");
13
+ var LimitPicker = function LimitPicker(props) {
14
+ var disabled = props.disabled,
15
+ limitOptions = props.limitOptions,
16
+ locale = props.locale,
17
+ limit = props.limit,
18
+ onChangeLimit = props.onChangeLimit,
19
+ size = props.size,
20
+ prefix = props.prefix,
21
+ rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["disabled", "limitOptions", "locale", "limit", "onChangeLimit", "size", "prefix"]);
22
+ var containerRef = (0, _react.useRef)(null);
23
+ var disabledPicker = typeof disabled === 'function' ? disabled('picker') : Boolean(disabled);
24
+ var formatlimitOptions = limitOptions.map(function (item) {
25
+ return {
26
+ value: item,
27
+ label: locale.limit && (0, _utils.tplTransform)(locale.limit, item)
28
+ };
29
+ });
30
+ return /*#__PURE__*/_react.default.createElement("div", {
31
+ className: prefix('limit'),
32
+ ref: containerRef
33
+ }, /*#__PURE__*/_react.default.createElement(_SelectPicker.default, (0, _extends2.default)({}, rest, {
34
+ size: size,
35
+ cleanable: false,
36
+ searchable: false,
37
+ placement: "topStart",
38
+ data: formatlimitOptions,
39
+ value: limit,
40
+ onChange: onChangeLimit,
41
+ menuStyle: {
42
+ minWidth: 'auto'
43
+ },
44
+ disabled: disabledPicker,
45
+ container: function container() {
46
+ return containerRef.current;
47
+ }
48
+ })));
49
+ };
50
+ var _default = LimitPicker;
51
+ exports.default = _default;
@@ -2,13 +2,12 @@
2
2
  "use strict";
3
3
 
4
4
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
5
- var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
6
5
  exports.__esModule = true;
7
6
  exports.default = void 0;
8
7
  var _taggedTemplateLiteralLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteralLoose"));
9
8
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
9
  var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
11
- var _react = _interopRequireWildcard(require("react"));
10
+ var _react = _interopRequireDefault(require("react"));
12
11
  var _propTypes = _interopRequireDefault(require("prop-types"));
13
12
  var _More = _interopRequireDefault(require("@rsuite/icons/legacy/More"));
14
13
  var _PagePrevious = _interopRequireDefault(require("@rsuite/icons/legacy/PagePrevious"));
@@ -61,13 +60,13 @@ var Pagination = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
61
60
  prefix = _useClassNames.prefix;
62
61
  var _useCustom = (0, _utils.useCustom)('Pagination', overrideLocale),
63
62
  locale = _useCustom.locale;
64
- var renderItem = (0, _react.useCallback)(function (key, itemProps) {
63
+ var renderItem = function renderItem(key, itemProps) {
65
64
  var eventKey = itemProps.eventKey,
66
65
  disabled = itemProps.disabled,
67
66
  itemRest = (0, _objectWithoutPropertiesLoose2.default)(itemProps, ["eventKey", "disabled"]);
68
- var disabledItem = disabled;
67
+ var disabledButton = disabled;
69
68
  if (typeof disabledProp !== 'undefined') {
70
- disabledItem = typeof disabledProp === 'function' ? disabledProp(eventKey) : disabledProp;
69
+ disabledButton = typeof disabledProp === 'function' ? disabledProp(eventKey) : disabledProp;
71
70
  }
72
71
  var title = (locale === null || locale === void 0 ? void 0 : locale[key]) || eventKey;
73
72
  return /*#__PURE__*/_react.default.createElement(_PaginationButton.default, (0, _extends2.default)({
@@ -77,10 +76,10 @@ var Pagination = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
77
76
  key: key + "-" + eventKey,
78
77
  eventKey: eventKey,
79
78
  as: linkAs,
80
- disabled: disabledItem,
81
- onSelect: disabledItem ? undefined : onSelect
79
+ disabled: disabledButton,
80
+ onSelect: disabledButton ? undefined : onSelect
82
81
  }));
83
- }, [disabledProp, linkAs, linkProps, locale, onSelect]);
82
+ };
84
83
  var renderFirst = function renderFirst() {
85
84
  if (!first) {
86
85
  return null;