rsuite 5.69.0 → 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 (51) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/README.md +2 -2
  3. package/Table/styles/index.css +1 -1
  4. package/Table/styles/index.less +1 -1
  5. package/cjs/CascadeTree/CascadeTree.js +3 -1
  6. package/cjs/CascadeTree/SearchView.d.ts +1 -0
  7. package/cjs/CascadeTree/SearchView.js +3 -2
  8. package/cjs/CascadeTree/types.d.ts +5 -1
  9. package/cjs/Cascader/Cascader.d.ts +1 -1
  10. package/cjs/Cascader/Cascader.js +1 -0
  11. package/cjs/MultiCascadeTree/MultiCascadeTree.d.ts +1 -1
  12. package/cjs/MultiCascadeTree/MultiCascadeTree.js +4 -1
  13. package/cjs/MultiCascadeTree/SearchView.d.ts +1 -0
  14. package/cjs/MultiCascadeTree/SearchView.js +3 -2
  15. package/cjs/MultiCascadeTree/types.d.ts +5 -1
  16. package/cjs/MultiCascader/MultiCascader.d.ts +1 -1
  17. package/cjs/MultiCascader/MultiCascader.js +3 -0
  18. package/cjs/TreePicker/TreePicker.js +1 -0
  19. package/cjs/internals/hooks/useEventCallback.js +8 -1
  20. package/dist/rsuite-no-reset-rtl.css +1 -1
  21. package/dist/rsuite-no-reset-rtl.min.css +1 -1
  22. package/dist/rsuite-no-reset-rtl.min.css.map +1 -1
  23. package/dist/rsuite-no-reset.css +1 -1
  24. package/dist/rsuite-no-reset.min.css +1 -1
  25. package/dist/rsuite-no-reset.min.css.map +1 -1
  26. package/dist/rsuite-rtl.css +1 -1
  27. package/dist/rsuite-rtl.min.css +1 -1
  28. package/dist/rsuite-rtl.min.css.map +1 -1
  29. package/dist/rsuite.css +1 -1
  30. package/dist/rsuite.js +68 -57
  31. package/dist/rsuite.js.map +1 -1
  32. package/dist/rsuite.min.css +1 -1
  33. package/dist/rsuite.min.css.map +1 -1
  34. package/dist/rsuite.min.js +1 -1
  35. package/dist/rsuite.min.js.map +1 -1
  36. package/esm/CascadeTree/CascadeTree.js +3 -1
  37. package/esm/CascadeTree/SearchView.d.ts +1 -0
  38. package/esm/CascadeTree/SearchView.js +3 -2
  39. package/esm/CascadeTree/types.d.ts +5 -1
  40. package/esm/Cascader/Cascader.d.ts +1 -1
  41. package/esm/Cascader/Cascader.js +1 -0
  42. package/esm/MultiCascadeTree/MultiCascadeTree.d.ts +1 -1
  43. package/esm/MultiCascadeTree/MultiCascadeTree.js +4 -1
  44. package/esm/MultiCascadeTree/SearchView.d.ts +1 -0
  45. package/esm/MultiCascadeTree/SearchView.js +3 -2
  46. package/esm/MultiCascadeTree/types.d.ts +5 -1
  47. package/esm/MultiCascader/MultiCascader.d.ts +1 -1
  48. package/esm/MultiCascader/MultiCascader.js +3 -0
  49. package/esm/TreePicker/TreePicker.js +1 -0
  50. package/esm/internals/hooks/useEventCallback.js +8 -2
  51. package/package.json +2 -2
@@ -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,
@@ -5,5 +5,5 @@ import type { MultiCascadeTreeProps } from './types';
5
5
  * The `MultiCascadeTree` component is used to select multiple values from cascading options.
6
6
  * @see https://rsuitejs.com/components/multi-cascade-tree/
7
7
  */
8
- declare const MultiCascadeTree: React.ForwardRefExoticComponent<MultiCascadeTreeProps<DataItemValue, DataItemValue[]> & React.RefAttributes<unknown>>;
8
+ declare const MultiCascadeTree: React.ForwardRefExoticComponent<MultiCascadeTreeProps<DataItemValue, DataItemValue[], any> & React.RefAttributes<unknown>>;
9
9
  export default MultiCascadeTree;
