rsuite 5.68.1 → 5.70.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 (109) hide show
  1. package/CHANGELOG.md +30 -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/README.md +2 -2
  7. package/Table/styles/index.css +1 -1
  8. package/Table/styles/index.less +1 -1
  9. package/cjs/Calendar/Calendar.d.ts +7 -2
  10. package/cjs/Calendar/Calendar.js +1 -1
  11. package/cjs/Calendar/CalendarContainer.d.ts +5 -0
  12. package/cjs/Calendar/CalendarContainer.js +15 -44
  13. package/cjs/Calendar/CalendarContext.d.ts +126 -2
  14. package/cjs/Calendar/CalendarContext.js +11 -3
  15. package/cjs/Calendar/CalendarHeader.js +3 -20
  16. package/cjs/Calendar/MonthDropdown.js +39 -29
  17. package/cjs/Calendar/TimeDropdown.js +0 -14
  18. package/cjs/Calendar/index.d.ts +1 -2
  19. package/cjs/CascadeTree/CascadeTree.js +3 -1
  20. package/cjs/CascadeTree/SearchView.d.ts +1 -0
  21. package/cjs/CascadeTree/SearchView.js +3 -2
  22. package/cjs/CascadeTree/types.d.ts +5 -1
  23. package/cjs/Cascader/Cascader.d.ts +1 -1
  24. package/cjs/Cascader/Cascader.js +1 -0
  25. package/cjs/CustomProvider/CustomProvider.d.ts +13 -16
  26. package/cjs/DateInput/hooks/useDateInputState.d.ts +0 -2
  27. package/cjs/DateInput/hooks/useDateInputState.js +4 -1
  28. package/cjs/DatePicker/DatePicker.d.ts +6 -1
  29. package/cjs/DatePicker/DatePicker.js +10 -8
  30. package/cjs/DateRangePicker/Calendar.d.ts +3 -3
  31. package/cjs/DateRangePicker/Calendar.js +1 -1
  32. package/cjs/DateRangePicker/DateRangePicker.d.ts +15 -3
  33. package/cjs/DateRangePicker/DateRangePicker.js +30 -25
  34. package/cjs/InputNumber/InputNumber.d.ts +9 -0
  35. package/cjs/InputNumber/InputNumber.js +28 -8
  36. package/cjs/MultiCascadeTree/MultiCascadeTree.d.ts +1 -1
  37. package/cjs/MultiCascadeTree/MultiCascadeTree.js +4 -1
  38. package/cjs/MultiCascadeTree/SearchView.d.ts +1 -0
  39. package/cjs/MultiCascadeTree/SearchView.js +3 -2
  40. package/cjs/MultiCascadeTree/types.d.ts +5 -1
  41. package/cjs/MultiCascader/MultiCascader.d.ts +1 -1
  42. package/cjs/MultiCascader/MultiCascader.js +3 -0
  43. package/cjs/TreePicker/TreePicker.js +1 -0
  44. package/cjs/internals/Windowing/List.d.ts +13 -3
  45. package/cjs/internals/Windowing/index.d.ts +1 -1
  46. package/cjs/internals/hooks/useCustom.js +25 -12
  47. package/cjs/internals/hooks/useEventCallback.js +8 -1
  48. package/cjs/useMediaQuery/useMediaQuery.js +12 -6
  49. package/dist/rsuite-no-reset-rtl.css +2 -2
  50. package/dist/rsuite-no-reset-rtl.min.css +1 -1
  51. package/dist/rsuite-no-reset-rtl.min.css.map +1 -1
  52. package/dist/rsuite-no-reset.css +2 -2
  53. package/dist/rsuite-no-reset.min.css +1 -1
  54. package/dist/rsuite-no-reset.min.css.map +1 -1
  55. package/dist/rsuite-rtl.css +2 -2
  56. package/dist/rsuite-rtl.min.css +1 -1
  57. package/dist/rsuite-rtl.min.css.map +1 -1
  58. package/dist/rsuite.css +2 -2
  59. package/dist/rsuite.js +84 -73
  60. package/dist/rsuite.js.map +1 -1
  61. package/dist/rsuite.min.css +1 -1
  62. package/dist/rsuite.min.css.map +1 -1
  63. package/dist/rsuite.min.js +1 -1
  64. package/dist/rsuite.min.js.map +1 -1
  65. package/esm/Calendar/Calendar.d.ts +7 -2
  66. package/esm/Calendar/Calendar.js +1 -1
  67. package/esm/Calendar/CalendarContainer.d.ts +5 -0
  68. package/esm/Calendar/CalendarContainer.js +15 -44
  69. package/esm/Calendar/CalendarContext.d.ts +126 -2
  70. package/esm/Calendar/CalendarContext.js +12 -3
  71. package/esm/Calendar/CalendarHeader.js +3 -20
  72. package/esm/Calendar/MonthDropdown.js +39 -29
  73. package/esm/Calendar/TimeDropdown.js +0 -14
  74. package/esm/Calendar/index.d.ts +1 -2
  75. package/esm/CascadeTree/CascadeTree.js +3 -1
  76. package/esm/CascadeTree/SearchView.d.ts +1 -0
  77. package/esm/CascadeTree/SearchView.js +3 -2
  78. package/esm/CascadeTree/types.d.ts +5 -1
  79. package/esm/Cascader/Cascader.d.ts +1 -1
  80. package/esm/Cascader/Cascader.js +1 -0
  81. package/esm/CustomProvider/CustomProvider.d.ts +13 -16
  82. package/esm/DateInput/hooks/useDateInputState.d.ts +0 -2
  83. package/esm/DateInput/hooks/useDateInputState.js +5 -2
  84. package/esm/DatePicker/DatePicker.d.ts +6 -1
  85. package/esm/DatePicker/DatePicker.js +10 -8
  86. package/esm/DateRangePicker/Calendar.d.ts +3 -3
  87. package/esm/DateRangePicker/Calendar.js +1 -1
  88. package/esm/DateRangePicker/DateRangePicker.d.ts +15 -3
  89. package/esm/DateRangePicker/DateRangePicker.js +19 -14
  90. package/esm/InputNumber/InputNumber.d.ts +9 -0
  91. package/esm/InputNumber/InputNumber.js +29 -9
  92. package/esm/MultiCascadeTree/MultiCascadeTree.d.ts +1 -1
  93. package/esm/MultiCascadeTree/MultiCascadeTree.js +4 -1
  94. package/esm/MultiCascadeTree/SearchView.d.ts +1 -0
  95. package/esm/MultiCascadeTree/SearchView.js +3 -2
  96. package/esm/MultiCascadeTree/types.d.ts +5 -1
  97. package/esm/MultiCascader/MultiCascader.d.ts +1 -1
  98. package/esm/MultiCascader/MultiCascader.js +3 -0
  99. package/esm/TreePicker/TreePicker.js +1 -0
  100. package/esm/internals/Windowing/List.d.ts +13 -3
  101. package/esm/internals/Windowing/index.d.ts +1 -1
  102. package/esm/internals/hooks/useCustom.js +25 -12
  103. package/esm/internals/hooks/useEventCallback.js +8 -2
  104. package/esm/useMediaQuery/useMediaQuery.js +13 -7
  105. package/package.json +2 -2
  106. package/cjs/Calendar/types.d.ts +0 -28
  107. package/cjs/Calendar/types.js +0 -4
  108. package/esm/Calendar/types.d.ts +0 -28
  109. package/esm/Calendar/types.js +0 -2
