rsuite 5.45.0 → 5.46.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +13 -0
- package/DatePicker/styles/index.less +15 -0
- package/cjs/Calendar/MonthDropdown.js +1 -2
- package/cjs/Calendar/MonthDropdownItem.js +26 -13
- package/cjs/Calendar/TableCell.d.ts +14 -0
- package/cjs/Calendar/TableCell.js +72 -0
- package/cjs/Calendar/TableHeaderRow.js +3 -1
- package/cjs/Calendar/TableRow.js +22 -46
- package/cjs/Calendar/useCalendarDate.d.ts +1 -1
- package/cjs/Calendar/utils.d.ts +7 -0
- package/cjs/Calendar/utils.js +15 -0
- package/cjs/Cascader/Cascader.js +13 -3
- package/cjs/DatePicker/DatePicker.js +145 -38
- package/cjs/InputPicker/InputPicker.js +7 -4
- package/cjs/Picker/PickerToggle.js +3 -0
- package/cjs/Picker/utils.js +21 -12
- package/cjs/Table/Table.d.ts +7 -7
- package/dist/rsuite-no-reset-rtl.css +108 -60
- package/dist/rsuite-no-reset-rtl.min.css +1 -1
- package/dist/rsuite-no-reset-rtl.min.css.map +1 -1
- package/dist/rsuite-no-reset.css +108 -60
- package/dist/rsuite-no-reset.min.css +1 -1
- package/dist/rsuite-no-reset.min.css.map +1 -1
- package/dist/rsuite-rtl.css +108 -60
- package/dist/rsuite-rtl.min.css +1 -1
- package/dist/rsuite-rtl.min.css.map +1 -1
- package/dist/rsuite.css +108 -60
- package/dist/rsuite.js +56 -13
- package/dist/rsuite.js.map +1 -1
- package/dist/rsuite.min.css +1 -1
- package/dist/rsuite.min.css.map +1 -1
- package/dist/rsuite.min.js +1 -1
- package/dist/rsuite.min.js.map +1 -1
- package/esm/Calendar/MonthDropdown.js +1 -2
- package/esm/Calendar/MonthDropdownItem.js +28 -15
- package/esm/Calendar/TableCell.d.ts +14 -0
- package/esm/Calendar/TableCell.js +66 -0
- package/esm/Calendar/TableHeaderRow.js +3 -1
- package/esm/Calendar/TableRow.js +23 -47
- package/esm/Calendar/useCalendarDate.d.ts +1 -1
- package/esm/Calendar/utils.d.ts +7 -0
- package/esm/Calendar/utils.js +12 -0
- package/esm/Cascader/Cascader.js +13 -3
- package/esm/DatePicker/DatePicker.js +147 -40
- package/esm/InputPicker/InputPicker.js +7 -4
- package/esm/Picker/PickerToggle.js +3 -0
- package/esm/Picker/utils.js +21 -12
- package/esm/Table/Table.d.ts +7 -7
- package/package.json +2 -2
- package/styles/color-modes/dark.less +0 -40
- package/styles/color-modes/high-contrast.less +0 -35
- package/styles/color-modes/light.less +0 -46
|
@@ -74,8 +74,7 @@ var MonthDropdown = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
74
74
|
className: titleClassName,
|
|
75
75
|
role: "rowheader"
|
|
76
76
|
}, year), /*#__PURE__*/React.createElement("div", {
|
|
77
|
-
className: prefix('list')
|
|
78
|
-
role: "gridcell"
|
|
77
|
+
className: prefix('list')
|
|
79
78
|
}, monthMap.map(function (item, month) {
|
|
80
79
|
return /*#__PURE__*/React.createElement(MonthDropdownItem, {
|
|
81
80
|
disabled: isMonthDisabled(year, month),
|
|
@@ -1,11 +1,12 @@
|
|
|
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
|
-
import React, { useCallback } from 'react';
|
|
4
|
+
import React, { useCallback, useMemo } from 'react';
|
|
5
5
|
import PropTypes from 'prop-types';
|
|
6
|
-
import { composeFunctions, useClassNames } from '../utils';
|
|
6
|
+
import { composeFunctions, useClassNames, useCustom } from '../utils';
|
|
7
7
|
import { setMonth, setYear } from '../utils/dateUtils';
|
|
8
8
|
import { useCalendarContext } from './CalendarContext';
|
|
9
|
+
import { getAriaLabel } from './utils';
|
|
9
10
|
var MonthDropdownItem = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
10
11
|
var _props$as = props.as,
|
|
11
12
|
Component = _props$as === void 0 ? 'div' : _props$as,
|
|
@@ -21,19 +22,26 @@ var MonthDropdownItem = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
21
22
|
var _useCalendarContext = useCalendarContext(),
|
|
22
23
|
date = _useCalendarContext.date,
|
|
23
24
|
onSelect = _useCalendarContext.onChangeMonth;
|
|
24
|
-
var
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
25
|
+
var _useCustom = useCustom('Calendar'),
|
|
26
|
+
locale = _useCustom.locale,
|
|
27
|
+
formatDate = _useCustom.formatDate;
|
|
28
|
+
var formatStr = locale.formattedMonthPattern;
|
|
29
|
+
var currentMonth = useMemo(function () {
|
|
30
|
+
if (year && month) {
|
|
31
|
+
return composeFunctions(function (d) {
|
|
30
32
|
return setYear(d, year);
|
|
31
33
|
}, function (d) {
|
|
32
34
|
return setMonth(d, month - 1);
|
|
33
35
|
})(date);
|
|
34
|
-
onSelect === null || onSelect === void 0 ? void 0 : onSelect(nextMonth, event);
|
|
35
36
|
}
|
|
36
|
-
|
|
37
|
+
return date;
|
|
38
|
+
}, [date, month, year]);
|
|
39
|
+
var handleClick = useCallback(function (event) {
|
|
40
|
+
if (disabled) {
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
onSelect === null || onSelect === void 0 ? void 0 : onSelect(currentMonth, event);
|
|
44
|
+
}, [currentMonth, disabled, onSelect]);
|
|
37
45
|
var _useClassNames = useClassNames(classPrefix),
|
|
38
46
|
prefix = _useClassNames.prefix,
|
|
39
47
|
merge = _useClassNames.merge,
|
|
@@ -43,13 +51,18 @@ var MonthDropdownItem = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
43
51
|
}), {
|
|
44
52
|
disabled: disabled
|
|
45
53
|
});
|
|
46
|
-
|
|
54
|
+
var ariaLabel = currentMonth ? getAriaLabel(currentMonth, formatStr, formatDate) : '';
|
|
55
|
+
return /*#__PURE__*/React.createElement(Component, _extends({
|
|
56
|
+
key: month,
|
|
57
|
+
role: "gridcell",
|
|
58
|
+
"aria-selected": active ? true : undefined,
|
|
59
|
+
"aria-disabled": disabled ? true : undefined,
|
|
60
|
+
"aria-label": ariaLabel,
|
|
61
|
+
tabIndex: active ? 0 : -1,
|
|
47
62
|
ref: ref,
|
|
48
63
|
className: classes,
|
|
49
|
-
onClick: handleClick
|
|
50
|
-
|
|
51
|
-
tabIndex: -1
|
|
52
|
-
}), /*#__PURE__*/React.createElement("span", {
|
|
64
|
+
onClick: handleClick
|
|
65
|
+
}, rest), /*#__PURE__*/React.createElement("span", {
|
|
53
66
|
className: prefix('content')
|
|
54
67
|
}, month));
|
|
55
68
|
});
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { RsRefForwardingComponent, WithAsProps } from '../@types/common';
|
|
3
|
+
export interface TableCellProps extends WithAsProps {
|
|
4
|
+
date: Date;
|
|
5
|
+
disabled?: boolean;
|
|
6
|
+
selected?: boolean;
|
|
7
|
+
unSameMonth?: boolean;
|
|
8
|
+
rangeStart?: boolean;
|
|
9
|
+
rangeEnd?: boolean;
|
|
10
|
+
inRange?: boolean;
|
|
11
|
+
onSelect?: (date: Date, disabled: boolean | void, event: React.MouseEvent) => void;
|
|
12
|
+
}
|
|
13
|
+
declare const TableCell: RsRefForwardingComponent<'div', TableCellProps>;
|
|
14
|
+
export default TableCell;
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
3
|
+
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
4
|
+
import React from 'react';
|
|
5
|
+
import partial from 'lodash/partial';
|
|
6
|
+
import { DateUtils, useClassNames, useCustom } from '../utils';
|
|
7
|
+
import { isSameDay } from '../utils/dateUtils';
|
|
8
|
+
import { useCalendarContext } from './CalendarContext';
|
|
9
|
+
import { getAriaLabel } from './utils';
|
|
10
|
+
var TableCell = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
11
|
+
var _props$as = props.as,
|
|
12
|
+
Component = _props$as === void 0 ? 'div' : _props$as,
|
|
13
|
+
_props$classPrefix = props.classPrefix,
|
|
14
|
+
classPrefix = _props$classPrefix === void 0 ? 'calendar-table' : _props$classPrefix,
|
|
15
|
+
disabled = props.disabled,
|
|
16
|
+
selected = props.selected,
|
|
17
|
+
date = props.date,
|
|
18
|
+
onSelect = props.onSelect,
|
|
19
|
+
unSameMonth = props.unSameMonth,
|
|
20
|
+
rangeStart = props.rangeStart,
|
|
21
|
+
rangeEnd = props.rangeEnd,
|
|
22
|
+
inRange = props.inRange,
|
|
23
|
+
rest = _objectWithoutPropertiesLoose(props, ["as", "classPrefix", "disabled", "selected", "date", "onSelect", "unSameMonth", "rangeStart", "rangeEnd", "inRange"]);
|
|
24
|
+
var _useCalendarContext = useCalendarContext(),
|
|
25
|
+
onMouseMove = _useCalendarContext.onMouseMove,
|
|
26
|
+
cellClassName = _useCalendarContext.cellClassName,
|
|
27
|
+
renderCell = _useCalendarContext.renderCell,
|
|
28
|
+
overrideLocale = _useCalendarContext.locale;
|
|
29
|
+
var _useClassNames = useClassNames(classPrefix),
|
|
30
|
+
prefix = _useClassNames.prefix,
|
|
31
|
+
merge = _useClassNames.merge;
|
|
32
|
+
var _useCustom = useCustom('Calendar', overrideLocale),
|
|
33
|
+
locale = _useCustom.locale,
|
|
34
|
+
formatDate = _useCustom.formatDate;
|
|
35
|
+
var formatStr = locale.formattedDayPattern;
|
|
36
|
+
var ariaLabel = getAriaLabel(date, formatStr, formatDate);
|
|
37
|
+
var todayDate = new Date();
|
|
38
|
+
var isToday = isSameDay(date, todayDate);
|
|
39
|
+
var classes = merge(prefix('cell', {
|
|
40
|
+
'cell-un-same-month': unSameMonth,
|
|
41
|
+
'cell-is-today': isToday,
|
|
42
|
+
'cell-selected': selected,
|
|
43
|
+
'cell-selected-start': rangeStart,
|
|
44
|
+
'cell-selected-end': rangeEnd,
|
|
45
|
+
'cell-in-range': !unSameMonth && inRange,
|
|
46
|
+
'cell-disabled': disabled
|
|
47
|
+
}), cellClassName === null || cellClassName === void 0 ? void 0 : cellClassName(date));
|
|
48
|
+
return /*#__PURE__*/React.createElement(Component, _extends({
|
|
49
|
+
ref: ref,
|
|
50
|
+
role: "gridcell",
|
|
51
|
+
"aria-label": ariaLabel,
|
|
52
|
+
"aria-selected": selected || undefined,
|
|
53
|
+
"aria-disabled": disabled || undefined,
|
|
54
|
+
tabIndex: selected ? 0 : -1,
|
|
55
|
+
title: isToday ? ariaLabel + " (" + (locale === null || locale === void 0 ? void 0 : locale.today) + ")" : ariaLabel,
|
|
56
|
+
className: classes,
|
|
57
|
+
onMouseEnter: !disabled && onMouseMove ? onMouseMove.bind(null, date) : undefined,
|
|
58
|
+
onClick: onSelect ? partial(onSelect, date, disabled) : undefined
|
|
59
|
+
}, rest), /*#__PURE__*/React.createElement("div", {
|
|
60
|
+
className: prefix('cell-content')
|
|
61
|
+
}, /*#__PURE__*/React.createElement("span", {
|
|
62
|
+
className: prefix('cell-day')
|
|
63
|
+
}, DateUtils.getDate(date)), renderCell === null || renderCell === void 0 ? void 0 : renderCell(date)));
|
|
64
|
+
});
|
|
65
|
+
TableCell.displayName = 'CalendarTableCell';
|
|
66
|
+
export default TableCell;
|
|
@@ -3,6 +3,7 @@ import _extends from "@babel/runtime/helpers/esm/extends";
|
|
|
3
3
|
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
4
4
|
import React from 'react';
|
|
5
5
|
import PropTypes from 'prop-types';
|
|
6
|
+
import upperFirst from 'lodash/upperFirst';
|
|
6
7
|
import { useClassNames } from '../utils';
|
|
7
8
|
import { useCalendarContext } from './CalendarContext';
|
|
8
9
|
var weekKeys = ['sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday'];
|
|
@@ -40,7 +41,8 @@ var TableHeaderRow = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
40
41
|
return /*#__PURE__*/React.createElement("div", {
|
|
41
42
|
key: key,
|
|
42
43
|
className: prefix('header-cell'),
|
|
43
|
-
role: "columnheader"
|
|
44
|
+
role: "columnheader",
|
|
45
|
+
"aria-label": upperFirst(key)
|
|
44
46
|
}, /*#__PURE__*/React.createElement("span", {
|
|
45
47
|
className: prefix('header-cell-content')
|
|
46
48
|
}, locale === null || locale === void 0 ? void 0 : locale[key]));
|
package/esm/Calendar/TableRow.js
CHANGED
|
@@ -3,9 +3,10 @@ import _extends from "@babel/runtime/helpers/esm/extends";
|
|
|
3
3
|
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
4
4
|
import React, { useCallback } from 'react';
|
|
5
5
|
import PropTypes from 'prop-types';
|
|
6
|
-
import
|
|
7
|
-
import {
|
|
6
|
+
import { useClassNames, DATERANGE_DISABLED_TARGET } from '../utils';
|
|
7
|
+
import { isSameDay, addDays, isBefore, isAfter, format } from '../utils/dateUtils';
|
|
8
8
|
import { useCalendarContext } from './CalendarContext';
|
|
9
|
+
import TableCell from './TableCell';
|
|
9
10
|
var TableRow = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
10
11
|
var _props$as = props.as,
|
|
11
12
|
Component = _props$as === void 0 ? 'div' : _props$as,
|
|
@@ -23,15 +24,8 @@ var TableRow = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
23
24
|
hoverRangeValue = _useCalendarContext.hoverRangeValue,
|
|
24
25
|
inSameMonth = _useCalendarContext.inSameMonth,
|
|
25
26
|
isoWeek = _useCalendarContext.isoWeek,
|
|
26
|
-
onMouseMove = _useCalendarContext.onMouseMove,
|
|
27
27
|
onSelect = _useCalendarContext.onSelect,
|
|
28
|
-
cellClassName = _useCalendarContext.cellClassName,
|
|
29
|
-
renderCell = _useCalendarContext.renderCell,
|
|
30
|
-
overrideLocale = _useCalendarContext.locale,
|
|
31
28
|
showWeekNumbers = _useCalendarContext.showWeekNumbers;
|
|
32
|
-
var _useCustom = useCustom('Calendar', overrideLocale),
|
|
33
|
-
locale = _useCustom.locale,
|
|
34
|
-
formatDate = _useCustom.formatDate;
|
|
35
29
|
var _useClassNames = useClassNames(classPrefix),
|
|
36
30
|
prefix = _useClassNames.prefix,
|
|
37
31
|
merge = _useClassNames.merge;
|
|
@@ -42,7 +36,6 @@ var TableRow = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
42
36
|
onSelect === null || onSelect === void 0 ? void 0 : onSelect(date, event);
|
|
43
37
|
}, [onSelect]);
|
|
44
38
|
var renderDays = function renderDays() {
|
|
45
|
-
var formatStr = locale.formattedDayPattern;
|
|
46
39
|
var days = [];
|
|
47
40
|
var _ref = dateRange || [],
|
|
48
41
|
selectedStartDate = _ref[0],
|
|
@@ -51,64 +44,47 @@ var TableRow = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
51
44
|
hoverStartDate = _ref2[0],
|
|
52
45
|
hoverEndDate = _ref2[1];
|
|
53
46
|
var isRangeSelectionMode = typeof dateRange !== 'undefined';
|
|
54
|
-
var todayDate = new Date();
|
|
55
47
|
for (var i = 0; i < 7; i += 1) {
|
|
56
|
-
var thisDate =
|
|
48
|
+
var thisDate = addDays(weekendDate, i);
|
|
57
49
|
var disabled = disabledDate === null || disabledDate === void 0 ? void 0 : disabledDate(thisDate, dateRange, DATERANGE_DISABLED_TARGET.CALENDAR);
|
|
58
|
-
var isToday = DateUtils.isSameDay(thisDate, todayDate);
|
|
59
50
|
var unSameMonth = !(inSameMonth !== null && inSameMonth !== void 0 && inSameMonth(thisDate));
|
|
60
|
-
var
|
|
61
|
-
var
|
|
62
|
-
var isSelected = isRangeSelectionMode ?
|
|
51
|
+
var rangeStart = !unSameMonth && selectedStartDate && isSameDay(thisDate, selectedStartDate);
|
|
52
|
+
var rangeEnd = !unSameMonth && selectedEndDate && isSameDay(thisDate, selectedEndDate);
|
|
53
|
+
var isSelected = isRangeSelectionMode ? rangeStart || rangeEnd : isSameDay(thisDate, selected);
|
|
63
54
|
|
|
64
55
|
// TODO-Doma Move those logic that's for DatePicker/DateRangePicker to a separate component
|
|
65
56
|
// Calendar is not supposed to be reused this way
|
|
66
57
|
var inRange = false;
|
|
67
58
|
// for Selected
|
|
68
59
|
if (selectedStartDate && selectedEndDate) {
|
|
69
|
-
if (
|
|
60
|
+
if (isBefore(thisDate, selectedEndDate) && isAfter(thisDate, selectedStartDate)) {
|
|
70
61
|
inRange = true;
|
|
71
62
|
}
|
|
72
|
-
if (
|
|
63
|
+
if (isBefore(thisDate, selectedStartDate) && isAfter(thisDate, selectedEndDate)) {
|
|
73
64
|
inRange = true;
|
|
74
65
|
}
|
|
75
66
|
}
|
|
76
67
|
|
|
77
68
|
// for Hovering
|
|
78
69
|
if (!isSelected && hoverStartDate && hoverEndDate) {
|
|
79
|
-
if (!
|
|
70
|
+
if (!isAfter(thisDate, hoverEndDate) && !isBefore(thisDate, hoverStartDate)) {
|
|
80
71
|
inRange = true;
|
|
81
72
|
}
|
|
82
|
-
if (!
|
|
73
|
+
if (!isAfter(thisDate, hoverStartDate) && !isBefore(thisDate, hoverEndDate)) {
|
|
83
74
|
inRange = true;
|
|
84
75
|
}
|
|
85
76
|
}
|
|
86
|
-
|
|
87
|
-
'
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
role: "gridcell",
|
|
98
|
-
key: title,
|
|
99
|
-
"aria-label": title,
|
|
100
|
-
"aria-selected": isSelected || undefined,
|
|
101
|
-
className: _classes
|
|
102
|
-
}, /*#__PURE__*/React.createElement("div", {
|
|
103
|
-
role: "button",
|
|
104
|
-
className: prefix('cell-content'),
|
|
105
|
-
tabIndex: -1,
|
|
106
|
-
title: isToday ? title + " (" + (locale === null || locale === void 0 ? void 0 : locale.today) + ")" : title,
|
|
107
|
-
onMouseEnter: !disabled && onMouseMove ? onMouseMove.bind(null, thisDate) : undefined,
|
|
108
|
-
onClick: partial(handleSelect, thisDate, disabled)
|
|
109
|
-
}, /*#__PURE__*/React.createElement("span", {
|
|
110
|
-
className: prefix('cell-day')
|
|
111
|
-
}, DateUtils.getDate(thisDate)), renderCell && renderCell(thisDate))));
|
|
77
|
+
days.push( /*#__PURE__*/React.createElement(TableCell, {
|
|
78
|
+
key: format(thisDate, 'yyyy-MM-dd'),
|
|
79
|
+
date: thisDate,
|
|
80
|
+
disabled: disabled,
|
|
81
|
+
selected: isSelected,
|
|
82
|
+
onSelect: handleSelect,
|
|
83
|
+
unSameMonth: unSameMonth,
|
|
84
|
+
rangeStart: rangeStart,
|
|
85
|
+
rangeEnd: rangeEnd,
|
|
86
|
+
inRange: inRange
|
|
87
|
+
}));
|
|
112
88
|
}
|
|
113
89
|
return days;
|
|
114
90
|
};
|
|
@@ -120,7 +96,7 @@ var TableRow = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
120
96
|
}), showWeekNumbers && /*#__PURE__*/React.createElement("div", {
|
|
121
97
|
className: prefix('cell-week-number'),
|
|
122
98
|
role: "rowheader"
|
|
123
|
-
},
|
|
99
|
+
}, format(weekendDate, isoWeek ? 'I' : 'w')), renderDays());
|
|
124
100
|
});
|
|
125
101
|
TableRow.displayName = 'CalendarTableRow';
|
|
126
102
|
TableRow.propTypes = {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
declare const useCalendarDate: (value: Date | null | undefined, defaultDate: Date | undefined) => {
|
|
2
2
|
calendarDate: Date;
|
|
3
|
-
setCalendarDate: (date: Date | undefined) => void;
|
|
3
|
+
setCalendarDate: (date: React.SetStateAction<Date> | undefined) => void;
|
|
4
4
|
resetCalendarDate: (nextValue?: any) => void;
|
|
5
5
|
};
|
|
6
6
|
export default useCalendarDate;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Get aria-label for the date.
|
|
3
|
+
* @param date - The date.
|
|
4
|
+
* @param formatStr - The format string.
|
|
5
|
+
* @param format - The format function.
|
|
6
|
+
*/
|
|
7
|
+
export declare function getAriaLabel(date: Date, formatStr: string, format: (date: Date, formatStr: string) => string): string;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { DateUtils } from '../utils';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Get aria-label for the date.
|
|
6
|
+
* @param date - The date.
|
|
7
|
+
* @param formatStr - The format string.
|
|
8
|
+
* @param format - The format function.
|
|
9
|
+
*/
|
|
10
|
+
export function getAriaLabel(date, formatStr, format) {
|
|
11
|
+
return format ? format(date, formatStr) : DateUtils.format(date, formatStr);
|
|
12
|
+
}
|
package/esm/Cascader/Cascader.js
CHANGED
|
@@ -190,6 +190,10 @@ var Cascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
190
190
|
var items = getSearchResult(value);
|
|
191
191
|
setSearchKeyword(value);
|
|
192
192
|
onSearch === null || onSearch === void 0 ? void 0 : onSearch(value, event);
|
|
193
|
+
if (!value || items.length === 0) {
|
|
194
|
+
setFocusItemValue(undefined);
|
|
195
|
+
return;
|
|
196
|
+
}
|
|
193
197
|
if (items.length > 0) {
|
|
194
198
|
setFocusItemValue(items[0][valueKey]);
|
|
195
199
|
setLayer(0);
|
|
@@ -212,9 +216,12 @@ var Cascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
212
216
|
setSearchKeyword('');
|
|
213
217
|
}, [onClose]);
|
|
214
218
|
var handleClose = useCallback(function () {
|
|
215
|
-
var _triggerRef$current;
|
|
219
|
+
var _triggerRef$current, _targetRef$current, _targetRef$current$fo;
|
|
216
220
|
(_triggerRef$current = triggerRef.current) === null || _triggerRef$current === void 0 ? void 0 : _triggerRef$current.close();
|
|
217
|
-
|
|
221
|
+
|
|
222
|
+
// The focus is on the trigger button after closing
|
|
223
|
+
(_targetRef$current = targetRef.current) === null || _targetRef$current === void 0 ? void 0 : (_targetRef$current$fo = _targetRef$current.focus) === null || _targetRef$current$fo === void 0 ? void 0 : _targetRef$current$fo.call(_targetRef$current);
|
|
224
|
+
}, []);
|
|
218
225
|
var handleClean = useCallback(function (event) {
|
|
219
226
|
if (disabled || !targetRef.current) {
|
|
220
227
|
return;
|
|
@@ -344,6 +351,8 @@ var Cascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
344
351
|
"aria-disabled": disabled,
|
|
345
352
|
"data-key": item[valueKey],
|
|
346
353
|
className: itemClasses,
|
|
354
|
+
tabIndex: -1,
|
|
355
|
+
role: "option",
|
|
347
356
|
onClick: function onClick(event) {
|
|
348
357
|
if (!disabled) {
|
|
349
358
|
handleSearchRowSelect(item, nodes, event);
|
|
@@ -358,7 +367,8 @@ var Cascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
358
367
|
var items = getSearchResult();
|
|
359
368
|
return /*#__PURE__*/React.createElement("div", {
|
|
360
369
|
className: prefix('cascader-search-panel'),
|
|
361
|
-
"data-layer": 0
|
|
370
|
+
"data-layer": 0,
|
|
371
|
+
role: "listbox"
|
|
362
372
|
}, items.length ? items.map(renderSearchRow) : /*#__PURE__*/React.createElement("div", {
|
|
363
373
|
className: prefix('none')
|
|
364
374
|
}, locale.noResultsText));
|