rsuite 5.68.1 → 5.69.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 (75) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/Calendar/styles/index.css +1 -1
  3. package/Calendar/styles/index.less +1 -1
  4. package/DatePicker/styles/index.css +1 -1
  5. package/DateRangePicker/styles/index.css +1 -1
  6. package/cjs/Calendar/Calendar.d.ts +7 -2
  7. package/cjs/Calendar/Calendar.js +1 -1
  8. package/cjs/Calendar/CalendarContainer.d.ts +5 -0
  9. package/cjs/Calendar/CalendarContainer.js +15 -44
  10. package/cjs/Calendar/CalendarContext.d.ts +126 -2
  11. package/cjs/Calendar/CalendarContext.js +11 -3
  12. package/cjs/Calendar/CalendarHeader.js +3 -20
  13. package/cjs/Calendar/MonthDropdown.js +39 -29
  14. package/cjs/Calendar/TimeDropdown.js +0 -14
  15. package/cjs/Calendar/index.d.ts +1 -2
  16. package/cjs/CustomProvider/CustomProvider.d.ts +13 -16
  17. package/cjs/DateInput/hooks/useDateInputState.d.ts +0 -2
  18. package/cjs/DateInput/hooks/useDateInputState.js +4 -1
  19. package/cjs/DatePicker/DatePicker.d.ts +6 -1
  20. package/cjs/DatePicker/DatePicker.js +10 -8
  21. package/cjs/DateRangePicker/Calendar.d.ts +3 -3
  22. package/cjs/DateRangePicker/Calendar.js +1 -1
  23. package/cjs/DateRangePicker/DateRangePicker.d.ts +15 -3
  24. package/cjs/DateRangePicker/DateRangePicker.js +30 -25
  25. package/cjs/InputNumber/InputNumber.d.ts +9 -0
  26. package/cjs/InputNumber/InputNumber.js +28 -8
  27. package/cjs/internals/Windowing/List.d.ts +13 -3
  28. package/cjs/internals/Windowing/index.d.ts +1 -1
  29. package/cjs/internals/hooks/useCustom.js +25 -12
  30. package/cjs/useMediaQuery/useMediaQuery.js +12 -6
  31. package/dist/rsuite-no-reset-rtl.css +1 -1
  32. package/dist/rsuite-no-reset-rtl.min.css +1 -1
  33. package/dist/rsuite-no-reset-rtl.min.css.map +1 -1
  34. package/dist/rsuite-no-reset.css +1 -1
  35. package/dist/rsuite-no-reset.min.css +1 -1
  36. package/dist/rsuite-no-reset.min.css.map +1 -1
  37. package/dist/rsuite-rtl.css +1 -1
  38. package/dist/rsuite-rtl.min.css +1 -1
  39. package/dist/rsuite-rtl.min.css.map +1 -1
  40. package/dist/rsuite.css +1 -1
  41. package/dist/rsuite.js +16 -16
  42. package/dist/rsuite.min.css +1 -1
  43. package/dist/rsuite.min.css.map +1 -1
  44. package/dist/rsuite.min.js +1 -1
  45. package/dist/rsuite.min.js.map +1 -1
  46. package/esm/Calendar/Calendar.d.ts +7 -2
  47. package/esm/Calendar/Calendar.js +1 -1
  48. package/esm/Calendar/CalendarContainer.d.ts +5 -0
  49. package/esm/Calendar/CalendarContainer.js +15 -44
  50. package/esm/Calendar/CalendarContext.d.ts +126 -2
  51. package/esm/Calendar/CalendarContext.js +12 -3
  52. package/esm/Calendar/CalendarHeader.js +3 -20
  53. package/esm/Calendar/MonthDropdown.js +39 -29
  54. package/esm/Calendar/TimeDropdown.js +0 -14
  55. package/esm/Calendar/index.d.ts +1 -2
  56. package/esm/CustomProvider/CustomProvider.d.ts +13 -16
  57. package/esm/DateInput/hooks/useDateInputState.d.ts +0 -2
  58. package/esm/DateInput/hooks/useDateInputState.js +5 -2
  59. package/esm/DatePicker/DatePicker.d.ts +6 -1
  60. package/esm/DatePicker/DatePicker.js +10 -8
  61. package/esm/DateRangePicker/Calendar.d.ts +3 -3
  62. package/esm/DateRangePicker/Calendar.js +1 -1
  63. package/esm/DateRangePicker/DateRangePicker.d.ts +15 -3
  64. package/esm/DateRangePicker/DateRangePicker.js +19 -14
  65. package/esm/InputNumber/InputNumber.d.ts +9 -0
  66. package/esm/InputNumber/InputNumber.js +29 -9
  67. package/esm/internals/Windowing/List.d.ts +13 -3
  68. package/esm/internals/Windowing/index.d.ts +1 -1
  69. package/esm/internals/hooks/useCustom.js +25 -12
  70. package/esm/useMediaQuery/useMediaQuery.js +13 -7
  71. package/package.json +1 -1
  72. package/cjs/Calendar/types.d.ts +0 -28
  73. package/cjs/Calendar/types.js +0 -4
  74. package/esm/Calendar/types.d.ts +0 -28
  75. package/esm/Calendar/types.js +0 -2
@@ -1,6 +1,14 @@
1
1
  import React from 'react';
2
+ import type { Locale as DateFnsLocale } from 'date-fns';
2
3
  import { Locale } from '../locales';