@@ -1,7 +1,8 @@
1
1
  import React from 'react';
2
2
  import CalendarContainer from './CalendarContainer';
3
- import { CalendarLocale } from '../locales';
4
- import { RsRefForwardingComponent, WithAsProps } from '../internals/types';
3
+ import type { CalendarLocale } from '../locales';
4
+ import type { RsRefForwardingComponent, WithAsProps } from '../internals/types';
5
+ import type { MonthDropdownProps } from './CalendarContext';
5
6
  export interface CalendarProps extends WithAsProps {
6
7
  /**
7
8
  * Controlled value
@@ -38,6 +39,10 @@ export interface CalendarProps extends WithAsProps {
38
39
  * @default 0
39
40
  */
40
41
  weekStart?: 0 | 1 | 2 | 3 | 4 | 5 | 6;
42
+ /**
43
+ * The props for the Month Dropdown component.
44
+ */
45
+ monthDropdownProps?: MonthDropdownProps;
41
46
  /**
42
47
  * Callback fired before the value changed
43
48
  */
@@ -6,10 +6,10 @@ import React, { useCallback } from 'react';
6
6
  import PropTypes from 'prop-types';
7
7
  import isSameMonth from 'date-fns/isSameMonth';
8
8
  import CalendarContainer from "./CalendarContainer.js";
9
+ import useCalendarDate from "./useCalendarDate.js";
9
10
  import Button from "../Button/index.js";
10
11
  import { FormattedDate } from "../CustomProvider/index.js";
11
12
  import { useClassNames, useCustom } from "../internals/hooks/index.js";
12
- import useCalendarDate from "./useCalendarDate.js";
13
13
  /**
14
14
  * The Calendar component is used to select dates.
15
15
  * @see https://rsuitejs.com/components/calendar
@@ -2,6 +2,7 @@ import React, { HTMLAttributes } from 'react';
2
2
  import { CalendarHeaderProps } from './CalendarHeader';
3
3
  import { RsRefForwardingComponent, WithAsProps } from '../internals/types';
4
4
  import { CalendarLocale } from '../locales';
5
+ import { MonthDropdownProps } from './CalendarContext';
5
6
  import { CalendarState } from './useCalendarState';
6
7
  export interface CalendarProps extends WithAsProps, Omit<HTMLAttributes<HTMLDivElement>, 'onSelect' | 'onChange' | 'onMouseMove'>, CalendarHeaderProps {
7
8
  /**
@@ -91,6 +92,10 @@ export interface CalendarProps extends WithAsProps, Omit<HTMLAttributes<HTMLDivE
91
92
  * @see https://rsuitejs.com/guide/i18n/#calendar
92
93
  */
93
94
  locale: CalendarLocale;
95
+ /**
96
+ * The props for the Month Dropdown component.
97
+ */
98
+ monthDropdownProps?: MonthDropdownProps;
94
99
  /**
95
100
  * Callback after the date has changed
96
101
  */
@@ -1,9 +1,8 @@
1
1
  'use client';
2
2
  import _extends from "@babel/runtime/helpers/esm/extends";
3
3
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
4
- var _excluded = ["as", "className", "classPrefix", "dateRange", "disabledBackward", "defaultState", "disabledDate", "disabledForward", "format", "hoverRangeValue", "isoWeek", "weekStart", "targetId", "limitEndYear", "limitStartYear", "locale", "onChangeMonth", "onChangeTime", "onMouseMove", "onMoveBackward", "onMoveForward", "onSelect", "onToggleMeridian", "onToggleMonthDropdown", "onToggleTimeDropdown", "calendarDate", "cellClassName", "renderCell", "renderCellOnPicker", "renderTitle", "renderToolbar", "showMeridian", "showWeekNumbers", "inline"];
4
+ var _excluded = ["as", "className", "classPrefix", "calendarDate", "dateRange", "disabledBackward", "defaultState", "disabledForward", "format", "hoverRangeValue", "inline", "isoWeek", "weekStart", "targetId", "limitEndYear", "limitStartYear", "locale", "monthDropdownProps", "showMeridian", "showWeekNumbers", "cellClassName", "disabledDate", "onChangeMonth", "onChangeTime", "onMouseMove", "onMoveBackward", "onMoveForward", "onSelect", "onToggleMeridian", "onToggleMonthDropdown", "onToggleTimeDropdown", "renderCell", "renderCellOnPicker", "renderTitle", "renderToolbar"];
5
5
  import React, { useMemo } from 'react';
6
- import PropTypes from 'prop-types';
7
6
  import pick from 'lodash/pick';
8
7
  import MonthDropdown from "./MonthDropdown.js";
9
8
  import TimeDropdown from "./TimeDropdown.js";
@@ -20,13 +19,14 @@ var CalendarContainer = /*#__PURE__*/React.forwardRef(function (props, ref) {
20
19
  className = props.className,
21
20
  _props$classPrefix = props.classPrefix,
22
21
  classPrefix = _props$classPrefix === void 0 ? 'calendar' : _props$classPrefix,
22
+ calendarDateProp = props.calendarDate,
23
23
  dateRange = props.dateRange,
24
24
  disabledBackward = props.disabledBackward,
25
25
  defaultState = props.defaultState,
26
- disabledDate = props.disabledDate,
27
26
  disabledForward = props.disabledForward,
28
27
  format = props.format,
29
28
  hoverRangeValue = props.hoverRangeValue,
29
+ inline = props.inline,
30
30
  _props$isoWeek = props.isoWeek,
31
31
  isoWeek = _props$isoWeek === void 0 ? false : _props$isoWeek,
32
32
  _props$weekStart = props.weekStart,
@@ -35,6 +35,11 @@ var CalendarContainer = /*#__PURE__*/React.forwardRef(function (props, ref) {
35
35
  limitEndYear = props.limitEndYear,
36
36
  limitStartYear = props.limitStartYear,
37
37
  locale = props.locale,
38
+ monthDropdownProps = props.monthDropdownProps,
39
+ showMeridian = props.showMeridian,
40
+ showWeekNumbers = props.showWeekNumbers,
41
+ cellClassName = props.cellClassName,
42
+ disabledDate = props.disabledDate,
38
43
  onChangeMonth = props.onChangeMonth,
39
44
  onChangeTime = props.onChangeTime,
40
45
  onMouseMove = props.onMouseMove,
@@ -44,15 +49,10 @@ var CalendarContainer = /*#__PURE__*/React.forwardRef(function (props, ref) {
44
49
  onToggleMeridian = props.onToggleMeridian,
45
50
  onToggleMonthDropdown = props.onToggleMonthDropdown,
46
51
  onToggleTimeDropdown = props.onToggleTimeDropdown,
47
- calendarDateProp = props.calendarDate,
48
- cellClassName = props.cellClassName,
49
52
  renderCell = props.renderCell,
50
53
  renderCellOnPicker = props.renderCellOnPicker,
51
54
  renderTitle = props.renderTitle,
52
55
  renderToolbar = props.renderToolbar,
53
- showMeridian = props.showMeridian,
54
- showWeekNumbers = props.showWeekNumbers,
55
- inline = props.inline,
56
56
  rest = _objectWithoutPropertiesLoose(props, _excluded);
57
57
  var _useClassNames = useClassNames(classPrefix),
58
58
  withClassPrefix = _useClassNames.withClassPrefix,
@@ -125,23 +125,24 @@ var CalendarContainer = /*#__PURE__*/React.forwardRef(function (props, ref) {
125
125
  var contextValue = {
126
126
  date: calendarDate,
127
127
  dateRange: dateRange,
128
- disabledDate: isDateDisabled,
129
128
  format: format,
130
129
  hoverRangeValue: hoverRangeValue,
131
- inSameMonth: inSameThisMonthDate,
130
+ inline: inline,
132
131
  isoWeek: isoWeek,
133
132
  weekStart: weekStart,
134
133
  targetId: targetId,
135
134
  locale: locale,
135
+ showWeekNumbers: showWeekNumbers,
136
+ monthDropdownProps: monthDropdownProps,
137
+ cellClassName: cellClassName,
138
+ disabledDate: isDateDisabled,
139
+ inSameMonth: inSameThisMonthDate,
136
140
  onChangeMonth: handleChangeMonth,
137
141
  onChangeTime: onChangeTime,
138
142
  onMouseMove: onMouseMove,
139
143
  onSelect: onSelect,
140
- cellClassName: cellClassName,
141
144
  renderCell: renderCell,
142
- renderCellOnPicker: renderCellOnPicker,
143
- showWeekNumbers: showWeekNumbers,
144
- inline: inline
145
+ renderCellOnPicker: renderCellOnPicker
145
146
  };
146
147
  return /*#__PURE__*/React.createElement(CalendarProvider, {
147
148
  value: contextValue
@@ -180,34 +181,4 @@ var CalendarContainer = /*#__PURE__*/React.forwardRef(function (props, ref) {
180
181
  }, /*#__PURE__*/React.createElement(AngleUpIcon, null))));
181
182
  });
182
183
  CalendarContainer.displayName = 'CalendarContainer';
183
- CalendarContainer.propTypes = {
184
- className: PropTypes.string,
185
- classPrefix: PropTypes.string,
186
- disabledDate: PropTypes.func,
187
- disabledHours: PropTypes.func,
188
- disabledMinutes: PropTypes.func,
189
- disabledSeconds: PropTypes.func,
190
- format: PropTypes.string,
191
- hideHours: PropTypes.func,
192
- hideMinutes: PropTypes.func,
193
- hideSeconds: PropTypes.func,
194
- isoWeek: PropTypes.bool,
195
- limitEndYear: PropTypes.number,
196
- limitStartYear: PropTypes.number,
197
- locale: PropTypes.object,
198
- onChangeMonth: PropTypes.func,
199
- onChangeTime: PropTypes.func,
200
- onMoveBackward: PropTypes.func,
201
- onMoveForward: PropTypes.func,
202
- onSelect: PropTypes.func,
203
- onToggleMeridian: PropTypes.func,
204
- onToggleMonthDropdown: PropTypes.func,
205
- onToggleTimeDropdown: PropTypes.func,
206
- calendarDate: PropTypes.instanceOf(Date),
207
- renderCell: PropTypes.func,
208
- renderTitle: PropTypes.func,
209
- renderToolbar: PropTypes.func,
210
- showMeridian: PropTypes.bool,
211
- showWeekNumbers: PropTypes.bool
212
- };
213
184
  export default CalendarContainer;
@@ -1,6 +1,130 @@
1
1
  import React from 'react';
2
- import { CalendarContextValue } from './types';
2
+ import { CalendarLocale } from '../locales';
3
+ import { format } from '../internals/utils/date';
4
+ import type { FixedSizeListProps } from '../internals/Windowing';
5
+ /**
6
+ * Represents the inner context value for the Calendar component.
7
+ */
8
+ export interface CalendarInnerContextValue {
9
+ /**
10
+ * The current date of the calendar.
11
+ */
12
+ date: Date;
13
+ /**
14
+ * The date range selected in the calendar.
15
+ */
16
+ dateRange?: Date[];
17
+ /**
18
+ * The format used for displaying dates.
19
+ */
20
+ format?: string;
21
+ /**
22
+ * The hover range value in the calendar.
23
+ */
24
+ hoverRangeValue?: [Date, Date];
25
+ /**
26
+ * Indicates whether the calendar is inline or not.
27
+ */
28
+ inline?: boolean;
29
+ /**
30
+ * Indicates whether the ISO week numbers should be shown in the calendar.
31
+ */
32
+ isoWeek: boolean;
33
+ /**
34
+ * The start day of the week in the calendar.
35
+ * 0 - Sunday, 1 - Monday, 2 - Tuesday, 3 - Wednesday, 4 - Thursday, 5 - Friday, 6 - Saturday
36
+ */
37
+ weekStart: 0 | 1 | 2 | 3 | 4 | 5 | 6;
38
+ /**
39
+ * Indicates whether week numbers should be shown in the calendar.
40
+ */
41
+ showWeekNumbers?: boolean;
42
+ /**
43
+ * The target ID of the calendar.
44
+ */
45
+ targetId?: string;
46
+ /**
47
+ * The props for the Month Dropdown component.
48
+ */
49
+ monthDropdownProps?: MonthDropdownProps;
50
+ /**
51
+ * A function that determines if a date is disabled in the calendar.
52
+ * @param date - The date to check.
53
+ * @param selectRangeValue - The selected date range.
54
+ * @param type - The type of the calendar.
55
+ * @returns True if the date is disabled, false otherwise.
56
+ */
57
+ disabledDate?: (date: Date, selectRangeValue?: Date[], type?: string) => boolean;
58
+ /**
59
+ * A function that determines if a date is in the same month as the current date in the calendar.
60
+ * @param date - The date to check.
61
+ * @returns True if the date is in the same month, false otherwise.
62
+ */
63
+ inSameMonth?: (date: Date) => boolean;
64
+ /**
65
+ * A callback function that is called when the month is changed in the calendar.
66
+ * @param nextPageDate - The next page date.
67
+ * @param event - The mouse event.
68
+ */
69
+ onChangeMonth?: (nextPageDate: Date, event: React.MouseEvent) => void;
70
+ /**
71
+ * A callback function that is called when the time is changed in the calendar.
72
+ * @param nextPageTime - The next page time.
73
+ * @param event - The mouse event.
74
+ */
75
+ onChangeTime?: (nextPageTime: Date, event: React.MouseEvent) => void;
76
+ /**
77
+ * A callback function that is called when the mouse moves over a date in the calendar.
78
+ * @param date - The date.
79
+ */
80
+ onMouseMove?: (date: Date) => void;
81
+ /**
82
+ * A callback function that is called when a date is selected in the calendar.
83
+ * @param date - The selected date.
84
+ * @param event - The mouse event.
85
+ */
86
+ onSelect?: (date: Date, event: React.MouseEvent) => void;
87
+ /**
88
+ * A function that renders the cell content in the calendar.
89
+ * @param date - The date.
90
+ * @returns The rendered cell content.
91
+ */
92
+ renderCell?: (date: Date) => React.ReactNode;
93
+ /**
94
+ * A function that renders the cell content in the picker.
95
+ * @param date - The date.
96
+ * @returns The rendered cell content.
97
+ */
98
+ renderCellOnPicker?: (date: Date) => React.ReactNode;
99
+ /**
100
+ * A function that returns the class name for a cell in the calendar.
101
+ * @param date - The date.
102
+ * @returns The class name for the cell.
103
+ */
104
+ cellClassName?: (date: Date) => string | undefined;
105
+ }
106
+ /**
107
+ * Props for the MonthDropdown component.
108
+ */
109
+ export interface MonthDropdownProps extends Partial<FixedSizeListProps> {
110
+ /**
111
+ * The HTML element or React component to render as the root element of the MonthDropdown.
112
+ */
113
+ as?: React.ElementType;
114
+ /**
115
+ * The HTML element or React component to render as each item in the MonthDropdown.
116
+ */
117
+ itemAs?: React.ElementType;
118
+ /**
119
+ * The CSS class name to apply to each item in the MonthDropdown.
120
+ */
121
+ itemClassName?: string;
122
+ }
123
+ export interface CalendarContextValue extends CalendarInnerContextValue {
124
+ locale: CalendarLocale;
125
+ formatDate?: typeof format;
126
+ }
3
127
  declare const CalendarContext: React.Context<CalendarContextValue>;
4
- export default CalendarContext;
5
128
  export declare const CalendarProvider: React.Provider<CalendarContextValue>;
6
129
  export declare const useCalendarContext: () => CalendarContextValue;
130
+ export default CalendarContext;
@@ -1,8 +1,17 @@
1
1
  'use client';
2
2
  import React, { useContext } from 'react';
3
+
4
+ /**
5
+ * Represents the inner context value for the Calendar component.
6
+ */
7
+
8
+ /**
9
+ * Props for the MonthDropdown component.
10
+ */
11
+
3
12
  var CalendarContext = /*#__PURE__*/React.createContext({});
4
- export default CalendarContext;
5
13
  export var CalendarProvider = CalendarContext.Provider;
6
14
  export var useCalendarContext = function useCalendarContext() {
7
- return useContext(CalendarContext) || {};
8
- };
15
+ return useContext(CalendarContext);
16
+ };
17
+ export default CalendarContext;
@@ -3,7 +3,6 @@ import _extends from "@babel/runtime/helpers/esm/extends";
3
3
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
4
4
  var _excluded = ["as", "className", "classPrefix", "disabledBackward", "disabledForward", "showDate", "showMeridian", "showMonth", "showTime", "disabledTime", "onMoveBackward", "onMoveForward", "onToggleMeridian", "onToggleMonthDropdown", "onToggleTimeDropdown", "renderTitle", "renderToolbar"];
5
5
  import React, { useCallback } from 'react';
6
- import PropTypes from 'prop-types';
7
6
  import AngleLeftIcon from '@rsuite/icons/legacy/AngleLeft';
8
7
  import AngleRightIcon from '@rsuite/icons/legacy/AngleRight';
9
8
  import IconButton from "../IconButton/index.js";
@@ -39,7 +38,8 @@ var CalendarHeader = /*#__PURE__*/React.forwardRef(function (props, ref) {
39
38
  date = _useCalendarContext$d === void 0 ? new Date() : _useCalendarContext$d,
40
39
  format = _useCalendarContext.format,
41
40
  inline = _useCalendarContext.inline,
42
- disabledDate = _useCalendarContext.disabledDate;
41
+ disabledDate = _useCalendarContext.disabledDate,
42
+ targetId = _useCalendarContext.targetId;
43
43
  var _useDateRangePickerCo = useDateRangePickerContext(),
44
44
  isSelectedIdle = _useDateRangePickerCo.isSelectedIdle;
45
45
  var _useClassNames = useClassNames(classPrefix),
@@ -101,6 +101,7 @@ var CalendarHeader = /*#__PURE__*/React.forwardRef(function (props, ref) {
101
101
  icon: /*#__PURE__*/React.createElement(AngleLeftIcon, null)
102
102
  })), /*#__PURE__*/React.createElement(Button, _extends({}, btnProps, {
103
103
  "aria-label": "Select month",
104
+ id: targetId ? targetId + "-grid-label" : undefined,
104
105
  className: dateTitleClasses,
105
106
  onClick: onToggleMonthDropdown
106
107
  }), renderTitle()), /*#__PURE__*/React.createElement(IconButton, _extends({}, btnProps, {
@@ -141,22 +142,4 @@ var CalendarHeader = /*#__PURE__*/React.forwardRef(function (props, ref) {
141
142
  }))), renderToolbar === null || renderToolbar === void 0 ? void 0 : renderToolbar(date));
142
143
  });
143
144
  CalendarHeader.displayName = 'CalendarHeader';
144
- CalendarHeader.propTypes = {
145
- className: PropTypes.string,
146
- classPrefix: PropTypes.string,
147
- disabledBackward: PropTypes.bool,
148
- disabledForward: PropTypes.bool,
149
- disabledTime: PropTypes.func,
150
- onMoveBackward: PropTypes.func,
151
- onMoveForward: PropTypes.func,
152
- onToggleMeridian: PropTypes.func,
153
- onToggleMonthDropdown: PropTypes.func,
154
- onToggleTimeDropdown: PropTypes.func,
155
- renderTitle: PropTypes.func,
156
- renderToolbar: PropTypes.func,
157
- showDate: PropTypes.bool,
158
- showMeridian: PropTypes.bool,
159
- showMonth: PropTypes.bool,
160
- showTime: PropTypes.bool
161
- };
162
145
  export default CalendarHeader;
@@ -1,7 +1,8 @@
1
1
  'use client';
2
2
  import _extends from "@babel/runtime/helpers/esm/extends";
3
3
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
4
- var _excluded = ["as", "className", "classPrefix", "limitStartYear", "limitEndYear", "show", "height", "width", "disabledMonth"];
4
+ var _excluded = ["as", "className", "classPrefix", "limitStartYear", "limitEndYear", "show", "height", "width", "disabledMonth"],
5
+ _excluded2 = ["className", "itemClassName", "as", "itemAs"];
5
6
  import React, { useCallback, useMemo } from 'react';
6
7
  import { getDaysInMonth, getMonth, getYear } from "../internals/utils/date/index.js";
7
8
  import { AutoSizer, FixedSizeList } from "../internals/Windowing/index.js";
@@ -37,7 +38,8 @@ var MonthDropdown = /*#__PURE__*/React.forwardRef(function (props, ref) {
37
38
  var _useCalendarContext = useCalendarContext(),
38
39
  _useCalendarContext$d = _useCalendarContext.date,
39
40
  date = _useCalendarContext$d === void 0 ? new Date() : _useCalendarContext$d,
40
- targetId = _useCalendarContext.targetId;
41
+ targetId = _useCalendarContext.targetId,
42
+ monthDropdownProps = _useCalendarContext.monthDropdownProps;
41
43
  var _useClassNames = useClassNames(classPrefix),
42
44
  prefix = _useClassNames.prefix,
43
45
  merge = _useClassNames.merge,
@@ -54,9 +56,16 @@ var MonthDropdown = /*#__PURE__*/React.forwardRef(function (props, ref) {
54
56
  }
55
57
  return false;
56
58
  }, [disabledMonth]);
57
- var rowRenderer = useCallback(function (_ref) {
58
- var index = _ref.index,
59
- style = _ref.style;
59
+ var _ref = monthDropdownProps || {},
60
+ listClassName = _ref.className,
61
+ itemClassName = _ref.itemClassName,
62
+ List = _ref.as,
63
+ _ref$itemAs = _ref.itemAs,
64
+ Item = _ref$itemAs === void 0 ? 'div' : _ref$itemAs,
65
+ restListProps = _objectWithoutPropertiesLoose(_ref, _excluded2);
66
+ var rowRenderer = useCallback(function (_ref2) {
67
+ var index = _ref2.index,
68
+ style = _ref2.style;
60
69
  var selectedMonth = getMonth(date);
61
70
  var selectedYear = getYear(date);
62
71
  var year = startYear + index;
@@ -64,14 +73,13 @@ var MonthDropdown = /*#__PURE__*/React.forwardRef(function (props, ref) {
64
73
  var titleClassName = prefix('year', {
65
74
  'year-active': isSelectedYear
66
75
  });
67
- var rowClassName = merge(prefix('row'), {
68
- 'first-row': index === 0,
69
- 'last-row': index === rowCount - 1
70
- });
71
- return /*#__PURE__*/React.createElement("div", {
72
- className: rowClassName,
76
+ return /*#__PURE__*/React.createElement(Item, {
73
77
  role: "row",
74
78
  "aria-label": "" + year,
79
+ className: merge(itemClassName, prefix('row'), {
80
+ 'first-row': index === 0,
81
+ 'last-row': index === rowCount - 1
82
+ }),
75
83
  style: style
76
84
  }, /*#__PURE__*/React.createElement("div", {
77
85
  className: titleClassName,
@@ -87,40 +95,42 @@ var MonthDropdown = /*#__PURE__*/React.forwardRef(function (props, ref) {
87
95
  year: year
88
96
  });
89
97
  })));
90
- }, [date, isMonthDisabled, merge, prefix, rowCount, startYear]);
98
+ }, [Item, date, isMonthDisabled, merge, prefix, itemClassName, rowCount, startYear]);
91
99
  var classes = merge(className, withClassPrefix(), {
92
100
  show: show
93
101
  });
94
102
  var itemSize = 75;
95
103
  var initialItemIndex = getYear(date) - startYear;
96
104
  var initialScrollOffset = itemSize * initialItemIndex;
105
+ if (!show) {
106
+ return null;
107
+ }
97
108
  return /*#__PURE__*/React.createElement(Component, _extends({
109
+ ref: ref,
98
110
  role: "grid",
99
- "aria-label": "Select month",
100
111
  tabIndex: -1,
101
- id: targetId ? targetId + "-" + classPrefix : undefined
102
- }, rest, {
103
- ref: ref,
104
- className: classes
105
- }), /*#__PURE__*/React.createElement("div", {
106
- className: prefix('content')
107
- }, /*#__PURE__*/React.createElement("div", {
112
+ className: classes,
113
+ "aria-labelledby": targetId ? targetId + "-grid-label" : undefined,
114
+ id: targetId ? targetId + "-calendar-month-dropdown" : undefined,
115
+ "data-testid": "calendar-month-dropdown"
116
+ }, rest), /*#__PURE__*/React.createElement("div", {
108
117
  className: prefix('scroll')
109
- }, show && /*#__PURE__*/React.createElement(AutoSizer, {
118
+ }, /*#__PURE__*/React.createElement(AutoSizer, {
110
119
  defaultHeight: defaultHeight,
111
120
  defaultWidth: defaultWidth
112
- }, function (_ref2) {
113
- var height = _ref2.height,
114
- width = _ref2.width;
115
- return /*#__PURE__*/React.createElement(FixedSizeList, {
116
- className: prefix('row-wrapper'),
121
+ }, function (_ref3) {
122
+ var height = _ref3.height,
123
+ width = _ref3.width;
124
+ return /*#__PURE__*/React.createElement(FixedSizeList, _extends({
125
+ className: merge(prefix('row-wrapper'), listClassName),
117
126
  width: width || defaultWidth,
118
127
  height: height || defaultHeight,
119
128
  itemSize: itemSize,
120
129
  itemCount: rowCount,
121
- initialScrollOffset: initialScrollOffset
122
- }, rowRenderer);
123
- }))));
130
+ initialScrollOffset: initialScrollOffset,
131
+ innerElementType: List
132
+ }, restListProps), rowRenderer);
133
+ })));
124
134
  });
125
135
  MonthDropdown.displayName = 'MonthDropdown';
126
136
  export default MonthDropdown;
@@ -3,7 +3,6 @@ import _extends from "@babel/runtime/helpers/esm/extends";
3
3
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
4
4
  var _excluded = ["as", "className", "classPrefix", "show", "showMeridian"];
5
5
  import React, { useEffect, useRef } from 'react';
6
- import PropTypes from 'prop-types';
7
6
  import getPosition from 'dom-lib/getPosition';
8
7
  import scrollTop from 'dom-lib/scrollTop';
9
8
  import partial from 'lodash/partial';
@@ -190,17 +189,4 @@ var TimeDropdown = /*#__PURE__*/React.forwardRef(function (props, ref) {
190
189
  }, renderColumn('hours', time.hours), renderColumn('minutes', time.minutes), renderColumn('seconds', time.seconds))));
191
190
  });
