rsuite 5.19.0 → 5.20.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 (73) hide show
  1. package/CHANGELOG.md +30 -0
  2. package/Picker/styles/index.less +4 -0
  3. package/cjs/Animation/Transition.d.ts +2 -2
  4. package/cjs/Cascader/Cascader.js +10 -5
  5. package/cjs/Cascader/utils.d.ts +1 -0
  6. package/cjs/Cascader/utils.js +11 -1
  7. package/cjs/CheckTreePicker/CheckTreePicker.js +32 -36
  8. package/cjs/CheckTreePicker/utils.d.ts +2 -2
  9. package/cjs/CheckTreePicker/utils.js +9 -10
  10. package/cjs/DOMHelper/index.d.ts +3 -2
  11. package/cjs/DatePicker/DatePicker.js +9 -0
  12. package/cjs/DatePicker/PredefinedRanges.js +5 -0
  13. package/cjs/DateRangePicker/DateRangePicker.js +9 -7
  14. package/cjs/Form/Form.js +44 -38
  15. package/cjs/MultiCascader/MultiCascader.js +10 -5
  16. package/cjs/MultiCascader/utils.d.ts +1 -0
  17. package/cjs/MultiCascader/utils.js +10 -0
  18. package/cjs/Overlay/OverlayTrigger.d.ts +10 -1
  19. package/cjs/Overlay/OverlayTrigger.js +26 -4
  20. package/cjs/Picker/PickerToggle.d.ts +1 -0
  21. package/cjs/Picker/PickerToggle.js +24 -8
  22. package/cjs/Picker/PickerToggleTrigger.d.ts +1 -1
  23. package/cjs/Picker/PickerToggleTrigger.js +4 -2
  24. package/cjs/SelectPicker/SelectPicker.d.ts +2 -0
  25. package/cjs/TreePicker/TreePicker.d.ts +0 -1
  26. package/cjs/TreePicker/TreePicker.js +13 -14
  27. package/cjs/locales/fr_FR.d.ts +105 -0
  28. package/cjs/locales/fr_FR.js +84 -0
  29. package/cjs/locales/index.d.ts +1 -0
  30. package/cjs/locales/index.js +6 -2
  31. package/cjs/utils/treeUtils.d.ts +7 -1
  32. package/cjs/utils/treeUtils.js +24 -5
  33. package/dist/rsuite-rtl.css +3 -0
  34. package/dist/rsuite-rtl.min.css +1 -1
  35. package/dist/rsuite-rtl.min.css.map +1 -1
  36. package/dist/rsuite.css +3 -0
  37. package/dist/rsuite.js +64 -64
  38. package/dist/rsuite.min.css +1 -1
  39. package/dist/rsuite.min.css.map +1 -1
  40. package/dist/rsuite.min.js +1 -1
  41. package/dist/rsuite.min.js.map +1 -1
  42. package/esm/Animation/Transition.d.ts +2 -2
  43. package/esm/Cascader/Cascader.js +10 -5
  44. package/esm/Cascader/utils.d.ts +1 -0
  45. package/esm/Cascader/utils.js +11 -1
  46. package/esm/CheckTreePicker/CheckTreePicker.js +34 -37
  47. package/esm/CheckTreePicker/utils.d.ts +2 -2
  48. package/esm/CheckTreePicker/utils.js +11 -12
  49. package/esm/DOMHelper/index.d.ts +3 -2
  50. package/esm/DatePicker/DatePicker.js +8 -0
  51. package/esm/DatePicker/PredefinedRanges.js +5 -0
  52. package/esm/DateRangePicker/DateRangePicker.js +9 -7
  53. package/esm/Form/Form.js +44 -38
  54. package/esm/MultiCascader/MultiCascader.js +10 -5
  55. package/esm/MultiCascader/utils.d.ts +1 -0
  56. package/esm/MultiCascader/utils.js +10 -0
  57. package/esm/Overlay/OverlayTrigger.d.ts +10 -1
  58. package/esm/Overlay/OverlayTrigger.js +23 -3
  59. package/esm/Picker/PickerToggle.d.ts +1 -0
  60. package/esm/Picker/PickerToggle.js +22 -8
  61. package/esm/Picker/PickerToggleTrigger.d.ts +1 -1
  62. package/esm/Picker/PickerToggleTrigger.js +4 -2
  63. package/esm/SelectPicker/SelectPicker.d.ts +2 -0
  64. package/esm/TreePicker/TreePicker.d.ts +0 -1
  65. package/esm/TreePicker/TreePicker.js +13 -13
  66. package/esm/locales/fr_FR.d.ts +105 -0
  67. package/esm/locales/fr_FR.js +74 -0
  68. package/esm/locales/index.d.ts +1 -0
  69. package/esm/locales/index.js +2 -1
  70. package/esm/utils/treeUtils.d.ts +7 -1
  71. package/esm/utils/treeUtils.js +22 -5
  72. package/locales/fr_FR/package.json +7 -0
  73. package/package.json +7 -7