@@ -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", "value", "valueKey", "labelKey", "childrenKey", "disabledItemValues", "cascade", "columnWidth", "columnHeight", "searchable", "uncheckableItemValues", "getChildren", "renderColumn", "renderTreeNode", "onSelect", "onCheck", "onChange", "onSearch"];
4
+ var _excluded = ["as", "data", "defaultValue", "className", "classPrefix", "value", "valueKey", "labelKey", "locale", "childrenKey", "disabledItemValues", "cascade", "columnWidth", "columnHeight", "searchable", "uncheckableItemValues", "getChildren", "renderColumn", "renderTreeNode", "onSelect", "onCheck", "onChange", "onSearch"];
5
5
  import React from 'react';
6
6
  import TreeView from "./TreeView.js";
7
7
  import { useCascadeValue, useSelect, useSearch } from "./hooks/index.js";
@@ -27,6 +27,7 @@ var MultiCascadeTree = /*#__PURE__*/React.forwardRef(function (props, ref) {
27
27
  valueKey = _props$valueKey === void 0 ? 'value' : _props$valueKey,
28
28
  _props$labelKey = props.labelKey,
29
29
  labelKey = _props$labelKey === void 0 ? 'label' : _props$labelKey,
30
+ locale = props.locale,
30
31
  _props$childrenKey = props.childrenKey,
31
32
  childrenKey = _props$childrenKey === void 0 ? 'children' : _props$childrenKey,
32
33
  _props$disabledItemVa = props.disabledItemValues,
@@ -94,11 +95,13 @@ var MultiCascadeTree = /*#__PURE__*/React.forwardRef(function (props, ref) {
94
95
  ref: ref,
95
96
  className: classes
96
97
  }, rest), searchable && /*#__PURE__*/React.createElement(SearchView, {
98
+ cascade: cascade,
97
99
  data: items,
98
100
  value: value,
99
101
  searchKeyword: searchKeyword,
100
102
  valueKey: valueKey,
101
103
  labelKey: labelKey,
104
+ locale: locale,
102
105
  childrenKey: childrenKey,
103
106
  disabledItemValues: disabledItemValues,
104
107
  onCheck: handleCheck,
@@ -9,6 +9,7 @@ interface SearchViewProps<T> extends WithAsProps {
9
9
  data: ItemDataType<T>[];
10
10
  disabledItemValues: any[];
11
11
  cascade?: boolean;
12
+ locale?: Record<string, string>;
12
13
  onSearch: (value: string, event: React.ChangeEvent<HTMLInputElement>) => void;
13
14
  onCheck: (item: ItemDataType<T>, event: React.SyntheticEvent, checked: boolean) => void;
14
15
  inputRef?: React.RefObject<HTMLInputElement>;
@@ -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", "childrenKey", "labelKey", "valueKey", "value", "data", "disabledItemValues", "inputRef", "cascade", "onSearch", "onCheck"];
4
+ var _excluded = ["as", "classPrefix", "className", "searchKeyword", "childrenKey", "labelKey", "valueKey", "value", "data", "disabledItemValues", "inputRef", "cascade", "locale", "onSearch", "onCheck"];
5
5
  import React from 'react';
6
6
  import { useClassNames, useCustom } from "../internals/hooks/index.js";
7
7
  import SearchBox from "../internals/SearchBox/index.js";
@@ -23,6 +23,7 @@ function SearchView(props) {
23
23
  disabledItemValues = props.disabledItemValues,
24
24
  inputRef = props.inputRef,
25
25
  cascade = props.cascade,
26
+ overrideLocale = props.locale,
26
27
  onSearch = props.onSearch,
27
28
  onCheck = props.onCheck,
28
29
  rest = _objectWithoutPropertiesLoose(props, _excluded);
@@ -32,7 +33,7 @@ function SearchView(props) {
32
33
  withClassPrefix = _useClassNames.withClassPrefix,
33
34
  rootPrefix = _useClassNames.rootPrefix;
34
35
  var classes = merge(className, withClassPrefix());
35
- var _useCustom = useCustom('Picker'),
36
+ var _useCustom = useCustom('Picker', overrideLocale),
36
37
  locale = _useCustom.locale;
37
38
  var renderSearchRow = function renderSearchRow(item, key) {
38
39
  var _extends2;
@@ -6,7 +6,7 @@ export interface ItemKeys {
6
6
  labelKey: string;
7
7
  childrenKey: string;
8
8
  }
9
- export interface MultiCascadeTreeProps<T, V = T[]> extends WithAsProps, CascadeTreeProps<T, V> {
9
+ export interface MultiCascadeTreeProps<T, V = T[], L = any> extends WithAsProps, CascadeTreeProps<T, V> {
10
10
  /**
11
11
  * When set to true, selecting a child node will update the state of the parent node.
12
12
  */
@@ -19,6 +19,10 @@ export interface MultiCascadeTreeProps<T, V = T[]> extends WithAsProps, CascadeT
19
19
  * Set the option value for the check box not to be rendered
20
20
  */
21
21
  uncheckableItemValues?: T[];
22
+ /**
23
+ * A collection of localized strings.
24
+ */
25
+ locale?: Partial<L>;
22
26
  /**
23
27
  * Called after the checkbox state changes.
24
28
  */
@@ -3,7 +3,7 @@ import { PickerLocale } from '../locales';
3
3
  import { PickerComponent, PickerToggleProps } from '../internals/Picker';
4
4
  import { FormControlPickerProps, ItemDataType, DataItemValue } from '../internals/types';
5
5
  import type { MultiCascadeTreeProps } from '../MultiCascadeTree';
6
- export interface MultiCascaderProps<T extends DataItemValue> extends FormControlPickerProps<T[], PickerLocale, ItemDataType<T>, T>, MultiCascadeTreeProps<T, T[]>, Pick<PickerToggleProps, 'loading'> {
6
+ export interface MultiCascaderProps<T extends DataItemValue> extends FormControlPickerProps<T[], PickerLocale, ItemDataType<T>, T>, MultiCascadeTreeProps<T, T[], PickerLocale>, Pick<PickerToggleProps, 'loading'> {
7
7
  /**
8
8
  * A picker that can be counted
9
9
  */
@@ -267,6 +267,8 @@ var MultiCascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
267
267
  target: trigger,
268
268
  onKeyDown: onPickerKeyDown
269
269
  }, searchable && /*#__PURE__*/React.createElement(SearchView, {
270
+ locale: locale,
271
+ cascade: cascade,
270
272
  data: items,
271
273
  value: value,
272
274
  searchKeyword: searchKeyword,
@@ -274,6 +276,7 @@ var MultiCascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
274
276
  labelKey: labelKey,
275
277
  childrenKey: childrenKey,
276
278
  disabledItemValues: disabledItemValues,
279
+ inputRef: searchInput,
277
280
  onCheck: handleCheck,
278
281
  onSearch: handleSearch
279
282
  }), !searchKeyword && /*#__PURE__*/React.createElement(TreeView, {
@@ -216,6 +216,7 @@ var TreePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
216
216
  searchable: searchable,
217
217
  searchKeyword: searchKeyword,
218
218
  searchBy: searchBy,
219
+ searchInputRef: searchInput,
219
220
  loadingNodeValues: loadingNodeValues,
220
221
  flattenedNodes: flattenedNodes,
221
222
  listProps: listProps,
@@ -1,5 +1,6 @@
1
1
  'use client';
2
- import { useEffect, useCallback, useRef } from 'react';
2
+ import { useCallback, useRef } from 'react';
3
+ import useIsomorphicLayoutEffect from "./useIsomorphicLayoutEffect.js";
3
4
 
4
5
  /**
5
6
  * https://github.com/facebook/react/issues/14099#issuecomment-440013892
@@ -7,7 +8,12 @@ import { useEffect, useCallback, useRef } from 'react';
7
8
  */
8
9
  export function useEventCallback(fn) {
9
10
  var ref = useRef(fn);
10
- useEffect(function () {
11
+ /**
12
+ * use useLayoutEffect instead of useEffect.
13
+ * useLayoutEffect is earlier than useEffect, sometimes we use setState and then use callback immediately,
14
+ * However the state in callback is not the latest, because useEffect is not triggered.
15
+ */
16
+ useIsomorphicLayoutEffect(function () {
11
17
  ref.current = fn;
12
18
  });
13
19
  return useCallback(function () {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rsuite",
3
- "version": "5.69.0",
3
+ "version": "5.70.0",
4
4
  "description": "A suite of react components",
5
5
  "main": "cjs/index.js",
6
6
  "module": "esm/index.js",
@@ -37,7 +37,7 @@
37
37
  "prop-types": "^15.8.1",
38
38
  "react-use-set": "^1.0.0",
39
39
  "react-window": "^1.8.8",
40
- "rsuite-table": "^5.18.3",
40
+ "rsuite-table": "^5.19.1",
41
41
  "schema-typed": "^2.2.2"
42
42
  },
43
43
  "peerDependencies": {