192
191
  TimeDropdown.displayName = 'TimeDropdown';
193
- TimeDropdown.propTypes = {
194
- show: PropTypes.bool,
195
- showMeridian: PropTypes.bool,
196
- className: PropTypes.string,
197
- classPrefix: PropTypes.string,
198
- disabledDate: PropTypes.func,
199
- disabledHours: PropTypes.func,
200
- disabledMinutes: PropTypes.func,
201
- disabledSeconds: PropTypes.func,
202
- hideHours: PropTypes.func,
203
- hideMinutes: PropTypes.func,
204
- hideSeconds: PropTypes.func
205
- };
206
192
  export default TimeDropdown;
@@ -1,8 +1,7 @@
1
1
  import Calendar from './Calendar';
2
2
  import CalendarContainer from './CalendarContainer';
3
3
  import { CalendarState } from './useCalendarState';
4
- import CalendarContext from './CalendarContext';
5
- import { CalendarContextValue } from './types';
4
+ import CalendarContext, { CalendarContextValue } from './CalendarContext';
6
5
  export { CalendarContainer, CalendarContext, CalendarState };
7
6
  export type { CalendarContextValue };
8
7
  export type { CalendarProps } from './Calendar';
@@ -1,7 +1,7 @@
1
1
  'use client';
2
2
  import _extends from "@babel/runtime/helpers/esm/extends";