@@ -103,6 +103,7 @@ var MultiCascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
103
103
  columnData = _useColumnData.columnData,
104
104
  setColumnData = _useColumnData.setColumnData,
105
105
  addColumn = _useColumnData.addColumn,
106
+ romoveColumnByIndex = _useColumnData.romoveColumnByIndex,
106
107
  enforceUpdateColumnData = _useColumnData.enforceUpdateColumnData;
107
108
 
108
109
  useUpdateEffect(function () {
@@ -186,7 +187,8 @@ var MultiCascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
186
187
  var _node$childrenKey, _node$childrenKey2, _triggerRef$current, _triggerRef$current$u;
187
188
 
188
189
  setSelectedPaths(cascadePaths);
189
- onSelect === null || onSelect === void 0 ? void 0 : onSelect(node, cascadePaths, event); // Lazy load node's children
190
+ onSelect === null || onSelect === void 0 ? void 0 : onSelect(node, cascadePaths, event);
191
+ var columnIndex = cascadePaths.length; // Lazy load node's children
190
192
 
191
193
  if (typeof getChildren === 'function' && ((_node$childrenKey = node[childrenKey]) === null || _node$childrenKey === void 0 ? void 0 : _node$childrenKey.length) === 0) {
192
194
  node.loading = true;
@@ -199,21 +201,24 @@ var MultiCascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
199
201
 
200
202
  if (targetRef.current) {
201
203
  addFlattenData(data, node);
202
- addColumn(data, cascadePaths.length);
204
+ addColumn(data, columnIndex);
203
205
  }
204
206
  });
205
207
  } else {
206
208
  node.loading = false;
207
209
  node[childrenKey] = children;
208
210
  addFlattenData(children, node);
209
- addColumn(children, cascadePaths.length);
211
+ addColumn(children, columnIndex);
210
212
  }
211
213
  } else if ((_node$childrenKey2 = node[childrenKey]) !== null && _node$childrenKey2 !== void 0 && _node$childrenKey2.length) {
212
- addColumn(node[childrenKey], cascadePaths.length);
214
+ addColumn(node[childrenKey], columnIndex);
215
+ } else {
216
+ // Removes subsequent columns of the current column when the clicked node is a leaf node.
217
+ romoveColumnByIndex(columnIndex);
213
218
  }
214
219
 
215
220
  (_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);
