rsuite 5.33.0 → 5.34.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 +20 -0
- package/DatePicker/styles/index.less +1 -0
- package/Timeline/styles/index.less +1 -1
- package/cjs/Carousel/Carousel.js +12 -2
- package/cjs/CheckPicker/CheckPicker.js +6 -2
- package/cjs/DatePicker/DatePicker.js +1 -1
- package/cjs/InputPicker/InputPicker.js +7 -2
- package/cjs/MultiCascader/MultiCascader.js +1 -0
- package/cjs/Picker/DropdownMenu.d.ts +1 -0
- package/cjs/Picker/DropdownMenu.js +19 -6
- package/cjs/Picker/utils.d.ts +2 -0
- package/cjs/Picker/utils.js +8 -1
- package/cjs/SelectPicker/SelectPicker.js +7 -2
- package/cjs/Timeline/Timeline.d.ts +9 -0
- package/cjs/Timeline/Timeline.js +12 -1
- package/cjs/Timeline/TimelineItem.d.ts +18 -1
- package/cjs/Timeline/TimelineItem.js +5 -3
- package/cjs/Windowing/List.js +11 -2
- package/cjs/utils/getDataGroupBy.d.ts +4 -1
- package/cjs/utils/getDataGroupBy.js +12 -24
- package/cjs/utils/index.d.ts +0 -1
- package/cjs/utils/index.js +1 -6
- package/cjs/utils/treeUtils.d.ts +8 -2
- package/cjs/utils/treeUtils.js +48 -14
- package/dist/rsuite-no-reset-rtl.css +1 -1
- 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 +1 -1
- package/dist/rsuite-no-reset.min.css +1 -1
- package/dist/rsuite-no-reset.min.css.map +1 -1
- package/dist/rsuite-rtl.css +1 -1
- package/dist/rsuite-rtl.min.css +1 -1
- package/dist/rsuite-rtl.min.css.map +1 -1
- package/dist/rsuite.css +1 -1
- package/dist/rsuite.js +59 -19
- 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/Carousel/Carousel.js +13 -3
- package/esm/CheckPicker/CheckPicker.js +5 -2
- package/esm/DatePicker/DatePicker.js +1 -1
- package/esm/InputPicker/InputPicker.js +6 -2
- package/esm/MultiCascader/MultiCascader.js +1 -0
- package/esm/Picker/DropdownMenu.d.ts +1 -0
- package/esm/Picker/DropdownMenu.js +17 -5
- package/esm/Picker/utils.d.ts +2 -0
- package/esm/Picker/utils.js +8 -1
- package/esm/SelectPicker/SelectPicker.js +6 -2
- package/esm/Timeline/Timeline.d.ts +9 -0
- package/esm/Timeline/Timeline.js +13 -1
- package/esm/Timeline/TimelineItem.d.ts +18 -1
- package/esm/Timeline/TimelineItem.js +5 -3
- package/esm/Windowing/List.js +12 -3
- package/esm/utils/getDataGroupBy.d.ts +4 -1
- package/esm/utils/getDataGroupBy.js +13 -24
- package/esm/utils/index.d.ts +0 -1
- package/esm/utils/index.js +0 -1
- package/esm/utils/treeUtils.d.ts +8 -2
- package/esm/utils/treeUtils.js +43 -15
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,23 @@
|
|
|
1
|
+
# [5.34.0](https://github.com/rsuite/rsuite/compare/v5.33.1...v5.34.0) (2023-05-19)
|
|
2
|
+
|
|
3
|
+
### Bug Fixes
|
|
4
|
+
|
|
5
|
+
- **DatePicker:** added stack styles to datepicker styles ([#3195](https://github.com/rsuite/rsuite/issues/3195)) ([b3ed580](https://github.com/rsuite/rsuite/commit/b3ed580867db2e5205e71475c593e7d17ff04b49))
|
|
6
|
+
- **SelectPicker:** prevent error when listProps.itemSize is a number ([#3193](https://github.com/rsuite/rsuite/issues/3193)) ([151df47](https://github.com/rsuite/rsuite/commit/151df474b15ab4651d4ee5777b66018e58837816))
|
|
7
|
+
|
|
8
|
+
### Features
|
|
9
|
+
|
|
10
|
+
- **Timeline:** add isItemActive prop ([#3198](https://github.com/rsuite/rsuite/issues/3198)) ([377930f](https://github.com/rsuite/rsuite/commit/377930f3498c59834a424417c136499866aacec2))
|
|
11
|
+
|
|
12
|
+
## [5.33.1](https://github.com/rsuite/rsuite/compare/v5.33.0...v5.33.1) (2023-05-12)
|
|
13
|
+
|
|
14
|
+
### Bug Fixes
|
|
15
|
+
|
|
16
|
+
- **Carousel:** fix index not being reset when children change ([#3185](https://github.com/rsuite/rsuite/issues/3185)) ([3afb746](https://github.com/rsuite/rsuite/commit/3afb7460f5d12b34eb0e7944fa9f5a461b663028))
|
|
17
|
+
- **CheckPicker:** avoid mutating data when groupBy is specified ([#3173](https://github.com/rsuite/rsuite/issues/3173)) ([1a9805a](https://github.com/rsuite/rsuite/commit/1a9805a00cffcb8e527fbeb1df3a346da9a707f0))
|
|
18
|
+
- **DatePicker:** fix defaultValue not changing month on calendar ([#3183](https://github.com/rsuite/rsuite/issues/3183)) ([b0a2b5f](https://github.com/rsuite/rsuite/commit/b0a2b5f5cfe6ea94c1c13f8e9451c5d60f7f5b80))
|
|
19
|
+
- **pickers:** fix keyboard events still responding when readOnly ([#3184](https://github.com/rsuite/rsuite/issues/3184)) ([56e7563](https://github.com/rsuite/rsuite/commit/56e7563b2035be767f5ed8429cd8c3622708abe8))
|
|
20
|
+
|
|
1
21
|
# [5.33.0](https://github.com/rsuite/rsuite/compare/v5.32.0...v5.33.0) (2023-04-28)
|
|
2
22
|
|
|
3
23
|
### Features
|
package/cjs/Carousel/Carousel.js
CHANGED
|
@@ -59,13 +59,23 @@ var Carousel = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
59
59
|
|
|
60
60
|
var _useControlled = (0, _utils.useControlled)(activeIndexProp, defaultActiveIndex),
|
|
61
61
|
activeIndex = _useControlled[0],
|
|
62
|
-
setActiveIndex = _useControlled[1]
|
|
62
|
+
setActiveIndex = _useControlled[1],
|
|
63
|
+
isControlled = _useControlled[2];
|
|
63
64
|
|
|
64
65
|
var _useState = (0, _react.useState)(0),
|
|
65
66
|
lastIndex = _useState[0],
|
|
66
67
|
setLastIndex = _useState[1];
|
|
67
68
|
|
|
68
|
-
var rootRef = (0, _react.useRef)(null);
|
|
69
|
+
var rootRef = (0, _react.useRef)(null);
|
|
70
|
+
(0, _utils.useUpdateEffect)(function () {
|
|
71
|
+
// When the index is controlled, the index is not updated when the number of children changes.
|
|
72
|
+
if (isControlled) {
|
|
73
|
+
return;
|
|
74
|
+
} // Reset the index when the number of children changes.
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
setActiveIndex(0);
|
|
78
|
+
}, [children, isControlled]); // Set a timer for automatic playback.
|
|
69
79
|
// `autoplay` needs to be cast to boolean type to avoid undefined parameters.
|
|
70
80
|
|
|
71
81
|
var _useTimeout = (0, _utils.useTimeout)(function () {
|
|
@@ -35,6 +35,8 @@ var _treeUtils = require("../utils/treeUtils");
|
|
|
35
35
|
|
|
36
36
|
var _utils = require("../utils");
|
|
37
37
|
|
|
38
|
+
var _getDataGroupBy = require("../utils/getDataGroupBy");
|
|
39
|
+
|
|
38
40
|
var _Picker = require("../Picker");
|
|
39
41
|
|
|
40
42
|
var _templateObject;
|
|
@@ -323,7 +325,7 @@ var CheckPicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
323
325
|
|
|
324
326
|
|
|
325
327
|
if (groupBy) {
|
|
326
|
-
items = (0,
|
|
328
|
+
items = (0, _getDataGroupBy.getDataGroupBy)(items, groupBy, sort);
|
|
327
329
|
} else if (typeof sort === 'function') {
|
|
328
330
|
items = items.sort(sort(false));
|
|
329
331
|
}
|
|
@@ -342,8 +344,10 @@ var CheckPicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
342
344
|
dropdownMenuItemAs: _Picker.DropdownMenuCheckItem,
|
|
343
345
|
activeItemValues: value,
|
|
344
346
|
focusItemValue: focusItemValue,
|
|
345
|
-
data: [].concat(filteredStickyItems, items)
|
|
347
|
+
data: [].concat(filteredStickyItems, items) // `group` is redundant so long as `groupBy` exists
|
|
348
|
+
,
|
|
346
349
|
group: !(0, _isUndefined.default)(groupBy),
|
|
350
|
+
groupBy: groupBy,
|
|
347
351
|
onSelect: handleItemSelect,
|
|
348
352
|
onGroupTitleClick: onGroupTitleClick,
|
|
349
353
|
virtualized: virtualized
|
|
@@ -117,7 +117,7 @@ var DatePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
117
117
|
value = _useControlled[0],
|
|
118
118
|
setValue = _useControlled[1];
|
|
119
119
|
|
|
120
|
-
var _useCalendarDate = (0, _useCalendarDate2.default)(
|
|
120
|
+
var _useCalendarDate = (0, _useCalendarDate2.default)(value, calendarDefaultDate),
|
|
121
121
|
calendarDate = _useCalendarDate.calendarDate,
|
|
122
122
|
setCalendarDate = _useCalendarDate.setCalendarDate,
|
|
123
123
|
resetCalendarDate = _useCalendarDate.resetCalendarDate;
|
|
@@ -43,6 +43,8 @@ var _Plaintext = _interopRequireDefault(require("../Plaintext"));
|
|
|
43
43
|
|
|
44
44
|
var _utils = require("../utils");
|
|
45
45
|
|
|
46
|
+
var _getDataGroupBy = require("../utils/getDataGroupBy");
|
|
47
|
+
|
|
46
48
|
var _Picker = require("../Picker");
|
|
47
49
|
|
|
48
50
|
var _Tag = _interopRequireDefault(require("../Tag"));
|
|
@@ -629,7 +631,7 @@ var InputPicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
629
631
|
|
|
630
632
|
|
|
631
633
|
if (groupBy) {
|
|
632
|
-
items = (0,
|
|
634
|
+
items = (0, _getDataGroupBy.getDataGroupBy)(items, groupBy, sort);
|
|
633
635
|
} else if (typeof sort === 'function') {
|
|
634
636
|
items = items.sort(sort(false));
|
|
635
637
|
}
|
|
@@ -653,8 +655,11 @@ var InputPicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
653
655
|
activeItemValues: multi ? value : [value],
|
|
654
656
|
focusItemValue: focusItemValue,
|
|
655
657
|
maxHeight: menuMaxHeight,
|
|
656
|
-
data: items
|
|
658
|
+
data: items // FIXME-Doma
|
|
659
|
+
// `group` is redundant so long as `groupBy` exists
|
|
660
|
+
,
|
|
657
661
|
group: !(0, _isUndefined.default)(groupBy),
|
|
662
|
+
groupBy: groupBy,
|
|
658
663
|
onSelect: multi ? handleCheckTag : handleSelectItem // fixme don't use any
|
|
659
664
|
,
|
|
660
665
|
renderMenuGroup: renderMenuGroup,
|
|
@@ -249,6 +249,7 @@ var MultiCascader = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
|
|
|
249
249
|
(_triggerRef$current = triggerRef.current) === null || _triggerRef$current === void 0 ? void 0 : (_triggerRef$current$u = _triggerRef$current.updatePosition) === null || _triggerRef$current$u === void 0 ? void 0 : _triggerRef$current$u.call(_triggerRef$current);
|
|
250
250
|
}, [onSelect, getChildren, childrenKey, inline, addFlattenData, addColumn, removeColumnByIndex]);
|
|
251
251
|
var handleCheck = (0, _react.useCallback)(function (node, event, checked) {
|
|
252
|
+
console.log('handleCheck');
|
|
252
253
|
var nodeValue = node[valueKey];
|
|
253
254
|
var nextValue = [];
|
|
254
255
|
|
|
@@ -11,6 +11,8 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")
|
|
|
11
11
|
|
|
12
12
|
var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
|
|
13
13
|
|
|
14
|
+
var _get2 = _interopRequireDefault(require("lodash/get"));
|
|
15
|
+
|
|
14
16
|
var _react = _interopRequireWildcard(require("react"));
|
|
15
17
|
|
|
16
18
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
@@ -47,6 +49,7 @@ var DropdownMenu = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
|
|
|
47
49
|
var _props$data = props.data,
|
|
48
50
|
data = _props$data === void 0 ? [] : _props$data,
|
|
49
51
|
group = props.group,
|
|
52
|
+
groupBy = props.groupBy,
|
|
50
53
|
_props$maxHeight = props.maxHeight,
|
|
51
54
|
maxHeight = _props$maxHeight === void 0 ? 320 : _props$maxHeight,
|
|
52
55
|
_props$activeItemValu = props.activeItemValues,
|
|
@@ -75,7 +78,7 @@ var DropdownMenu = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
|
|
|
75
78
|
renderMenuItem = props.renderMenuItem,
|
|
76
79
|
onGroupTitleClick = props.onGroupTitleClick,
|
|
77
80
|
onSelect = props.onSelect,
|
|
78
|
-
rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["data", "group", "maxHeight", "activeItemValues", "disabledItemValues", "classPrefix", "valueKey", "labelKey", "virtualized", "listProps", "listRef", "className", "style", "focusItemValue", "dropdownMenuItemClassPrefix", "dropdownMenuItemAs", "rowHeight", "rowGroupHeight", "renderMenuGroup", "renderMenuItem", "onGroupTitleClick", "onSelect"]);
|
|
81
|
+
rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["data", "group", "groupBy", "maxHeight", "activeItemValues", "disabledItemValues", "classPrefix", "valueKey", "labelKey", "virtualized", "listProps", "listRef", "className", "style", "focusItemValue", "dropdownMenuItemClassPrefix", "dropdownMenuItemAs", "rowHeight", "rowGroupHeight", "renderMenuGroup", "renderMenuItem", "onGroupTitleClick", "onSelect"]);
|
|
79
82
|
|
|
80
83
|
var _useClassNames = (0, _utils.useClassNames)(classPrefix),
|
|
81
84
|
withClassPrefix = _useClassNames.withClassPrefix,
|
|
@@ -205,11 +208,21 @@ var DropdownMenu = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
|
|
|
205
208
|
};
|
|
206
209
|
|
|
207
210
|
var filteredItems = group ? data.filter(function (item) {
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
211
|
+
var _item$parent;
|
|
212
|
+
|
|
213
|
+
// Display group title items
|
|
214
|
+
if (item[_getDataGroupBy.KEY_GROUP]) return true; // Display items under the unfolded group
|
|
215
|
+
// FIXME-Doma
|
|
216
|
+
// `groupBy` is bound to be string when `group` is true
|
|
217
|
+
// because `group` is actually redundant as a prop
|
|
218
|
+
// It could simply be derived from `groupBy` value
|
|
219
|
+
|
|
220
|
+
var groupValue = (0, _get2.default)(item, groupBy, '') || ( // FIXME-Doma
|
|
221
|
+
// Usage of `item.parent` is strongly discouraged
|
|
222
|
+
// It's only here for legacy support
|
|
223
|
+
// Remove once `item.parent` is completely removed across related components
|
|
224
|
+
(_item$parent = item.parent) === null || _item$parent === void 0 ? void 0 : _item$parent[_getDataGroupBy.KEY_GROUP_TITLE]);
|
|
225
|
+
return !foldedGroupKeys.includes(groupValue);
|
|
213
226
|
}) : data;
|
|
214
227
|
var rowCount = filteredItems.length;
|
|
215
228
|
(0, _utils.useMount)(function () {
|
package/cjs/Picker/utils.d.ts
CHANGED
|
@@ -73,6 +73,8 @@ export interface ToggleKeyDownEventProps {
|
|
|
73
73
|
overlayRef?: React.RefObject<any>;
|
|
74
74
|
searchInputRef?: React.RefObject<any>;
|
|
75
75
|
active?: boolean;
|
|
76
|
+
readOnly?: boolean;
|
|
77
|
+
disabled?: boolean;
|
|
76
78
|
onExit?: (event: any) => void;
|
|
77
79
|
onKeyDown?: (event: any) => void;
|
|
78
80
|
onOpen?: () => void;
|
package/cjs/Picker/utils.js
CHANGED
|
@@ -433,6 +433,8 @@ var useToggleKeyDownEvent = function useToggleKeyDownEvent(props) {
|
|
|
433
433
|
overlayRef = props.overlayRef,
|
|
434
434
|
searchInputRef = props.searchInputRef,
|
|
435
435
|
active = props.active,
|
|
436
|
+
readOnly = props.readOnly,
|
|
437
|
+
disabled = props.disabled,
|
|
436
438
|
onExit = props.onExit,
|
|
437
439
|
onOpen = props.onOpen,
|
|
438
440
|
onClose = props.onClose,
|
|
@@ -461,6 +463,11 @@ var useToggleKeyDownEvent = function useToggleKeyDownEvent(props) {
|
|
|
461
463
|
handleOpen();
|
|
462
464
|
}, [active, handleOpen, handleClose]);
|
|
463
465
|
var onToggle = (0, _react.useCallback)(function (event) {
|
|
466
|
+
// Keyboard events should not be processed when readOnly and disabled are set.
|
|
467
|
+
if (readOnly || disabled) {
|
|
468
|
+
return;
|
|
469
|
+
}
|
|
470
|
+
|
|
464
471
|
if (event.target === (targetRef === null || targetRef === void 0 ? void 0 : targetRef.current)) {
|
|
465
472
|
// enter
|
|
466
473
|
if (toggle && event.key === _utils.KEY_VALUES.ENTER) {
|
|
@@ -510,7 +517,7 @@ var useToggleKeyDownEvent = function useToggleKeyDownEvent(props) {
|
|
|
510
517
|
|
|
511
518
|
|
|
512
519
|
onKeyDown === null || onKeyDown === void 0 ? void 0 : onKeyDown(event);
|
|
513
|
-
}, [
|
|
520
|
+
}, [readOnly, disabled, targetRef, overlayRef, onKeyDown, toggle, handleToggleDropdown, onExit, onMenuKeyDown, searchInputRef, onMenuPressEnter, onMenuPressBackspace, handleClose]);
|
|
514
521
|
return onToggle;
|
|
515
522
|
};
|
|
516
523
|
|
|
@@ -29,6 +29,8 @@ var _omit = _interopRequireDefault(require("lodash/omit"));
|
|
|
29
29
|
|
|
30
30
|
var _utils = require("../utils");
|
|
31
31
|
|
|
32
|
+
var _getDataGroupBy = require("../utils/getDataGroupBy");
|
|
33
|
+
|
|
32
34
|
var _Picker = require("../Picker");
|
|
33
35
|
|
|
34
36
|
var _templateObject;
|
|
@@ -258,7 +260,7 @@ var SelectPicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
|
|
|
258
260
|
var items = filteredData; // Create a tree structure data when set `groupBy`
|
|
259
261
|
|
|
260
262
|
if (groupBy) {
|
|
261
|
-
items = (0,
|
|
263
|
+
items = (0, _getDataGroupBy.getDataGroupBy)(items, groupBy, sort);
|
|
262
264
|
} else if (typeof sort === 'function') {
|
|
263
265
|
items = items.sort(sort(false));
|
|
264
266
|
}
|
|
@@ -278,8 +280,11 @@ var SelectPicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
|
|
|
278
280
|
dropdownMenuItemAs: _Picker.DropdownMenuItem,
|
|
279
281
|
activeItemValues: [value],
|
|
280
282
|
focusItemValue: focusItemValue,
|
|
281
|
-
data: items
|
|
283
|
+
data: items // FIXME-Doma
|
|
284
|
+
// `group` is redundant so long as `groupBy` exists
|
|
285
|
+
,
|
|
282
286
|
group: !(0, _isUndefined.default)(groupBy),
|
|
287
|
+
groupBy: groupBy,
|
|
283
288
|
onSelect: handleItemSelect,
|
|
284
289
|
onGroupTitleClick: onGroupTitleClick,
|
|
285
290
|
virtualized: virtualized
|
|
@@ -8,9 +8,18 @@ export interface TimelineProps extends WithAsProps {
|
|
|
8
8
|
align?: 'left' | 'right' | 'alternate';
|
|
9
9
|
/** Timeline endless **/
|
|
10
10
|
endless?: boolean;
|
|
11
|
+
/**
|
|
12
|
+
* Whether an item is active (with highlighted dot).
|
|
13
|
+
*
|
|
14
|
+
* @default
|
|
15
|
+
* The last item is marked active.
|
|
16
|
+
*/
|
|
17
|
+
isItemActive?: (index: number, totalItemsCount: number) => boolean;
|
|
11
18
|
}
|
|
12
19
|
interface TimelineComponent extends RsRefForwardingComponent<'div', TimelineProps> {
|
|
13
20
|
Item: typeof TimelineItem;
|
|
21
|
+
ACTIVE_FIRST: (index: number, totalItemsCount: number) => boolean;
|
|
22
|
+
ACTIVE_LAST: (index: number, totalItemsCount: number) => boolean;
|
|
14
23
|
}
|
|
15
24
|
declare const Timeline: TimelineComponent;
|
|
16
25
|
export default Timeline;
|
package/cjs/Timeline/Timeline.js
CHANGED
|
@@ -29,7 +29,9 @@ var Timeline = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
29
29
|
_props$align = props.align,
|
|
30
30
|
align = _props$align === void 0 ? 'left' : _props$align,
|
|
31
31
|
endless = props.endless,
|
|
32
|
-
|
|
32
|
+
_props$isItemActive = props.isItemActive,
|
|
33
|
+
isItemActive = _props$isItemActive === void 0 ? Timeline.ACTIVE_LAST : _props$isItemActive,
|
|
34
|
+
rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["children", "as", "classPrefix", "className", "align", "endless", "isItemActive"]);
|
|
33
35
|
|
|
34
36
|
var _useClassNames = (0, _utils.useClassNames)(classPrefix),
|
|
35
37
|
merge = _useClassNames.merge,
|
|
@@ -52,11 +54,20 @@ var Timeline = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
52
54
|
}), _utils.ReactChildren.mapCloneElement(children, function (_child, index) {
|
|
53
55
|
return {
|
|
54
56
|
last: index + 1 === count,
|
|
57
|
+
INTERNAL_active: isItemActive(index, count),
|
|
55
58
|
align: align
|
|
56
59
|
};
|
|
57
60
|
}));
|
|
58
61
|
});
|
|
59
62
|
|
|
63
|
+
Timeline.ACTIVE_FIRST = function (index) {
|
|
64
|
+
return index === 0;
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
Timeline.ACTIVE_LAST = function (index, totalItemsCount) {
|
|
68
|
+
return index === totalItemsCount - 1;
|
|
69
|
+
};
|
|
70
|
+
|
|
60
71
|
Timeline.Item = _TimelineItem.default;
|
|
61
72
|
Timeline.displayName = 'Timeline';
|
|
62
73
|
Timeline.propTypes = {
|
|
@@ -1,7 +1,18 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { WithAsProps, RsRefForwardingComponent } from '../@types/common';
|
|
3
3
|
export interface TimelineItemProps extends WithAsProps {
|
|
4
|
-
/**
|
|
4
|
+
/**
|
|
5
|
+
* Whether the last item
|
|
6
|
+
*
|
|
7
|
+
* @internal
|
|
8
|
+
* This props is supposed to be used only by Timeline component internally
|
|
9
|
+
* User should never rely on this prop
|
|
10
|
+
*
|
|
11
|
+
* @deprecated
|
|
12
|
+
* This prop was used to indicate whether an item is the last item so that it gets highlighted.
|
|
13
|
+
* Now we can specify whether an item should be highlighted individually.
|
|
14
|
+
* Use {@link INTERNAL_active} instead
|
|
15
|
+
*/
|
|
5
16
|
last?: boolean;
|
|
6
17
|
/** Customizing the Timeline item */
|
|
7
18
|
dot?: React.ReactNode;
|
|
@@ -11,6 +22,12 @@ export interface TimelineItemProps extends WithAsProps {
|
|
|
11
22
|
as?: React.ElementType;
|
|
12
23
|
/** Customized time of timeline **/
|
|
13
24
|
time?: React.ReactNode;
|
|
25
|
+
/**
|
|
26
|
+
* @internal
|
|
27
|
+
* This props is supposed to be used only by Timeline component internally
|
|
28
|
+
* User should never rely on this prop
|
|
29
|
+
*/
|
|
30
|
+
INTERNAL_active?: boolean;
|
|
14
31
|
}
|
|
15
32
|
declare const TimelineItem: RsRefForwardingComponent<'div', TimelineItemProps>;
|
|
16
33
|
export default TimelineItem;
|
|
@@ -21,11 +21,12 @@ var TimelineItem = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
|
|
|
21
21
|
children = props.children,
|
|
22
22
|
_props$classPrefix = props.classPrefix,
|
|
23
23
|
classPrefix = _props$classPrefix === void 0 ? 'timeline-item' : _props$classPrefix,
|
|
24
|
-
|
|
24
|
+
DEPRECATED_last = props.last,
|
|
25
25
|
className = props.className,
|
|
26
26
|
dot = props.dot,
|
|
27
27
|
time = props.time,
|
|
28
|
-
|
|
28
|
+
INTERNAL_active = props.INTERNAL_active,
|
|
29
|
+
rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["as", "children", "classPrefix", "last", "className", "dot", "time", "INTERNAL_active"]);
|
|
29
30
|
|
|
30
31
|
var _useClassNames = (0, _utils.useClassNames)(classPrefix),
|
|
31
32
|
merge = _useClassNames.merge,
|
|
@@ -33,7 +34,8 @@ var TimelineItem = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
|
|
|
33
34
|
prefix = _useClassNames.prefix;
|
|
34
35
|
|
|
35
36
|
var classes = merge(className, withClassPrefix({
|
|
36
|
-
last:
|
|
37
|
+
last: DEPRECATED_last,
|
|
38
|
+
active: INTERNAL_active
|
|
37
39
|
}));
|
|
38
40
|
return /*#__PURE__*/_react.default.createElement(Component, (0, _extends2.default)({}, rest, {
|
|
39
41
|
ref: ref,
|
package/cjs/Windowing/List.js
CHANGED
|
@@ -21,7 +21,8 @@ var List = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
21
21
|
var rowHeight = props.rowHeight,
|
|
22
22
|
_props$as = props.as,
|
|
23
23
|
Component = _props$as === void 0 ? _reactWindow.VariableSizeList : _props$as,
|
|
24
|
-
|
|
24
|
+
itemSizeProp = props.itemSize,
|
|
25
|
+
rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["rowHeight", "as", "itemSize"]);
|
|
25
26
|
var listRef = (0, _react.useRef)(null);
|
|
26
27
|
|
|
27
28
|
var _useCustom = (0, _utils.useCustom)(),
|
|
@@ -56,7 +57,15 @@ var List = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
56
57
|
index: index
|
|
57
58
|
}) : rowHeight || 0;
|
|
58
59
|
}, [rowHeight]);
|
|
59
|
-
var
|
|
60
|
+
var itemSize = (0, _react.useMemo)(function () {
|
|
61
|
+
if (typeof itemSizeProp === 'function') return itemSizeProp;
|
|
62
|
+
return function () {
|
|
63
|
+
return itemSizeProp;
|
|
64
|
+
};
|
|
65
|
+
}, [itemSizeProp]);
|
|
66
|
+
var compatibleProps = (0, _extends2.default)({
|
|
67
|
+
itemSize: itemSize
|
|
68
|
+
}, rest);
|
|
60
69
|
|
|
61
70
|
if (rowHeight) {
|
|
62
71
|
compatibleProps.itemSize = Component === _reactWindow.VariableSizeList ? setRowHeight : rowHeight;
|
|
@@ -1,3 +1,6 @@
|
|
|
1
1
|
export declare const KEY_GROUP: string | symbol;
|
|
2
2
|
export declare const KEY_GROUP_TITLE = "groupTitle";
|
|
3
|
-
export
|
|
3
|
+
export declare function getDataGroupBy<T>(data: readonly T[], key: string, sort?: (isGroup: boolean) => <T>(a: T, b: T) => number): (T | {
|
|
4
|
+
groupTitle: string;
|
|
5
|
+
children: T[];
|
|
6
|
+
})[];
|
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
4
|
|
|
5
5
|
exports.__esModule = true;
|
|
6
|
-
exports.
|
|
6
|
+
exports.getDataGroupBy = getDataGroupBy;
|
|
7
7
|
exports.KEY_GROUP_TITLE = exports.KEY_GROUP = void 0;
|
|
8
8
|
|
|
9
|
-
var
|
|
9
|
+
var _groupBy2 = _interopRequireDefault(require("lodash/groupBy"));
|
|
10
10
|
|
|
11
11
|
var _treeUtils = require("../utils/treeUtils");
|
|
12
12
|
|
|
@@ -17,26 +17,9 @@ var KEY_GROUP_TITLE = 'groupTitle';
|
|
|
17
17
|
exports.KEY_GROUP_TITLE = KEY_GROUP_TITLE;
|
|
18
18
|
|
|
19
19
|
function getDataGroupBy(data, key, sort) {
|
|
20
|
-
|
|
21
|
-
data = [];
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
var tempData = {};
|
|
20
|
+
var groupMap = (0, _groupBy2.default)(data, key);
|
|
25
21
|
var isSort = typeof sort === 'function';
|
|
26
|
-
|
|
27
|
-
// this will allow getting data using dot notation
|
|
28
|
-
// i.e groupBy="country.name" as country will be a nested object
|
|
29
|
-
// to the item and the name will be nested key to the country object
|
|
30
|
-
// can be used with values in arrays, i.e groupBy="addresses.0.country.name"
|
|
31
|
-
var groupByValue = (0, _get2.default)(item, key, '');
|
|
32
|
-
|
|
33
|
-
if (!tempData[groupByValue]) {
|
|
34
|
-
tempData[groupByValue] = [];
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
tempData[groupByValue].push(item);
|
|
38
|
-
});
|
|
39
|
-
var nextData = Object.entries(tempData).map(function (_ref) {
|
|
22
|
+
var groups = Object.entries(groupMap).map(function (_ref) {
|
|
40
23
|
var _ref2;
|
|
41
24
|
|
|
42
25
|
var groupTitle = _ref[0],
|
|
@@ -47,8 +30,13 @@ function getDataGroupBy(data, key, sort) {
|
|
|
47
30
|
});
|
|
48
31
|
|
|
49
32
|
if (isSort) {
|
|
50
|
-
|
|
51
|
-
}
|
|
33
|
+
groups.sort(sort(true));
|
|
34
|
+
} // Use DFS traverse
|
|
35
|
+
// Because I want the result to be [group, child, child, group, child, child]
|
|
36
|
+
// rather than [group, group, child, child, child, child]
|
|
37
|
+
|
|
52
38
|
|
|
53
|
-
return (0, _treeUtils.
|
|
39
|
+
return (0, _treeUtils.flattenTree)(groups, function (group) {
|
|
40
|
+
return group.children;
|
|
41
|
+
}, _treeUtils.WalkTreeStrategy.DFS);
|
|
54
42
|
}
|
package/cjs/utils/index.d.ts
CHANGED
|
@@ -12,7 +12,6 @@ export { default as ReactChildren } from './ReactChildren';
|
|
|
12
12
|
export { default as tplTransform } from './tplTransform';
|
|
13
13
|
export { default as ajaxUpload } from './ajaxUpload';
|
|
14
14
|
export { default as previewFile } from './previewFile';
|
|
15
|
-
export { default as getDataGroupBy } from './getDataGroupBy';
|
|
16
15
|
export { default as clone } from './clone';
|
|
17
16
|
export { default as placementPolyfill } from './placementPolyfill';
|
|
18
17
|
export { default as getDOMNode } from './getDOMNode';
|
package/cjs/utils/index.js
CHANGED
|
@@ -14,7 +14,6 @@ var _exportNames = {
|
|
|
14
14
|
tplTransform: true,
|
|
15
15
|
ajaxUpload: true,
|
|
16
16
|
previewFile: true,
|
|
17
|
-
getDataGroupBy: true,
|
|
18
17
|
clone: true,
|
|
19
18
|
placementPolyfill: true,
|
|
20
19
|
getDOMNode: true,
|
|
@@ -49,7 +48,7 @@ var _exportNames = {
|
|
|
49
48
|
DateUtils: true,
|
|
50
49
|
TypeChecker: true
|
|
51
50
|
};
|
|
52
|
-
exports.TypeChecker = exports.DateUtils = exports.globalKey = exports.getClassNamePrefix = exports.defaultClassPrefix = exports.useMount = exports.useIsMounted = exports.useUpdateEffect = exports.useWillUnmount = exports.useUpdatedRef = exports.useEventCallback = exports.stringToObject = exports.getSafeRegExpString = exports.useRootClose = exports.useControlled = exports.useTimeout = exports.createComponent = exports.usePortal = exports.useCustom = exports.useElementResize = exports.useEventListener = exports.useClassNames = exports.render = exports.appendTooltip = exports.scrollTopAnimation = exports.reactToString = exports.composeFunctions = exports.shallowEqualArray = exports.shallowEqual = exports.mergeRefs = exports.getDOMNode = exports.placementPolyfill = exports.clone = exports.
|
|
51
|
+
exports.TypeChecker = exports.DateUtils = exports.globalKey = exports.getClassNamePrefix = exports.defaultClassPrefix = exports.useMount = exports.useIsMounted = exports.useUpdateEffect = exports.useWillUnmount = exports.useUpdatedRef = exports.useEventCallback = exports.stringToObject = exports.getSafeRegExpString = exports.useRootClose = exports.useControlled = exports.useTimeout = exports.createComponent = exports.usePortal = exports.useCustom = exports.useElementResize = exports.useEventListener = exports.useClassNames = exports.render = exports.appendTooltip = exports.scrollTopAnimation = exports.reactToString = exports.composeFunctions = exports.shallowEqualArray = exports.shallowEqual = exports.mergeRefs = exports.getDOMNode = exports.placementPolyfill = exports.clone = exports.previewFile = exports.ajaxUpload = exports.tplTransform = exports.ReactChildren = exports.isOneOf = exports.createChainedFunction = exports.prefix = exports.guid = void 0;
|
|
53
52
|
|
|
54
53
|
var _BrowserDetection = require("./BrowserDetection");
|
|
55
54
|
|
|
@@ -130,10 +129,6 @@ var _previewFile = _interopRequireDefault(require("./previewFile"));
|
|
|
130
129
|
|
|
131
130
|
exports.previewFile = _previewFile.default;
|
|
132
131
|
|
|
133
|
-
var _getDataGroupBy = _interopRequireDefault(require("./getDataGroupBy"));
|
|
134
|
-
|
|
135
|
-
exports.getDataGroupBy = _getDataGroupBy.default;
|
|
136
|
-
|
|
137
132
|
var _clone = _interopRequireDefault(require("./clone"));
|
|
138
133
|
|
|
139
134
|
exports.clone = _clone.default;
|
package/cjs/utils/treeUtils.d.ts
CHANGED
|
@@ -21,7 +21,13 @@ export declare function shouldShowNodeByParentExpanded<T>(expandItemValues?: T[]
|
|
|
21
21
|
* Use {@link flattenTree} instead.
|
|
22
22
|
*/
|
|
23
23
|
export declare function UNSAFE_flattenTree<TItem>(tree: TItem[], childrenKey?: string, executor?: (node: any, index: number) => any): TItem[];
|
|
24
|
-
export declare
|
|
24
|
+
export declare enum WalkTreeStrategy {
|
|
25
|
+
DFS = 0,
|
|
26
|
+
BFS = 1
|
|
27
|
+
}
|
|
28
|
+
export declare function flattenTree<T>(rootNodes: readonly T[], getChildren: (node: T) => readonly T[] | undefined, walkStrategy?: WalkTreeStrategy): T[];
|
|
29
|
+
export declare function walkTreeBfs<T>(rootNodes: readonly T[], getChildren: (node: T) => readonly T[] | undefined, callback: (node: T) => void): void;
|
|
30
|
+
export declare function walkTreeDfs<T>(rootNodes: readonly T[], getChildren: (node: T) => readonly T[] | undefined, callback: (node: T) => void): void;
|
|
25
31
|
/**
|
|
26
32
|
* get all ancestor nodes of given node
|
|
27
33
|
* @param {*} node
|
|
@@ -293,6 +299,6 @@ export declare function getParentMap<T extends Record<string, unknown>>(items: r
|
|
|
293
299
|
*/
|
|
294
300
|
export declare function getKeyParentMap<T extends Record<string, unknown>, K = React.Key>(items: readonly T[], getKey: (item: T) => K, getChildren: (item: T) => readonly T[] | undefined): Map<K, T>;
|
|
295
301
|
/**
|
|
296
|
-
* Returns an array indicating the
|
|
302
|
+
* Returns an array indicating the hierarchy path from root towards `target` item
|
|
297
303
|
*/
|
|
298
304
|
export declare function getPathTowardsItem<T>(target: T | undefined, getParent: (item: T) => T | undefined): T[];
|