3
3
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
4
- var _excluded = ["as", "data", "defaultValue", "className", "classPrefix", "childrenKey", "valueKey", "labelKey", "value", "disabledItemValues", "columnWidth", "columnHeight", "searchable", "renderTreeNode", "renderColumn", "onSelect", "onSearch", "onChange", "getChildren"];
4
+ var _excluded = ["as", "data", "defaultValue", "className", "classPrefix", "childrenKey", "valueKey", "labelKey", "locale", "value", "disabledItemValues", "columnWidth", "columnHeight", "searchable", "renderTreeNode", "renderColumn", "onSelect", "onSearch", "onChange", "getChildren"];
5
5
  import React, { useCallback, useMemo } from 'react';
6
6
  import { getParentMap } from "../internals/Tree/utils/index.js";
7
7
  import { flattenTree } from "../Tree/utils/index.js";
@@ -29,6 +29,7 @@ var CascadeTree = /*#__PURE__*/React.forwardRef(function (props, ref) {
29
29
  valueKey = _props$valueKey === void 0 ? 'value' : _props$valueKey,
30
30
  _props$labelKey = props.labelKey,
31
31
  labelKey = _props$labelKey === void 0 ? 'label' : _props$labelKey,
32
+ locale = props.locale,
32
33
  valueProp = props.value,
33
34
  _props$disabledItemVa = props.disabledItemValues,
34
35
  disabledItemValues = _props$disabledItemVa === void 0 ? [] : _props$disabledItemVa,
@@ -145,6 +146,7 @@ var CascadeTree = /*#__PURE__*/React.forwardRef(function (props, ref) {
145
146
  searchKeyword: searchKeyword,
146
147
  valueKey: valueKey,
147
148
  labelKey: labelKey,
149
+ locale: locale,
148
150
  parentMap: parentMap,
149
151
  disabledItemValues: disabledItemValues,
150
152
  onSelect: handleSearchRowSelect,
@@ -8,6 +8,7 @@ interface SearchViewProps<T> extends WithAsProps {
8
8
  data: ItemDataType<T>[];
9
9
  focusItemValue?: T | null;
10
10
  disabledItemValues: any[];
11
+ locale?: Record<string, string>;
11
12
  renderSearchItem?: (label: React.ReactNode, items: ItemDataType<T>[]) => React.ReactNode;
12
13
  onSelect: (item: ItemDataType<T>, items: ItemDataType<T>[], event: React.MouseEvent) => void;
13
14
  onSearch: (value: string, event: React.ChangeEvent<HTMLInputElement>) => void;
@@ -1,7 +1,7 @@
1
1
  'use client';
2
2
  import _extends from "@babel/runtime/helpers/esm/extends";
3
3
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
4
- var _excluded = ["as", "classPrefix", "className", "searchKeyword", "labelKey", "valueKey", "parentMap", "data", "focusItemValue", "disabledItemValues", "inputRef", "renderSearchItem", "onSearch", "onSelect"];
4
+ var _excluded = ["as", "classPrefix", "className", "searchKeyword", "labelKey", "locale", "valueKey", "parentMap", "data", "focusItemValue", "disabledItemValues", "inputRef", "renderSearchItem", "onSearch", "onSelect"];
5
5
  import React from 'react';
6
6
  import { useClassNames, useCustom } from "../internals/hooks/index.js";
7
7
  import { getPathTowardsItem } from "../internals/Tree/utils/index.js";
@@ -15,6 +15,7 @@ function SearchView(props) {
15
15
  className = props.className,
16
16
  searchKeyword = props.searchKeyword,
17
17
  labelKey = props.labelKey,
18
+ overrideLocale = props.locale,
18
19
  valueKey = props.valueKey,
19
20
  parentMap = props.parentMap,
20
21
  data = props.data,
@@ -31,7 +32,7 @@ function SearchView(props) {
31
32
  withClassPrefix = _useClassNames.withClassPrefix,
32
33
  rootPrefix = _useClassNames.rootPrefix;
33
34
  var classes = merge(className, withClassPrefix());
34
- var _useCustom = useCustom('Picker'),
35
+ var _useCustom = useCustom('Picker', overrideLocale),
35
36
  locale = _useCustom.locale;
36
37
  var renderSearchRow = function renderSearchRow(item, key) {
37
38
  var items = getPathTowardsItem(item, function (item) {
@@ -10,7 +10,7 @@ export interface CascadeColumn<T> {
10
10
  parentItem?: ItemDataType<T>;
11
11
  layer?: number;
12
12
  }
13
- export interface CascadeTreeProps<T, V = T> extends WithAsProps, DataProps<ItemDataType<T>> {
13
+ export interface CascadeTreeProps<T, V = T, L = any> extends WithAsProps, DataProps<ItemDataType<T>> {
14
14
  /**
15
15
  * Initial value
16
16
  */
@@ -35,6 +35,10 @@ export interface CascadeTreeProps<T, V = T> extends WithAsProps, DataProps<ItemD
35
35
  * Whether dispaly search input box
36
36
  */
37
37
  searchable?: boolean;
38
+ /**
39
+ * A collection of localized strings.
40
+ */
41
+ locale?: Partial<L>;
38
42
  /**
39
43
  * Custom render columns
40
44
  */
@@ -3,7 +3,7 @@ import type { CascadeTreeProps } from '../CascadeTree/types';
3
3
  import { PickerLocale } from '../locales';
4
4
  import { PickerHandle, PickerToggleProps } from '../internals/Picker';
5
5
  import { ItemDataType, DataItemValue, FormControlPickerProps } from '../internals/types';
6
- export interface CascaderProps<T = DataItemValue> extends FormControlPickerProps<T, PickerLocale, ItemDataType<T>>, CascadeTreeProps<T>, Pick<PickerToggleProps, 'label' | 'caretAs' | 'loading'> {
6
+ export interface CascaderProps<T = DataItemValue> extends FormControlPickerProps<T, PickerLocale, ItemDataType<T>>, CascadeTreeProps<T, T, PickerLocale>, Pick<PickerToggleProps, 'label' | 'caretAs' | 'loading'> {
7
7
  /**
8
8
  * The panel is displayed directly when the component is initialized
9
9
  * @deprecated Use CascadeTree instead
@@ -329,6 +329,7 @@ var Cascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
329
329
  searchKeyword: searchKeyword,
330
330
  valueKey: valueKey,
331
331
  labelKey: labelKey,
332
+ locale: locale,
332
333
  parentMap: parentMap,
333
334
  disabledItemValues: disabledItemValues,
334
335
  focusItemValue: focusItemValue,