216
- }, [onSelect, getChildren, childrenKey, addColumn, addFlattenData]);
221
+ }, [onSelect, getChildren, childrenKey, addFlattenData, addColumn, romoveColumnByIndex]);
217
222
  var handleCheck = useCallback(function (node, event, checked) {
218
223
  var nodeValue = node[valueKey];
219
224
  var nextValue = [];
@@ -48,6 +48,7 @@ export declare function useFlattenData(data: ItemDataType[], itemKeys: ItemKeys)
48
48
  export declare function useColumnData(flattenData: ItemType[]): {
49
49
  columnData: ItemDataType<string | number>[][];
50
50
  addColumn: (column: ItemDataType[], index: number) => void;
51
+ romoveColumnByIndex: (index: number) => void;
51
52
  setColumnData: import("react").Dispatch<import("react").SetStateAction<ItemDataType<string | number>[][]>>;
52
53
  enforceUpdateColumnData: (nextData: ItemDataType[]) => void;
53
54
  };
@@ -203,6 +203,15 @@ export function useColumnData(flattenData) {
203
203
  function addColumn(column, index) {
204
204
  setColumnData([].concat(slice(columnData, 0, index), [column]));
205
205
  }
206
+ /**
207
+ * Remove subsequent columns of the specified column
208
+ * @param index
209
+ */
210
+
211
+
212
+ function romoveColumnByIndex(index) {
213
+ setColumnData([].concat(slice(columnData, 0, index)));
214
+ }
206
215
 
207
216
  function enforceUpdateColumnData(nextData) {
208
217
  var nextFlattenData = flattenTree(nextData);
@@ -214,6 +223,7 @@ export function useColumnData(flattenData) {
214
223
  return {
215
224
  columnData: columnData,
216
225
  addColumn: addColumn,
226
+ romoveColumnByIndex: romoveColumnByIndex,
217
227
  setColumnData: setColumnData,
218
228
  enforceUpdateColumnData: enforceUpdateColumnData
219
229
  };
@@ -59,10 +59,19 @@ export interface OverlayTriggerProps extends StandardProps, AnimationEventProps
59
59
  /** Callback fired when open component */
60
60
  onOpen?: () => void;
61
61
  /** Callback fired when close component */
62
- onClose?: () => void;
62
+ onClose?: (cause?: OverlayCloseCause) => void;
63
63
  /** Whether speaker to follow the cursor */
64
64
  followCursor?: boolean;
65
65
  }
66
+ /**
67
+ * The reason that triggers closing of an overlay
68
+ * - Clicking outside of the overlay
69
+ * - Direct invocation of triggerRef.current.close()
70
+ */
71
+ export declare enum OverlayCloseCause {
72
+ ClickOutside = 0,
73
+ ImperativeHandle = 1
74
+ }
66
75
  export interface OverlayTriggerInstance {
67
76
  root: HTMLElement | undefined;
68
77
  updatePosition: () => void;
@@ -30,6 +30,12 @@ function mergeEvents(events, props) {
30
30
  return nextEvents;
31
31
  }
32
32
 
33
+ /**
34
+ * The reason that triggers closing of an overlay
35
+ * - Clicking outside of the overlay
36
+ * - Direct invocation of triggerRef.current.close()
37
+ */
38
+ export var OverlayCloseCause;
33
39
  /**
34
40
  * Useful for mouseover and mouseout.
35
41
  * In order to resolve the node entering the mouseover element, a mouseout event and a mouseover event will be triggered.
@@ -37,6 +43,12 @@ function mergeEvents(events, props) {
37
43
  * @param handler
38
44
  * @param event
39
45
  */
46
+
47
+ (function (OverlayCloseCause) {
48
+ OverlayCloseCause[OverlayCloseCause["ClickOutside"] = 0] = "ClickOutside";
49
+ OverlayCloseCause[OverlayCloseCause["ImperativeHandle"] = 1] = "ImperativeHandle";
50
+ })(OverlayCloseCause || (OverlayCloseCause = {}));
51
+
40
52
  function onMouseEventHandler(handler, event, delay) {
41
53
  var target = event.currentTarget;
42
54
  var related = event.relatedTarget || get(event, ['nativeEvent', 'toElement']);
@@ -133,17 +145,19 @@ var OverlayTrigger = /*#__PURE__*/React.forwardRef(function (props, ref) {
133
145
 
134
146
  setOpen(true);
135
147
  }, [delayOpen, setOpen]);
136
- var handleClose = useCallback(function (delay) {
148
+ var handleClose = useCallback(function (delay, callback) {
137
149
  var ms = _isUndefined(delay) ? delayClose : delay;
138
150
 
139
151
  if (ms && typeof ms === 'number') {
140
152
  return delayCloseTimer.current = setTimeout(function () {
141
153
  delayCloseTimer.current = null;
142
154
  setOpen(false);
155
+ callback === null || callback === void 0 ? void 0 : callback();
143
156
  }, ms);
144
157
  }
145
158
 
146
159
  setOpen(false);
160
+ callback === null || callback === void 0 ? void 0 : callback();
147
161
  }, [delayClose, setOpen]);
148
162
  var handleExited = useCallback(function () {
149
163
  setCursorPosition(null);
@@ -161,7 +175,11 @@ var OverlayTrigger = /*#__PURE__*/React.forwardRef(function (props, ref) {
161
175
  },
162
176
 
163
177
  open: handleOpen,
164
- close: handleClose,
178
+ close: function close(delay) {
179
+ return handleClose(delay, function () {
180
+ return onClose === null || onClose === void 0 ? void 0 : onClose(OverlayCloseCause.ImperativeHandle);
181
+ });
182
+ },
165
183
  updatePosition: function updatePosition() {
166
184
  var _overlayRef$current2, _overlayRef$current2$;
167
185
 
@@ -322,7 +340,9 @@ var OverlayTrigger = /*#__PURE__*/React.forwardRef(function (props, ref) {
322
340
  var overlayProps = _extends({}, rest, {
323
341
  rootClose: rootClose,
324
342
  triggerTarget: triggerRef,
325
- onClose: trigger !== 'none' ? createChainedFunction(handleClose, onClose) : undefined,
343
+ onClose: trigger !== 'none' ? createChainedFunction(handleClose, function () {
344
+ return onClose === null || onClose === void 0 ? void 0 : onClose(OverlayCloseCause.ClickOutside);
345
+ }) : undefined,
326
346
  onExited: createChainedFunction(followCursor ? handleExited : undefined, onExited),
327
347
  placement: placement,
328
348
  container: container,
@@ -15,6 +15,7 @@ export interface PickerToggleProps extends ToggleButtonProps {
15
15
  readOnly?: boolean;
16
16
  plaintext?: boolean;
17
17
  tabIndex?: number;
18
+ loading?: boolean;
18
19
  editable?: boolean;
19
20
  inputPlaceholder?: string;
20
21
  inputMask?: (string | RegExp)[];
@@ -14,6 +14,8 @@ import Plaintext from '../Plaintext';
14
14
  import useToggleCaret from '../utils/useToggleCaret';
15
15
  import TextMask from '../MaskedInput/TextMask';
16
16
  import deprecatePropType from '../utils/deprecatePropType';
17
+ import Loader from '../Loader';
18
+ import Stack from '../Stack';
17
19
  var defaultInputMask = [];
18
20
  var PickerToggle = /*#__PURE__*/React.forwardRef(function (props, ref) {
19
21
  var activeProp = props.active,
@@ -30,6 +32,8 @@ var PickerToggle = /*#__PURE__*/React.forwardRef(function (props, ref) {
30
32
  plaintext = props.plaintext,
31
33
  hasValue = props.hasValue,
32
34
  editable = props.editable,
35
+ _props$loading = props.loading,
36
+ loading = _props$loading === void 0 ? false : _props$loading,
33
37
  cleanableProp = props.cleanable,
34
38
  _props$tabIndex = props.tabIndex,
35
39
  tabIndexProp = _props$tabIndex === void 0 ? editable ? -1 : 0 : _props$tabIndex,
@@ -52,7 +56,7 @@ var PickerToggle = /*#__PURE__*/React.forwardRef(function (props, ref) {
52
56
  _props$caretAs = props.caretAs,
53
57
  caretAs = _props$caretAs === void 0 ? caretComponent : _props$caretAs,
54
58
  label = props.label,
55
- rest = _objectWithoutPropertiesLoose(props, ["active", "as", "classPrefix", "children", "caret", "className", "disabled", "readOnly", "plaintext", "hasValue", "editable", "cleanable", "tabIndex", "id", "value", "inputPlaceholder", "inputValue", "inputMask", "onInputChange", "onInputPressEnter", "onInputBlur", "onInputFocus", "onClean", "onFocus", "onBlur", "placement", "caretComponent", "caretAs", "label"]);
59
+ rest = _objectWithoutPropertiesLoose(props, ["active", "as", "classPrefix", "children", "caret", "className", "disabled", "readOnly", "plaintext", "hasValue", "editable", "loading", "cleanable", "tabIndex", "id", "value", "inputPlaceholder", "inputValue", "inputMask", "onInputChange", "onInputPressEnter", "onInputBlur", "onInputFocus", "onClean", "onFocus", "onBlur", "placement", "caretComponent", "caretAs", "label"]);
56
60
 
57
61
  var inputRef = useRef(null);
58
62
  var comboboxRef = useRef(null);
@@ -85,7 +89,9 @@ var PickerToggle = /*#__PURE__*/React.forwardRef(function (props, ref) {
85
89
  active: activeProp || activeState
86
90
  }));
87
91
  var handleFocus = useCallback(function (event) {
88
- setActive(true);
92
+ if (!loading) {
93
+ setActive(true);
94
+ }
89
95
 
90
96
  if (editable) {
91
97
  // Avoid firing the onFocus event twice when DatePicker and DateRangePicker allow keyboard input.
@@ -102,7 +108,7 @@ var PickerToggle = /*#__PURE__*/React.forwardRef(function (props, ref) {
102
108
  } else {
103
109
  onFocus === null || onFocus === void 0 ? void 0 : onFocus(event);
104
110
  }
105
- }, [editable, onFocus]);
111
+ }, [editable, loading, onFocus]);
106
112
  var handleBlur = useCallback(function (event) {
107
113
  if (inputRef.current && !editable) {
108
114
  setActive(false);
@@ -177,7 +183,17 @@ var PickerToggle = /*#__PURE__*/React.forwardRef(function (props, ref) {
177
183
  onFocus: !disabled ? handleFocus : null // The debounce is set to 200 to solve the flicker caused by the switch between input and div.
178
184
  ,
179
185
  onBlur: !disabled ? debounce(handleBlur, 200) : null
180
- }), /*#__PURE__*/React.createElement(TextMask, {
186
+ }), /*#__PURE__*/React.createElement(Stack, null, label && /*#__PURE__*/React.createElement(Stack.Item, null, /*#__PURE__*/React.createElement("span", {
187
+ className: prefix('label')
188
+ }, label)), /*#__PURE__*/React.createElement(Stack.Item, {
189
+ grow: 1
190
+ }, loading ? /*#__PURE__*/React.createElement(Loader, {
191
+ style: {
192
+ display: 'block',
193
+ padding: '1px 0'
194
+ },
195
+ "data-testid": "spinner"
196
+ }) : /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(TextMask, {
181
197
  mask: inputMask,
182
198
  value: Array.isArray(inputValue) ? inputValue.toString() : inputValue,
183
199
  onBlur: handleInputBlur,
@@ -198,9 +214,7 @@ var PickerToggle = /*#__PURE__*/React.forwardRef(function (props, ref) {
198
214
  }), children ? /*#__PURE__*/React.createElement("span", {
199
215
  className: prefix(hasValue ? 'value' : 'placeholder'),
200
216
  "aria-placeholder": typeof children === 'string' ? children : undefined
201
- }, label && /*#__PURE__*/React.createElement("span", {
202
- className: prefix('label')
203
- }, label), children) : null, showCleanButton && /*#__PURE__*/React.createElement(CloseButton, {
217
+ }, children) : null)), showCleanButton && /*#__PURE__*/React.createElement(CloseButton, {
204
218
  className: prefix(_templateObject || (_templateObject = _taggedTemplateLiteralLoose(["clean"]))),
205
219
  tabIndex: -1,
206
220
  locale: {
@@ -209,7 +223,7 @@ var PickerToggle = /*#__PURE__*/React.forwardRef(function (props, ref) {
209
223
  onClick: handleClean
210
224
  }), caret && /*#__PURE__*/React.createElement(Caret, {
211
225
  className: prefix(_templateObject2 || (_templateObject2 = _taggedTemplateLiteralLoose(["caret"])))
212
- }));
226
+ })));
213
227
  });
214
228
  PickerToggle.displayName = 'PickerToggle';
215
229
  PickerToggle.propTypes = {
@@ -3,7 +3,7 @@ import { OverlayTriggerInstance, OverlayTriggerProps, OverlayTriggerType } from
3
3
  import { PositionChildProps } from '../Overlay/Position';
4
4
  import { TypeAttributes, AnimationEventProps } from '../@types/common';
5
5
  export type { OverlayTriggerInstance, PositionChildProps };
6
- export interface PickerToggleTriggerProps extends Omit<AnimationEventProps, 'onEntering' | 'onExiting'>, Pick<OverlayTriggerProps, 'speaker'> {
6
+ export interface PickerToggleTriggerProps extends Omit<AnimationEventProps, 'onEntering' | 'onExiting'>, Pick<OverlayTriggerProps, 'speaker' | 'onClose'> {
7
7
  placement?: TypeAttributes.Placement;
8
8
  pickerProps: any;
9
9
  open?: boolean;
@@ -6,7 +6,7 @@ import OverlayTrigger from '../Overlay/OverlayTrigger';
6
6
  import { placementPolyfill } from '../utils';
7
7
  import { CustomConsumer } from '../CustomProvider';
8
8
  export var omitTriggerPropKeys = ['onEntered', 'onExited', 'onEnter', 'onEntering', 'onExit', 'onExiting', 'open', 'defaultOpen', 'onHide', 'container', 'containerPadding', 'preventOverflow'];
9
- export var pickTriggerPropKeys = [].concat(omitTriggerPropKeys, ['disabled', 'plaintext', 'readOnly']);
9
+ export var pickTriggerPropKeys = [].concat(omitTriggerPropKeys, ['disabled', 'plaintext', 'readOnly', 'loading']);
10
10
  var PickerToggleTrigger = /*#__PURE__*/React.forwardRef(function (props, ref) {
11
11
  var pickerProps = props.pickerProps,
12
12
  speaker = props.speaker,
@@ -15,8 +15,10 @@ var PickerToggleTrigger = /*#__PURE__*/React.forwardRef(function (props, ref) {
15
15
  trigger = _props$trigger === void 0 ? 'click' : _props$trigger,
16
16
  rest = _objectWithoutPropertiesLoose(props, ["pickerProps", "speaker", "placement", "trigger"]);
17
17
 
18
+ var pickerTriggerProps = pick(pickerProps, pickTriggerPropKeys);
18
19
  return /*#__PURE__*/React.createElement(CustomConsumer, null, function (context) {
19
- return /*#__PURE__*/React.createElement(OverlayTrigger, _extends({}, rest, pick(pickerProps, pickTriggerPropKeys), {
20
+ return /*#__PURE__*/React.createElement(OverlayTrigger, _extends({}, rest, pickerTriggerProps, {
21
+ disabled: pickerTriggerProps.disabled || pickerTriggerProps.loading,
20
22
  ref: ref,
21
23
  trigger: trigger,
22
24
  placement: placementPolyfill(placement, context === null || context === void 0 ? void 0 : context.rtl),
@@ -6,6 +6,8 @@ import { FormControlPickerProps, ItemDataType } from '../@types/common';
6
6
  export interface SelectProps<T> {
7
7
  /** Set group condition key in data */
8
8
  groupBy?: string;
9
+ /** Whether to display an loading indicator on toggle button */
10
+ loading?: boolean;
9
11
  /** Whether dispaly search input box */
10
12
  searchable?: boolean;
11
13
  /** Whether using virtualized list */
@@ -3,7 +3,6 @@ import { PickerLocale } from '../locales';
3
3
  import { PickerComponent, PickerToggleProps } from '../Picker';
4
4
  import { TreeDragProps, TreeBaseProps } from '../Tree/Tree';
5
5
  import { FormControlPickerProps, ItemDataType } from '../@types/common';
6
- export declare const maxTreeHeight = 320;
7
6
  export interface TreePickerProps<T = number | string> extends TreeBaseProps<T, ItemDataType>, TreeDragProps, FormControlPickerProps<T, PickerLocale, ItemDataType>, Pick<PickerToggleProps, 'caretAs'> {
8
7
  /** The height of Dropdown */
9
8
  height?: number;
@@ -13,9 +13,7 @@ import { getTreeNodeIndent } from '../utils/treeUtils';
13
13
  import { createChainedFunction, useClassNames, useCustom, useControlled, TREE_NODE_DROP_POSITION, KEY_VALUES, mergeRefs, shallowEqual } from '../utils';
14
14
  import { getExpandWhenSearching, hasVisibleChildren, getDragNodeKeys, calDropNodePosition, createUpdateTreeDataFunction, useTreeDrag, useFlattenTreeData, getTreeActiveNode, getDefaultExpandItemValues, useTreeNodeRefs, useTreeSearch, focusPreviousItem, getFocusableItems, focusNextItem, getActiveItem, toggleExpand, useGetTreeNodeChildren, focusToActiveTreeNode, leftArrowHandler, focusTreeNode, rightArrowHandler, isSearching } from '../utils/treeUtils';
15
15
  import { PickerToggle, PickerOverlay, SearchBar, PickerToggleTrigger, createConcatChildrenFunction, usePickerClassName, onMenuKeyDown as _onMenuKeyDown, usePublicMethods, listPickerPropTypes, pickTriggerPropKeys, omitTriggerPropKeys, useToggleKeyDownEvent } from '../Picker';
16
- import TreeContext from '../Tree/TreeContext'; // default value for virtualized
17
-
18
- export var maxTreeHeight = 320;
16
+ import TreeContext from '../Tree/TreeContext';
19
17
  var emptyArray = [];
20
18
  var TreePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
21
19
  var _props$as = props.as,
@@ -30,13 +28,15 @@ var TreePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
30
28
  overrideLocale = props.locale,
31
29
  _props$height = props.height,
32
30
  height = _props$height === void 0 ? 360 : _props$height,
31
+ _props$menuMaxHeight = props.menuMaxHeight,
32
+ menuMaxHeight = _props$menuMaxHeight === void 0 ? 320 : _props$menuMaxHeight,
33
+ menuStyle = props.menuStyle,
33
34
  className = props.className,
34
35
  disabled = props.disabled,
35
36
  _props$placement = props.placement,
36
37
  placement = _props$placement === void 0 ? 'bottomStart' : _props$placement,
37
38
  _props$cleanable = props.cleanable,
38
39
  cleanable = _props$cleanable === void 0 ? true : _props$cleanable,
39
- menuStyle = props.menuStyle,
40
40
  _props$searchable = props.searchable,
41
41
  searchable = _props$searchable === void 0 ? true : _props$searchable,
42
42
  _props$virtualized = props.virtualized,
@@ -89,7 +89,7 @@ var TreePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
89
89
  renderExtraFooter = props.renderExtraFooter,
90
90
  renderMenu = props.renderMenu,
91
91
  renderValue = props.renderValue,
92
- rest = _objectWithoutPropertiesLoose(props, ["as", "data", "appearance", "style", "showIndentLine", "value", "locale", "height", "className", "disabled", "placement", "cleanable", "menuStyle", "searchable", "virtualized", "classPrefix", "defaultValue", "placeholder", "searchKeyword", "menuClassName", "menuAutoWidth", "searchBy", "toggleAs", "labelKey", "valueKey", "childrenKey", "draggable", "defaultExpandAll", "disabledItemValues", "expandItemValues", "defaultExpandItemValues", "id", "listProps", "getChildren", "renderTreeIcon", "renderTreeNode", "onExit", "onExited", "onClean", "onOpen", "onSearch", "onSelect", "onChange", "onEntered", "onClose", "onDragEnd", "onDragStart", "onDragEnter", "onDragLeave", "onDragOver", "onDrop", "onExpand", "renderExtraFooter", "renderMenu", "renderValue"]);
92
+ rest = _objectWithoutPropertiesLoose(props, ["as", "data", "appearance", "style", "showIndentLine", "value", "locale", "height", "menuMaxHeight", "menuStyle", "className", "disabled", "placement", "cleanable", "searchable", "virtualized", "classPrefix", "defaultValue", "placeholder", "searchKeyword", "menuClassName", "menuAutoWidth", "searchBy", "toggleAs", "labelKey", "valueKey", "childrenKey", "draggable", "defaultExpandAll", "disabledItemValues", "expandItemValues", "defaultExpandItemValues", "id", "listProps", "getChildren", "renderTreeIcon", "renderTreeNode", "onExit", "onExited", "onClean", "onOpen", "onSearch", "onSelect", "onChange", "onEntered", "onClose", "onDragEnd", "onDragStart", "onDragEnter", "onDragLeave", "onDragOver", "onDrop", "onExpand", "renderExtraFooter", "renderMenu", "renderValue"]);
93
93
 
94
94
  var triggerRef = useRef(null);
95
95
  var targetRef = useRef(null);
@@ -478,13 +478,16 @@ var TreePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
478
478
  var nullValue = null;
479
479
  var target = event.target; // exclude searchBar
480
480
 
481
- if (target.matches('div[role="searchbox"] > input')) {
481
+ if (target.matches('div[role="searchbox"] > input') || disabled || !cleanable) {
482
482
  return;
483
483
  }
484
484
 
485
- setValue(null);
485
+ if (!isControlled) {
486
+ setValue(null);
487
+ }
488
+
486
489
  onChange === null || onChange === void 0 ? void 0 : onChange(nullValue, event);
487
- }, [onChange, setValue]);
490
+ }, [cleanable, disabled, onChange, setValue, isControlled]);
488
491
  var onPickerKeydown = useToggleKeyDownEvent(_extends({
489
492
  toggle: !activeNode || !active,
490
493
  triggerRef: triggerRef,
@@ -622,7 +625,7 @@ var TreePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
622
625
  }, /*#__PURE__*/React.createElement("div", {
623
626
  className: treePrefix('nodes')
624
627
  }, virtualized ? /*#__PURE__*/React.createElement(AutoSizer, {
625
- defaultHeight: inline ? height : maxTreeHeight,
628
+ defaultHeight: inline ? height : menuMaxHeight,
626
629
  style: {
627
630
  width: 'auto',
628
631
  height: 'auto'
@@ -653,13 +656,10 @@ var TreePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
653
656
  top: top
654
657
  });
655
658
 
656
- var styles = virtualized ? _extends({
657
- height: height
658
- }, mergedMenuStyle) : _extends({}, mergedMenuStyle);
659
659
  return /*#__PURE__*/React.createElement(PickerOverlay, {
660
660
  autoWidth: menuAutoWidth,
661
661
  className: classes,
662
- style: styles,
662
+ style: mergedMenuStyle,
663
663
  ref: mergeRefs(overlayRef, speakerRef),
664
664
  onKeyDown: onPickerKeydown,
665
665
  target: triggerRef
@@ -0,0 +1,105 @@
1
+ declare const _default: {
2
+ common: {
3
+ loading: string;
4
+ emptyMessage: string;
5
+ };
6
+ Plaintext: {
7
+ unfilled: string;
8
+ notSelected: string;
9
+ notUploaded: string;
10
+ };
11
+ Pagination: {
12
+ more: string;
13
+ prev: string;
14
+ next: string;
15
+ first: string;
16
+ last: string;
17
+ limit: string;
18
+ total: string;
19
+ skip: string;
20
+ };
21
+ Calendar: {
22
+ sunday: string;
23
+ monday: string;
24
+ tuesday: string;
25
+ wednesday: string;
26
+ thursday: string;
27
+ friday: string;
28
+ saturday: string;
29
+ ok: string;
30
+ today: string;
31
+ yesterday: string;
32
+ hours: string;
33
+ minutes: string;
34
+ seconds: string;
35
+ formattedMonthPattern: string;
36
+ formattedDayPattern: string;
37
+ dateLocale: any;
38
+ };
39
+ DatePicker: {
40
+ sunday: string;
41
+ monday: string;
42
+ tuesday: string;
43
+ wednesday: string;
44
+ thursday: string;
45
+ friday: string;
46
+ saturday: string;
47
+ ok: string;
48
+ today: string;
49
+ yesterday: string;
50
+ hours: string;
51
+ minutes: string;
52
+ seconds: string;
53
+ formattedMonthPattern: string;
54
+ formattedDayPattern: string;
55
+ dateLocale: any;
56
+ };
57
+ DateRangePicker: {
58
+ last7Days: string;
59
+ sunday: string;
60
+ monday: string;
61
+ tuesday: string;
62
+ wednesday: string;
63
+ thursday: string;
64
+ friday: string;
65
+ saturday: string;
66
+ ok: string;
67
+ today: string;
68
+ yesterday: string;
69
+ hours: string;
70
+ minutes: string;
71
+ seconds: string;
72
+ formattedMonthPattern: string;
73
+ formattedDayPattern: string;
74
+ dateLocale: any;
75
+ };
76
+ Picker: {
77
+ noResultsText: string;
78
+ placeholder: string;
79
+ searchPlaceholder: string;
80
+ checkAll: string;
81
+ };
82
+ InputPicker: {
83
+ newItem: string;
84
+ createOption: string;
85
+ };
86
+ Uploader: {
87
+ inited: string;
88
+ progress: string;
89
+ error: string;
90
+ complete: string;
91
+ emptyFile: string;
92
+ upload: string;
93
+ };
94
+ CloseButton: {
95
+ closeLabel: string;
96
+ };
97
+ Breadcrumb: {
98
+ expandText: string;
99
+ };
100
+ Toggle: {
101
+ on: string;
102
+ off: string;
103
+ };
104
+ };
105
+ export default _default;
@@ -0,0 +1,74 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
2
+ import fr from 'date-fns/locale/fr';
3
+ var Calendar = {
4
+ sunday: 'Di',
5
+ monday: 'Lu',
6
+ tuesday: 'Ma',
7
+ wednesday: 'Me',
8
+ thursday: 'Je',
9
+ friday: 'Ve',
10
+ saturday: 'Sa',
11
+ ok: 'OK',
12
+ today: "Aujourd'hui",
13
+ yesterday: 'Hier',
14
+ hours: 'Heures',
15
+ minutes: 'Minutes',
16
+ seconds: 'Secondes',
17
+ formattedMonthPattern: 'MMM yyyy',
18
+ formattedDayPattern: 'dd MMM yyyy',
19
+ dateLocale: fr
20
+ };
21
+ export default {
22
+ common: {
23
+ loading: 'Chargement...',
24
+ emptyMessage: 'Aucune donnée trouvée'
25
+ },
26
+ Plaintext: {
27
+ unfilled: 'Non rempli',
28
+ notSelected: 'Non sélectionné',
29
+ notUploaded: 'Non uploadé'
30
+ },
31
+ Pagination: {
32
+ more: 'Plus',
33
+ prev: 'Précédent',
34
+ next: 'Suivant',
35
+ first: 'Premier',
36
+ last: 'Dernier',
37
+ limit: '{0} / page',
38
+ total: 'Lignes totales: {0}',
39
+ skip: 'Aller à{0}'
40
+ },
41
+ Calendar: Calendar,
42
+ DatePicker: _extends({}, Calendar),
43
+ DateRangePicker: _extends({}, Calendar, {
44
+ last7Days: '7 Derniers Jours'
45
+ }),
46
+ Picker: {
47
+ noResultsText: 'Aucun résultat trouvé',
48
+ placeholder: 'Sélectionner',
49
+ searchPlaceholder: 'Rechercher',
50
+ checkAll: 'Tous'
51
+ },
52
+ InputPicker: {
53
+ newItem: 'Nouvel item',
54
+ createOption: 'Option de création "{0}"'
55
+ },
56
+ Uploader: {
57
+ inited: 'Initial',
58
+ progress: 'Chargement',
59
+ error: 'Erreur',
60
+ complete: 'Terminé',
61
+ emptyFile: 'Vide',
62
+ upload: 'Uploader'
63
+ },
64
+ CloseButton: {
65
+ closeLabel: 'Fermer'
66
+ },
67
+ Breadcrumb: {
68
+ expandText: 'Afficher le chemin'
69
+ },
70
+ Toggle: {
71
+ on: 'Ouvrir',
72
+ off: 'Fermer'
73
+ }
74
+ };
@@ -15,6 +15,7 @@ export { default as svSE } from './sv_SE';
15
15
  export { default as zhCN } from './zh_CN';
16
16
  export { default as zhTw } from './zh_TW';
17
17
  export { default as faIR } from './fa_IR';
18
+ export { default as frFR } from './fr_FR';
18
19
  declare type PickKeys<T> = {
19
20
  [keys in keyof T]?: T[keys];
20
21
  };
@@ -13,4 +13,5 @@ export { default as ruRU } from './ru_RU';
13
13
  export { default as svSE } from './sv_SE';
14
14
  export { default as zhCN } from './zh_CN';
15
15
  export { default as zhTw } from './zh_TW';
16
- export { default as faIR } from './fa_IR';
16
+ export { default as faIR } from './fa_IR';
17
+ export { default as frFR } from './fr_FR';
@@ -190,7 +190,7 @@ interface UnSerializeListProps {
190
190
  export declare function useFlattenTreeData({ data, labelKey, valueKey, childrenKey, uncheckableItemValues, callback }: FlattenTreeDataProps): {
191
191
  forceUpdate: () => void;
192
192
  flattenNodes: TreeNodesType;
193
- flattenTreeData: (treeData: TreeNodeType[], ref: string, parent?: TreeNodeType, layer?: any) => never[] | undefined;
193
+ flattenTreeData: (treeData: TreeNodeType[], parent?: TreeNodeType, layer?: any) => never[] | undefined;
194
194
  serializeListOnlyParent: (nodes: TreeNodesType, key: string) => (string | number)[];
195
195
  unSerializeList: ({ nodes, key, value, cascade, uncheckableItemValues }: UnSerializeListProps) => void;
196
196
  formatVirtualizedTreeData: (nodes: TreeNodesType, data: any[], expandItemValues: ItemDataType[], options: {
@@ -248,3 +248,9 @@ export declare function isSearching(searchKeyword?: string): boolean;
248
248
  export declare function getTreeNodeIndent(rtl: any, layer: any, absolute?: boolean): {
249
249
  [x: string]: number;
250
250
  };
251
+ /**
252
+ * according to the value type to get the formatted valueKey of the node
253
+ * @param value
254
+ * @returns
255
+ */
256
+ export declare function getNodeFormattedRefKey(value: string | number): string;