3
4
  import { ToastContainerInstance } from '../toaster/ToastContainer';
5
+ export interface FormatDateOptions {
6
+ locale?: DateFnsLocale;
7
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6;
8
+ firstWeekContainsDate?: number;
9
+ useAdditionalWeekYearTokens?: boolean;
10
+ useAdditionalDayOfYearTokens?: boolean;
11
+ }
4
12
  export interface CustomValue<T = Locale> {
5
13
  /** Language configuration */
6
14
  locale: T;
@@ -19,7 +27,7 @@ export interface CustomValue<T = Locale> {
19
27
  * }
20
28
  *
21
29
  * */
22
- formatDate: (date: Date | number, format: string) => string;
30
+ formatDate: (date: Date | number, format: string, options?: FormatDateOptions) => string;
23
31
  /**
24
32
  * Return the date parsed from string using the given format string.
25
33
  *
@@ -33,7 +41,7 @@ export interface CustomValue<T = Locale> {
33
41
  * }
34
42
  *
35
43
  * */
36
- parseDate: (dateString: string, formatString: string) => Date;
44
+ parseDate: (dateString: string, formatString: string, referenceDate?: Date | number, options?: FormatDateOptions) => Date;
37
45
  /**
38
46
  * A Map of toast containers
39
47
  */
@@ -60,6 +68,7 @@ declare const CustomContext: React.Context<CustomProviderProps<{
60
68
  } | undefined;
61
69
  Plaintext?: {
62
70
  unfilled: string;
71
+ /** Support right-to-left */
63
72
  notSelected: string;
64
73
  notUploaded: string;
65
74
  } | undefined;
@@ -67,19 +76,7 @@ declare const CustomContext: React.Context<CustomProviderProps<{
67
76
  more: string;
68
77
  prev: string;
69
78
  next: string;
70
- first: string; /**
71
- * Return the date parsed from string using the given format string.
72
- *
73
- * Example:
74
- *
75
- * import parse from 'date-fns/parse';
76
- * import eo from 'date-fns/locale/eo'
77
- *
78
- * function parseDate(date, formatStr) {
79
- * return parse(date, formatStr, new Date(), { locale: eo });
80
- * }
81
- *
82
- * */
79
+ first: string;
83
80
  last: string;
84
81
  limit: string;
85
82
  total: string;
@@ -152,7 +149,7 @@ declare const CustomContext: React.Context<CustomProviderProps<{
152
149
  } | undefined;
153
150
  Uploader?: {
154
151
  inited: string;
155
- progress: string; /** If true, the ripple effect is disabled. Affected components include: Button, Nav.Item, Pagination. */
152
+ progress: string;
156
153
  error: string;
157
154
  complete: string;
158
155
  emptyFile: string;
@@ -1,8 +1,6 @@
1
- import { format } from '../../internals/utils/date';
2
1
  import type { Locale } from 'date-fns';
3
2
  interface DateInputState {
4
3
  formatStr: string;
5
- formatDate?: typeof format;
6
4
  locale: Locale;
7
5
  date?: Date | null;
8
6
  isControlledDate?: boolean;
@@ -8,12 +8,15 @@ exports.useDateInputState = useDateInputState;
8
8
  var _react = require("react");
9
9
  var _startCase = _interopRequireDefault(require("lodash/startCase"));
10
10
  var _date = require("../../internals/utils/date");
11
+ var _hooks = require("../../internals/hooks");
11
12
  var _DateField = require("../DateField");
12
13
  function useDateInputState(_ref) {
13
14
  var formatStr = _ref.formatStr,
14
15
  locale = _ref.locale,
15
16
  date = _ref.date,
16
17
  isControlledDate = _ref.isControlledDate;
18
+ var _useCustom = (0, _hooks.useCustom)(),
19
+ formatDate = _useCustom.formatDate;
17
20
  var _useDateField = (0, _DateField.useDateField)(formatStr, locale.localize, date),
18
21
  dateField = _useDateField.dateField,
19
22
  dispatch = _useDateField.dispatch,
@@ -94,7 +97,7 @@ function useDateInputState(_ref) {
94
97
  };
95
98
  var toControlledDateString = function toControlledDateString() {
96
99
  if (date && (0, _date.isValid)(date)) {
97
- return (0, _date.format)(date, formatStr, {
100
+ return formatDate(date, formatStr, {
98
101
  locale: locale
99
102
  });
100
103
  }
@@ -1,8 +1,9 @@
1
1
  import React from 'react';
2
2
  import { RangeType } from './Toolbar';
3
- import { DatePickerLocale } from '../locales';
4
3
  import type { FormControlBaseProps, PickerBaseProps, RsRefForwardingComponent } from '../internals/types';
4
+ import type { DatePickerLocale } from '../locales';
5
5
  import type { DeprecatedProps } from './types';
6
+ import type { MonthDropdownProps } from '../Calendar/CalendarContext';
6
7
  export interface DatePickerProps extends PickerBaseProps<DatePickerLocale>, FormControlBaseProps<Date | null>, DeprecatedProps {
7
8
  /**
8
9
  * Custom caret component
@@ -77,6 +78,10 @@ export interface DatePickerProps extends PickerBaseProps<DatePickerLocale>, Form
77
78
  * Meridian format for 12-hour time
78
79
  */
79
80
  showMeridian?: boolean;
81
+ /**
82
+ * The props for the Month Dropdown component.
83
+ */
84
+ monthDropdownProps?: MonthDropdownProps;
80
85
  /**
81
86
  * Whether a date on the calendar view should be disabled
82
87
  *
@@ -15,23 +15,23 @@ var _Calendar = _interopRequireDefault(require("@rsuite/icons/legacy/Calendar"))
15
15
  var _ClockO = _interopRequireDefault(require("@rsuite/icons/legacy/ClockO"));
16
16
  var _CalendarContainer = _interopRequireDefault(require("../Calendar/CalendarContainer"));
17
17
  var _useCalendarDate2 = _interopRequireDefault(require("../Calendar/useCalendarDate"));
18
- var _MonthDropdown = require("../Calendar/MonthDropdown");
19
18
  var _Toolbar = _interopRequireDefault(require("./Toolbar"));
20
19
  var _Stack = _interopRequireDefault(require("../Stack"));
21
20
  var _PredefinedRanges = _interopRequireDefault(require("./PredefinedRanges"));
21
+ var _DateInput = _interopRequireDefault(require("../DateInput"));
22
+ var _InputGroup = _interopRequireDefault(require("../InputGroup"));
23
+ var _useMonthView2 = _interopRequireDefault(require("./hooks/useMonthView"));
24
+ var _useFocus2 = _interopRequireDefault(require("./hooks/useFocus"));
25
+ var _useCustomizedInput2 = _interopRequireDefault(require("./hooks/useCustomizedInput"));
26
+ var _MonthDropdown = require("../Calendar/MonthDropdown");
22
27
  var _utils = require("../internals/utils");
23
28
  var _hooks = require("../internals/hooks");
24
29
  var _date = require("../internals/utils/date");
25
30
  var _Picker = require("../internals/Picker");
26
31
  var _OverlayTrigger = require("../internals/Overlay/OverlayTrigger");
27
- var _DateInput = _interopRequireDefault(require("../DateInput"));
28
- var _InputGroup = _interopRequireDefault(require("../InputGroup"));
29
32
  var _utils2 = require("./utils");
30
- var _useMonthView2 = _interopRequireDefault(require("./hooks/useMonthView"));
31
- var _useFocus2 = _interopRequireDefault(require("./hooks/useFocus"));
32
- var _useCustomizedInput2 = _interopRequireDefault(require("./hooks/useCustomizedInput"));
33
33
  var _templateObject, _templateObject2;
34
- var _excluded = ["as", "className", "classPrefix", "calendarDefaultDate", "cleanable", "editable", "defaultValue", "disabled", "readOnly", "plaintext", "format", "id", "isoWeek", "weekStart", "limitEndYear", "limitStartYear", "locale", "loading", "label", "menuClassName", "menuStyle", "appearance", "placement", "oneTap", "placeholder", "ranges", "value", "showMeridian", "showWeekNumbers", "style", "size", "caretAs", "shouldDisableDate", "shouldDisableHour", "shouldDisableMinute", "shouldDisableSecond", "onChange", "onChangeCalendarDate", "onClean", "onEnter", "onExit", "onNextMonth", "onOk", "onPrevMonth", "onSelect", "onToggleMonthDropdown", "onToggleTimeDropdown", "onShortcutClick", "renderCell", "renderValue", "disabledDate", "disabledHours", "disabledMinutes", "disabledSeconds"];
34
+ var _excluded = ["as", "className", "classPrefix", "calendarDefaultDate", "cleanable", "caretAs", "editable", "defaultValue", "disabled", "readOnly", "plaintext", "format", "id", "isoWeek", "weekStart", "limitEndYear", "limitStartYear", "locale", "loading", "label", "menuClassName", "menuStyle", "appearance", "placement", "oneTap", "placeholder", "ranges", "value", "showMeridian", "showWeekNumbers", "style", "size", "monthDropdownProps", "shouldDisableDate", "shouldDisableHour", "shouldDisableMinute", "shouldDisableSecond", "onChange", "onChangeCalendarDate", "onClean", "onEnter", "onExit", "onNextMonth", "onOk", "onPrevMonth", "onSelect", "onToggleMonthDropdown", "onToggleTimeDropdown", "onShortcutClick", "renderCell", "renderValue", "disabledDate", "disabledHours", "disabledMinutes", "disabledSeconds"];
35
35
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
36
36
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
37
37
  /**
@@ -49,6 +49,7 @@ var DatePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
49
49
  calendarDefaultDate = props.calendarDefaultDate,
50
50
  _props$cleanable = props.cleanable,
51
51
  cleanable = _props$cleanable === void 0 ? true : _props$cleanable,
52
+ caretAsProp = props.caretAs,
52
53
  _props$editable = props.editable,
53
54
  editable = _props$editable === void 0 ? true : _props$editable,
54
55
  defaultValue = props.defaultValue,
@@ -82,7 +83,7 @@ var DatePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
82
83
  showWeekNumbers = props.showWeekNumbers,
83
84
  style = props.style,
84
85
  size = props.size,
85
- caretAsProp = props.caretAs,
86
+ monthDropdownProps = props.monthDropdownProps,
86
87
  shouldDisableDate = props.shouldDisableDate,
87
88
  shouldDisableHour = props.shouldDisableHour,
88
89
  shouldDisableMinute = props.shouldDisableMinute,
@@ -420,6 +421,7 @@ var DatePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
420
421
  isoWeek: isoWeek,
421
422
  weekStart: weekStart,
422
423
  calendarDate: calendarDate,
424
+ monthDropdownProps: monthDropdownProps,
423
425
  renderCellOnPicker: renderCell,
424
426
  onMoveForward: handleMoveForward,
425
427
  onMoveBackward: handleMoveBackward,
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
- import { DATERANGE_DISABLED_TARGET } from '../internals/constants';
3
2
  import { CalendarProps as CalendarCoreProps } from '../Calendar/CalendarContainer';
3
+ import { DATERANGE_DISABLED_TARGET } from '../internals/constants';
4
4
  import { DateRange } from './types';
5
5
  import { RsRefForwardingComponent, WithAsProps } from '../internals/types';
6
6
  import { DatePickerLocale } from '../locales';
@@ -16,13 +16,13 @@ export interface CalendarProps extends WithAsProps, Omit<CalendarCoreProps, Omit
16
16
  limitEndYear?: number;
17
17
  limitStartYear?: number;
18
18
  locale?: DatePickerLocale;
19
+ showWeekNumbers?: boolean;
20
+ value?: [] | [Date] | [Date, Date];
19
21
  onChangeCalendarMonth?: (index: number, date: Date) => void;
20
22
  onChangeCalendarTime?: (index: number, date: Date) => void;
21
23
  onToggleMeridian: (index: number, event: React.MouseEvent) => void;
22
24
  onSelect?: (index: number, date: Date, event: React.SyntheticEvent) => void;
23
25
  onMouseMove?: (date: Date) => void;
24
- showWeekNumbers?: boolean;
25
- value?: [] | [Date] | [Date, Date];
26
26
  }
27
27
  declare const Calendar: RsRefForwardingComponent<'div', CalendarProps>;
28
28
  export default Calendar;
@@ -7,10 +7,10 @@ exports.default = void 0;
7
7
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
8
8
  var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
9
9
  var _react = _interopRequireDefault(require("react"));
10
+ var _CalendarContainer = _interopRequireDefault(require("../Calendar/CalendarContainer"));
10
11
  var _date = require("../internals/utils/date");
11
12
  var _constants = require("../internals/constants");
12
13
  var _hooks = require("../internals/hooks");
13
- var _CalendarContainer = _interopRequireDefault(require("../Calendar/CalendarContainer"));
14
14
  var _excluded = ["as", "calendarDate", "format", "disabledDate", "index", "limitEndYear", "limitStartYear", "onChangeCalendarMonth", "onChangeCalendarTime", "onToggleMeridian", "onSelect", "value"];
15
15
  var Calendar = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
16
16
  var _props$as = props.as,
@@ -1,8 +1,9 @@
1
1
  import React from 'react';
2
- import { FormControlBaseProps, PickerBaseProps } from '../internals/types';
3
- import { DateRangePickerLocale } from '../locales';
4
2
  import { PickerComponent } from '../internals/Picker';
5
- import { DisabledDateFunction, RangeType, DateRange } from './types';
3
+ import type { DisabledDateFunction, RangeType, DateRange } from './types';
4
+ import type { FormControlBaseProps, PickerBaseProps } from '../internals/types';
5
+ import type { DateRangePickerLocale } from '../locales';
6
+ import type { MonthDropdownProps } from '../Calendar/CalendarContext';
6
7
  export interface DateRangePickerProps extends PickerBaseProps<DateRangePickerLocale>, FormControlBaseProps<DateRange | null> {
7
8
  /**
8
9
  * Custom caret component
@@ -85,6 +86,17 @@ export interface DateRangePickerProps extends PickerBaseProps<DateRangePickerLoc
85
86
  * @default ' ~ '
86
87
  */
87
88
  character?: string;
89
+ /**
90
+ * The props for the Month Dropdown component.
91
+ */
92
+ monthDropdownProps?: MonthDropdownProps;
93
+ /**
94
+ * If the user selects a date on the right calendar first, it will automatically switch to the left calendar.
95
+ * Always keep the date on the left calendar as the start date.
96
+ * @default false
97
+ * @version 5.69.0
98
+ */
99
+ calendarSnapping?: boolean;
88
100
  /**
89
101
  * Disabled date
90
102
  * @deprecated Use {@link shouldDisableDate} instead
@@ -17,22 +17,22 @@ var _ClockO = _interopRequireDefault(require("@rsuite/icons/legacy/ClockO"));
17
17
  var _Toolbar = _interopRequireDefault(require("../DatePicker/Toolbar"));
18
18
  var _PredefinedRanges = _interopRequireDefault(require("../DatePicker/PredefinedRanges"));
19
19
  var _Stack = _interopRequireDefault(require("../Stack"));
20
- var _constants = require("../internals/constants");
21
- var _Picker = require("../internals/Picker");
22
- var _hooks = require("../internals/hooks");
23
- var _utils = require("../internals/utils");
24
- var _date = require("../internals/utils/date");
25
- var _Calendar2 = _interopRequireDefault(require("./Calendar"));
26
- var _utils2 = require("./utils");
27
- var _propTypes2 = require("../internals/propTypes");
28
20
  var _DateRangePickerContext = _interopRequireDefault(require("./DateRangePickerContext"));
29
21
  var _DateRangeInput = _interopRequireDefault(require("../DateRangeInput"));
30
22
  var _InputGroup = _interopRequireDefault(require("../InputGroup"));
31
23
  var _Header = _interopRequireDefault(require("./Header"));
32
24
  var _useDateDisabled = _interopRequireDefault(require("./hooks/useDateDisabled"));
33
25
  var _useCustomizedInput2 = _interopRequireDefault(require("../DatePicker/hooks/useCustomizedInput"));
26
+ var _Calendar2 = _interopRequireDefault(require("./Calendar"));
27
+ var _utils = require("./utils");
28
+ var _propTypes2 = require("../internals/propTypes");
29
+ var _constants = require("../internals/constants");
30
+ var _Picker = require("../internals/Picker");
31
+ var _hooks = require("../internals/hooks");
32
+ var _utils2 = require("../internals/utils");
33
+ var _date = require("../internals/utils/date");
34
34
  var _templateObject, _templateObject2;
35
- var _excluded = ["as", "classPrefix", "className", "appearance", "editable", "cleanable", "character", "defaultCalendarValue", "defaultValue", "plaintext", "disabled", "disabledDate", "shouldDisableDate", "format", "hoverRange", "id", "isoWeek", "weekStart", "limitEndYear", "limitStartYear", "locale", "loading", "label", "menuClassName", "menuStyle", "oneTap", "placeholder", "placement", "ranges", "readOnly", "showOneCalendar", "showWeekNumbers", "showMeridian", "showHeader", "style", "size", "caretAs", "value", "onChange", "onClean", "onEnter", "onExit", "onOk", "onSelect", "onShortcutClick", "renderTitle", "renderValue"];
35
+ var _excluded = ["as", "classPrefix", "className", "appearance", "editable", "cleanable", "character", "calendarSnapping", "defaultCalendarValue", "defaultValue", "plaintext", "disabled", "disabledDate", "shouldDisableDate", "format", "hoverRange", "id", "isoWeek", "weekStart", "limitEndYear", "limitStartYear", "locale", "loading", "label", "menuClassName", "menuStyle", "oneTap", "placeholder", "placement", "ranges", "readOnly", "showOneCalendar", "showWeekNumbers", "showMeridian", "showHeader", "style", "size", "caretAs", "value", "monthDropdownProps", "onChange", "onClean", "onEnter", "onExit", "onOk", "onSelect", "onShortcutClick", "renderTitle", "renderValue"];
36
36
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
37
37
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
38
38
  /**
@@ -55,6 +55,7 @@ var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
55
55
  cleanable = _props$cleanable === void 0 ? true : _props$cleanable,
56
56
  _props$character = props.character,
57
57
  character = _props$character === void 0 ? ' ~ ' : _props$character,
58
+ calendarSnapping = props.calendarSnapping,
58
59
  defaultCalendarValue = props.defaultCalendarValue,
59
60
  defaultValue = props.defaultValue,
60
61
  plaintext = props.plaintext,
@@ -94,6 +95,7 @@ var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
94
95
  size = props.size,
95
96
  caretAsProp = props.caretAs,
96
97
  valueProp = props.value,
98
+ monthDropdownProps = props.monthDropdownProps,
97
99
  onChange = props.onChange,
98
100
  onClean = props.onClean,
99
101
  onEnter = props.onEnter,
@@ -155,7 +157,7 @@ var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
155
157
  setHoverDateRange = _useState3[1];
156
158
 
157
159
  // The displayed calendar panel is rendered based on this value.
158
- var _useState4 = (0, _react.useState)((0, _utils2.getSafeCalendarDate)({
160
+ var _useState4 = (0, _react.useState)((0, _utils.getSafeCalendarDate)({
159
161
  value: (_ref2 = value !== null && value !== void 0 ? value : defaultCalendarValue) !== null && _ref2 !== void 0 ? _ref2 : null
160
162
  })),
161
163
  calendarDate = _useState4[0],
@@ -210,7 +212,7 @@ var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
210
212
  // Make the calendar render the value of defaultCalendarValue after clearing the value.
211
213
  nextValue = defaultCalendarValue;
212
214
  }
213
- var nextCalendarDate = (0, _utils2.getSafeCalendarDate)({
215
+ var nextCalendarDate = (0, _utils.getSafeCalendarDate)({
214
216
  value: nextValue,
215
217
  calendarKey: calendarKey,
216
218
  // When only the month is displayed and only one calendar is displayed,
@@ -235,7 +237,7 @@ var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
235
237
  endDate = value[1];
236
238
  strings = "" + formatDate(startDate, formatStr) + character + formatDate(endDate, formatStr);
237
239
  }
238
- return (0, _utils.getStringLength)(strings) + padding;
240
+ return (0, _utils2.getStringLength)(strings) + padding;
239
241
  };
240
242
 
241
243
  /**
@@ -245,14 +247,14 @@ var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
245
247
  function getHoverRangeFunc() {
246
248
  if (hoverRange === 'week') {
247
249
  return function (date) {
248
- return (0, _utils2.getWeekHoverRange)(date, {
250
+ return (0, _utils.getWeekHoverRange)(date, {
249
251
  isoWeek: isoWeek,
250
252
  weekStart: weekStart,
251
253
  locale: locale === null || locale === void 0 ? void 0 : locale.dateLocale
252
254
  });
253
255
  };
254
256
  } else if (hoverRange === 'month') {
255
- return _utils2.getMonthHoverRange;
257
+ return _utils.getMonthHoverRange;
256
258
  }
257
259
  return hoverRange;
258
260
  }
@@ -277,7 +279,7 @@ var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
277
279
  // If nextValue is null, it means that the user is erasing the selected dates.
278
280
  setSelectedDates(nextValue !== null && nextValue !== void 0 ? nextValue : []);
279
281
  setValue(nextValue);
280
- if (!(0, _utils2.isSameRange)(nextValue, value, formatStr)) {
282
+ if (!(0, _utils.isSameRange)(nextValue, value, formatStr)) {
281
283
  onChange === null || onChange === void 0 ? void 0 : onChange(nextValue, event);
282
284
  }
283
285
 
@@ -375,11 +377,13 @@ var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
375
377
  setActiveCalendarKey('start');
376
378
  }
377
379
  setSelectedDates(nextSelectDates);
378
- setCalendarDateRange({
379
- dateRange: nextSelectDates,
380
- calendarKey: calendarKey,
381
- eventName: 'changeDate'
382
- });
380
+ if (!(0, _date.isSameMonth)(calendarDate[index], date) || calendarSnapping) {
381
+ setCalendarDateRange({
382
+ dateRange: nextSelectDates,
383
+ calendarKey: calendarKey,
384
+ eventName: 'changeDate'
385
+ });
386
+ }
383
387
  onSelect === null || onSelect === void 0 ? void 0 : onSelect(date, event);
384
388
  setSelectedIdle(!isSelectedIdle);
385
389
  });
@@ -448,7 +452,7 @@ var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
448
452
  nextCalendarDate = [startDate, (0, _date.isSameMonth)(startDate, endData) ? (0, _date.addMonths)(endData, calendarGap) : endData];
449
453
  } else {
450
454
  // Reset the date on the calendar to the default date
451
- nextCalendarDate = (0, _utils2.getSafeCalendarDate)({
455
+ nextCalendarDate = (0, _utils.getSafeCalendarDate)({
452
456
  value: defaultCalendarValue !== null && defaultCalendarValue !== void 0 ? defaultCalendarValue : null
453
457
  });
454
458
  }
@@ -625,6 +629,7 @@ var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
625
629
  showWeekNumbers: showWeekNumbers,
626
630
  format: formatStr,
627
631
  value: selectedDates,
632
+ monthDropdownProps: monthDropdownProps,
628
633
  hoverRangeValue: hoverDateRange !== null && hoverDateRange !== void 0 ? hoverDateRange : undefined,
629
634
  disabledDate: disableCalendarDate,
630
635
  onSelect: handleSelectDate,
@@ -657,7 +662,7 @@ var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
657
662
  "aria-labelledby": label ? id + "-label" : undefined,
658
663
  tabIndex: -1,
659
664
  className: classes,
660
- ref: (0, _utils.mergeRefs)(overlay, speakerRef),
665
+ ref: (0, _utils2.mergeRefs)(overlay, speakerRef),
661
666
  target: trigger,
662
667
  style: styles
663
668
  }, /*#__PURE__*/_react.default.createElement("div", {
@@ -744,7 +749,7 @@ var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
744
749
  }
745
750
  return false;
746
751
  };
747
- var _partitionHTMLProps = (0, _utils.partitionHTMLProps)(restProps, {
752
+ var _partitionHTMLProps = (0, _utils2.partitionHTMLProps)(restProps, {
748
753
  htmlProps: [],
749
754
  includeAria: true
750
755
  }),
@@ -770,8 +775,8 @@ var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
770
775
  ref: trigger,
771
776
  pickerProps: (0, _pick.default)(props, _Picker.pickTriggerPropKeys),
772
777
  placement: placement,
773
- onEnter: (0, _utils.createChainedFunction)(events.onActive, handleEnter, onEnter),
774
- onExit: (0, _utils.createChainedFunction)(events.onInactive, onExit),
778
+ onEnter: (0, _utils2.createChainedFunction)(events.onActive, handleEnter, onEnter),
779
+ onExit: (0, _utils2.createChainedFunction)(events.onInactive, onExit),
775
780
  speaker: renderCalendarOverlay
776
781
  }, /*#__PURE__*/_react.default.createElement(Component, {
777
782
  ref: root,
@@ -9,6 +9,15 @@ export interface InputNumberProps<T = number | string | null> extends Omit<React
9
9
  * An input can show that it is disabled
10
10
  */
11
11
  disabled?: boolean;
12
+ /**
13
+ *
14
+ * Decimal separator
15
+ * https://en.wikipedia.org/wiki/Decimal_separator
16
+ *
17
+ * @default '.'
18
+ * @version 5.69.0
19
+ */
20
+ decimalSeparator?: string;
12
21
  /**
13
22
  * Format the value of the input
14
23
  */
@@ -20,7 +20,7 @@ var _hooks = require("../internals/hooks");
20
20
  var _constants = require("../internals/constants");
21
21
  var _utils = require("../internals/utils");
22
22
  var _propTypes2 = require("../internals/propTypes");
23
- var _excluded = ["as", "className", "classPrefix", "disabled", "formatter", "readOnly", "plaintext", "value", "defaultValue", "size", "prefix", "postfix", "step", "buttonAppearance", "min", "max", "scrollable", "onChange", "onWheel", "onBlur", "onFocus"];
23
+ var _excluded = ["as", "className", "classPrefix", "disabled", "decimalSeparator", "formatter", "readOnly", "plaintext", "value", "defaultValue", "size", "prefix", "postfix", "step", "buttonAppearance", "min", "max", "scrollable", "onChange", "onWheel", "onBlur", "onFocus"];
24
24
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
25
25
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
26
26
  /**
@@ -89,6 +89,7 @@ var InputNumber = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
89
89
  _props$classPrefix = props.classPrefix,
90
90
  classPrefix = _props$classPrefix === void 0 ? 'input-number' : _props$classPrefix,
91
91
  disabled = props.disabled,
92
+ decimalSeparator = props.decimalSeparator,
92
93
  formatter = props.formatter,
93
94
  readOnly = props.readOnly,
94
95
  plaintext = props.plaintext,
@@ -208,14 +209,30 @@ var InputNumber = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
208
209
  onWheel === null || onWheel === void 0 ? void 0 : onWheel(event);
209
210
  });
210
211
  var handleChange = (0, _hooks.useEventCallback)(function (value, event) {
211
- if (!/^-?(?:\d+)?(\.)?\d*$/.test(value) && value !== '') {
212
+ var separator = decimalSeparator || '.';
213
+ var escapedSeparator = separator.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
214
+ var regex = new RegExp("^-?(?:\\d+)?(" + escapedSeparator + ")?\\d*$");
215
+ if (!regex.test(value) && value !== '') {
212
216
  return;
213
217
  }
214
218
  handleChangeValue(value, event);
215
219
  });
220
+ var replaceDecimalSeparator = (0, _react.useCallback)(function (value) {
221
+ if (decimalSeparator && value) {
222
+ return value.toString().replace('.', decimalSeparator);
223
+ }
224
+ return value;
225
+ }, [decimalSeparator]);
226
+ var restoreDecimalSeparator = (0, _react.useCallback)(function (value) {
227
+ if (decimalSeparator && value) {
228
+ return value.replace(decimalSeparator, '.');
229
+ }
230
+ return value;
231
+ }, [decimalSeparator]);
216
232
  var handleBlur = (0, _hooks.useEventCallback)(function (event) {
217
233
  var _event$target;
218
- var targetValue = Number.parseFloat((_event$target = event.target) === null || _event$target === void 0 ? void 0 : _event$target.value);
234
+ var value = restoreDecimalSeparator((_event$target = event.target) === null || _event$target === void 0 ? void 0 : _event$target.value);
235
+ var targetValue = Number.parseFloat(value);
219
236
  handleChangeValue(getSafeValue(targetValue), event);
220
237
  setIsFocused(false);
221
238
  });
@@ -231,22 +248,25 @@ var InputNumber = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
231
248
  (_wheelListener = wheelListener) === null || _wheelListener === void 0 ? void 0 : _wheelListener.off();
232
249
  };
233
250
  }, [handleWheel, scrollable]);
234
- var renderValue = function renderValue() {
251
+ var inputValue = (0, _react.useMemo)(function () {
235
252
  if ((0, _isNil.default)(value)) {
236
253
  return '';
237
254
  }
238
255
  if (isFocused) {
239
- return value;
256
+ return replaceDecimalSeparator(value);
240
257
  }
241
- return formatter ? formatter(value) : value;
242
- };
258
+ if (formatter) {
259
+ return formatter(value);
260
+ }
261
+ return replaceDecimalSeparator(value);
262
+ }, [formatter, isFocused, replaceDecimalSeparator, value]);
243
263
  var input = /*#__PURE__*/_react.default.createElement(_Input.default, (0, _extends2.default)({}, htmlInputProps, {
244
264
  ref: plaintext ? ref : undefined,
245
265
  inputRef: inputRef,
246
266
  autoComplete: "off",
247
267
  inputMode: "numeric",
248
268
  step: step,
249
- value: renderValue(),
269
+ value: inputValue,
250
270
  disabled: disabled,
251
271
  readOnly: readOnly,
252
272
  plaintext: plaintext,
@@ -1,7 +1,17 @@
1
- import { VariableSizeList, ListItemKeySelector, ListOnScrollProps, ListOnItemsRenderedProps } from 'react-window';
2
- import { WithAsProps, RsRefForwardingComponent } from '../types';
1
+ import React from 'react';
2
+ import { VariableSizeList, ListItemKeySelector, ListOnScrollProps, ListOnItemsRenderedProps, ListProps as BaseListProps } from 'react-window';
3
+ import { RsRefForwardingComponent } from '../types';
3
4
  export declare const defaultItemSize: () => number;
4
- export interface ListProps<T = any> extends WithAsProps {
5
+ export interface ListProps<T = any> extends Omit<BaseListProps, 'width'> {
6
+ ref?: React.Ref<ListHandle>;
7
+ /**
8
+ * Width of the list.
9
+ *
10
+ * For horizontal lists, this must be a number. It affects the number of columns that will be rendered (and displayed) at any given time.
11
+ *
12
+ * For vertical lists, this can be a number or a string (e.g. "50%").
13
+ */
14
+ width?: number | string;
5
15
  /**
6
16
  * @deprecated use itemSize instead
7
17
  * Either a fixed row height (number) or a function that returns the height of a row given its index: ({ index: number }): number
@@ -1,5 +1,5 @@
1
1
  export { default as AutoSizer } from './AutoSizer';
2
2
  export { default as List, defaultItemSize } from './List';
3
3
  export { FixedSizeList, VariableSizeList } from 'react-window';
4
- export type { ListChildComponentProps } from 'react-window';
4
+ export type { ListChildComponentProps, FixedSizeListProps } from 'react-window';
5
5
  export type { ListProps, ListHandle } from './List';
@@ -43,25 +43,38 @@ function useCustom(keys, overrideLocale) {
43
43
  if (overrideLocale) {
44
44
  componentLocale = mergeObject([componentLocale, overrideLocale]);
45
45
  }
46
- var defaultFormatDate = (0, _react.useCallback)(function (date, formatStr) {
47
- var _locale$Calendar;
48
- return (0, _date.format)((0, _date.isValid)(date) ? date : new Date(), formatStr, {
49
- locale: locale === null || locale === void 0 ? void 0 : (_locale$Calendar = locale.Calendar) === null || _locale$Calendar === void 0 ? void 0 : _locale$Calendar.dateLocale
50
- });
51
- }, [(_locale$Calendar2 = locale.Calendar) === null || _locale$Calendar2 === void 0 ? void 0 : _locale$Calendar2.dateLocale]);
52
- var defaultParseDate = (0, _react.useCallback)(function (dateString, formatString) {
46
+ var _formatDate = (0, _react.useCallback)(function (date, formatStr, options) {
47
+ try {
48
+ var _locale$Calendar;
49
+ if (formatDate) {
50
+ return formatDate(date, formatStr, options);
51
+ }
52
+ return (0, _date.format)((0, _date.isValid)(date) ? date : new Date(), formatStr, (0, _extends2.default)({
53
+ locale: locale === null || locale === void 0 ? void 0 : (_locale$Calendar = locale.Calendar) === null || _locale$Calendar === void 0 ? void 0 : _locale$Calendar.dateLocale
54
+ }, options));
55
+ } catch (error) {
56
+ if (process.env.NODE_ENV === 'development') {
57
+ console.error('Error: Invalid date format', error);
58
+ }
59
+ return 'Error: Invalid date format';
60
+ }
61
+ }, [formatDate, locale === null || locale === void 0 ? void 0 : (_locale$Calendar2 = locale.Calendar) === null || _locale$Calendar2 === void 0 ? void 0 : _locale$Calendar2.dateLocale]);
62
+ var _parseDate = (0, _react.useCallback)(function (dateString, formatString, referenceDate, options) {
53
63
  var _locale$Calendar3;
54
- return (0, _date.parse)(dateString, formatString, new Date(), {
64
+ if (parseDate) {
65
+ return parseDate(dateString, formatString, referenceDate, options);
66
+ }
67
+ return (0, _date.parse)(dateString, formatString, referenceDate || new Date(), (0, _extends2.default)({
55
68
  locale: locale === null || locale === void 0 ? void 0 : (_locale$Calendar3 = locale.Calendar) === null || _locale$Calendar3 === void 0 ? void 0 : _locale$Calendar3.dateLocale
56
- });
57
- }, [(_locale$Calendar4 = locale.Calendar) === null || _locale$Calendar4 === void 0 ? void 0 : _locale$Calendar4.dateLocale]);
69
+ }, options));
70
+ }, [parseDate, locale === null || locale === void 0 ? void 0 : (_locale$Calendar4 = locale.Calendar) === null || _locale$Calendar4 === void 0 ? void 0 : _locale$Calendar4.dateLocale]);
58
71
  return {
59
72
  locale: componentLocale,
60
73
  rtl: rtl,
61
74
  toasters: toasters,
62
75
  disableRipple: disableRipple,
63
- formatDate: formatDate || defaultFormatDate,
64
- parseDate: parseDate || defaultParseDate
76
+ formatDate: _formatDate,
77
+ parseDate: _parseDate
65
78
  };
66
79
  }
67
80
  var _default = exports.default = useCustom;
@@ -41,9 +41,12 @@ var matchMedia = function matchMedia(query) {
41
41
  */
42
42
  function useMediaQueryOld(query) {
43
43
  var queries = Array.isArray(query) ? query : [query];
44
- var mediaQueries = queries.map(function (query) {
45
- return mediaQuerySizeMap[query] || query;
46
- });
44
+ var mediaQueries = (0, _react.useMemo)(function () {
45
+ return queries.map(function (query) {
46
+ return mediaQuerySizeMap[query] || query;
47
+ });
48
+ }, // eslint-disable-next-line react-hooks/exhaustive-deps
49
+ [].concat(queries));
47
50
  var _useState = (0, _react.useState)(function () {
48
51
  return mediaQueries.map(function (query) {
49
52
  return (0, _pick.default)(matchMedia(query), ['matches', 'media']);
@@ -87,9 +90,12 @@ function useMediaQueryOld(query) {
87
90
  function useMediaQuery(query) {
88
91
  var _React$useSyncExterna;
89
92
  var queries = Array.isArray(query) ? query : [query];
90
- var mediaQueries = queries.map(function (query) {
91
- return mediaQuerySizeMap[query] || query;
92
- });
93
+ var mediaQueries = (0, _react.useMemo)(function () {
94
+ return queries.map(function (query) {
95
+ return mediaQuerySizeMap[query] || query;
96
+ });
97
+ }, // eslint-disable-next-line react-hooks/exhaustive-deps
98
+ [].concat(queries));
93
99
  var mediaQueryArray = (0, _react.useRef)(mediaQueries.map(function (query) {
94
100
  return matchMedia(query).matches;
95
101
  }));