@apdesign/web-react 1.4.3 → 1.5.1

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.
@@ -2,12 +2,12 @@ import React from 'react';
2
2
  import Group from './group';
3
3
  import { ButtonProps } from './interface';
4
4
  declare const ButtonComponent: React.ForwardRefExoticComponent<Partial<{
5
- htmlType?: "button" | "submit" | "reset";
6
- } & import("./interface").BaseButtonProps & Omit<React.ButtonHTMLAttributes<any>, "className" | "type" | "onClick"> & {
5
+ htmlType?: "button" | "reset" | "submit";
6
+ } & import("./interface").BaseButtonProps & Omit<React.ButtonHTMLAttributes<any>, "className" | "onClick" | "type"> & {
7
7
  href: string;
8
8
  target?: string;
9
9
  anchorProps?: React.HTMLProps<HTMLAnchorElement>;
10
- } & Omit<React.AnchorHTMLAttributes<any>, "className" | "type" | "onClick">> & React.RefAttributes<unknown>> & {
10
+ } & Omit<React.AnchorHTMLAttributes<any>, "className" | "onClick" | "type">> & React.RefAttributes<unknown>> & {
11
11
  __BYTE_BUTTON: boolean;
12
12
  Group: typeof Group;
13
13
  };
@@ -1,4 +1,4 @@
1
1
  import React from 'react';
2
2
  import { RangePickerHandle } from './interface';
3
- declare const PickerComponent: React.ForwardRefExoticComponent<import("./interface").BaseRangePickerProps & import("../_util/type").Omit<import("./interface").PickerProps, "onChange" | "onSelect" | "onOk" | "defaultPickerValue" | "pickerValue" | "onPickerValueChange" | "inputProps"> & React.RefAttributes<RangePickerHandle>>;
3
+ declare const PickerComponent: React.ForwardRefExoticComponent<import("./interface").BaseRangePickerProps & import("../_util/type").Omit<import("./interface").PickerProps, "onChange" | "onSelect" | "inputProps" | "onOk" | "defaultPickerValue" | "pickerValue" | "onPickerValueChange"> & React.RefAttributes<RangePickerHandle>>;
4
4
  export default PickerComponent;
@@ -6,7 +6,7 @@ export declare type HotkeyInfo = {
6
6
  type: 'sibling' | 'generation' | 'enter';
7
7
  };
8
8
  export declare type ResetHotkeyInfo = (activeKey?: string) => void;
9
- declare const MenuContext: import("react").Context<Pick<MenuProps, "collapse" | "icons" | "mode" | "inDropdown" | "theme" | "levelIndent" | "autoScrollIntoView" | "selectedKeys" | "openKeys" | "scrollConfig" | "triggerProps" | "tooltipProps"> & {
9
+ declare const MenuContext: import("react").Context<Pick<MenuProps, "collapse" | "mode" | "triggerProps" | "inDropdown" | "theme" | "levelIndent" | "icons" | "autoScrollIntoView" | "selectedKeys" | "openKeys" | "scrollConfig" | "tooltipProps"> & {
10
10
  id?: string;
11
11
  prefixCls?: string;
12
12
  onClickMenuItem?: (key: string, event: any) => void;
@@ -46,6 +46,7 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
46
46
  return to.concat(ar || Array.prototype.slice.call(from));
47
47
  };
48
48
  import React, { useCallback, useContext, useEffect, useImperativeHandle, useMemo, useRef, useState, } from 'react';
49
+ import isEqualWith from 'lodash/isEqualWith';
49
50
  import cs from '../_util/classNames';
50
51
  import { ArrowUp, ArrowDown, Enter, Esc, Tab } from '../_util/keycode';
51
52
  import Trigger from '../Trigger';
@@ -62,7 +63,7 @@ import { ConfigContext } from '../ConfigProvider';
62
63
  import useMergeValue from '../_util/hooks/useMergeValue';
63
64
  import omit from '../_util/omit';
64
65
  import useMergeProps from '../_util/hooks/useMergeProps';
65
- import { Button } from '../index';
66
+ import { Button, Checkbox } from '../index';
66
67
  import useId from '../_util/hooks/useId';
67
68
  // 用户创建中的option的origin标识
68
69
  var USER_CREATING_OPTION_ORIGIN = 'userCreatingOption';
@@ -212,7 +213,6 @@ function Select(baseProps, ref) {
212
213
  }
213
214
  else if (Array.isArray(value)) {
214
215
  setValue(value.length === 0 ? undefined : value[0]);
215
- setProxyValue(value.length === 0 ? undefined : value[0]);
216
216
  }
217
217
  }, [isMultipleMode, value]);
218
218
  useEffect(function () {
@@ -512,6 +512,35 @@ function Select(baseProps, ref) {
512
512
  },
513
513
  ],
514
514
  ]));
515
+ // 全选
516
+ var checked = Array.isArray(stateProxyValue) &&
517
+ childrenList.length &&
518
+ childrenList.every(function (child) { return stateProxyValue.includes(child.props.value); });
519
+ var selectAllCheckBoxProps = isMultipleQuickSelectMode && Array.isArray(stateProxyValue)
520
+ ? {
521
+ disabled: childrenList.length === 0,
522
+ checked: checked,
523
+ indeterminate: !checked &&
524
+ childrenList.length &&
525
+ childrenList.some(function (child) { return stateProxyValue.includes(child.props.value); }),
526
+ onChange: function (value) {
527
+ if (value) {
528
+ setProxyValue(function (prev) { return __spreadArray(__spreadArray([], __read(prev.filter(function (i) {
529
+ return !childrenList.some(function (child) { return isEqualWith(i, child.props.value); });
530
+ })), false), __read(childrenList.map(function (child) { return child.props.value; })), false); });
531
+ }
532
+ else {
533
+ setProxyValue(function (prev) {
534
+ return ((prev === null || prev === void 0 ? void 0 : prev.filter(function (v) {
535
+ return !childrenList.some(function (child) { return isEqualWith(v, child.props.value); });
536
+ })) || []);
537
+ });
538
+ }
539
+ },
540
+ }
541
+ : {
542
+ style: { display: 'none' },
543
+ };
515
544
  var renderPopup = function () {
516
545
  var _a;
517
546
  var _b, _c, _d, _e;
@@ -562,13 +591,14 @@ function Select(baseProps, ref) {
562
591
  }),
563
592
  isMultipleQuickSelectMode && (React.createElement("div", { style: {
564
593
  display: 'flex',
565
- justifyContent: 'flex-end',
566
- gap: 12,
567
- padding: '8px 16px 4px',
594
+ justifyContent: 'space-between',
595
+ padding: '8px 16px 4px 8px',
568
596
  borderTop: '1px solid var(--color-fill-3)',
569
597
  } },
570
- React.createElement(Button, { size: "mini", onClick: cancelCheck }, (_d = locale.Select) === null || _d === void 0 ? void 0 : _d.cancelText),
571
- React.createElement(Button, { type: "primary", size: "mini", onClick: confirmCheck }, (_e = locale.Select) === null || _e === void 0 ? void 0 : _e.okText))))) : null;
598
+ React.createElement(Checkbox, __assign({}, selectAllCheckBoxProps), "\u5168\u9009"),
599
+ React.createElement("div", { style: { display: 'flex', gap: 12 } },
600
+ React.createElement(Button, { size: "mini", onClick: cancelCheck }, (_d = locale.Select) === null || _d === void 0 ? void 0 : _d.cancelText),
601
+ React.createElement(Button, { type: "primary", size: "mini", onClick: confirmCheck }, (_e = locale.Select) === null || _e === void 0 ? void 0 : _e.okText)))))) : null;
572
602
  // Avoid drop-down box jitter when user is creating a selection
573
603
  var isUserCreating = allowCreate && inputValue;
574
604
  // Dropdown-placeholder when there is no options
@@ -1,8 +1,10 @@
1
1
  import React from 'react';
2
2
  import { TableProps } from './interface';
3
+ import { VirtualListHandle } from '../_class/VirtualList';
3
4
  export interface TableInstance {
4
5
  getRootDomElement: () => HTMLDivElement;
5
6
  scrollIntoView: (dataIndex: React.Key) => void;
7
+ refVirtualList: React.MutableRefObject<VirtualListHandle>;
6
8
  }
7
9
  declare const _default: <T>(props: TableProps<T> & {
8
10
  ref?: React.Ref<TableInstance>;
package/es/Table/table.js CHANGED
@@ -392,6 +392,7 @@ function Table(baseProps, ref) {
392
392
  }
393
393
  },
394
394
  getRootDOMNode: getRootDomElement,
395
+ refVirtualList: refVirtualList,
395
396
  }); });
396
397
  function getRootDomElement() {
397
398
  return refTable.current;
@@ -11,6 +11,7 @@ export interface TreeSelectState {
11
11
  searchKeys: string[];
12
12
  }
13
13
  export declare const parseValue: (v: valueType, key2nodeProps: any, valueMap?: LabelValue[]) => LabelValue[];
14
+ export declare const getInitCheckKeys: (keys: string[], key2nodeProps: KeyCacheType, indeterminateKeys: any, props: TreeSelectProps) => string[];
14
15
  declare const useStateValue: (props: TreeSelectProps, key2nodeProps: KeyCacheType, indeterminateKeys: MutableRefObject<string[]>) => [LabelValue[], (v: LabelValue[], extra: {
15
16
  trigger?: NodeProps;
16
17
  checked?: boolean;
@@ -63,7 +63,7 @@ export var parseValue = function (v, key2nodeProps, valueMap) {
63
63
  return result;
64
64
  });
65
65
  };
66
- var getInitCheckKeys = function (keys, key2nodeProps, indeterminateKeys, props) {
66
+ export var getInitCheckKeys = function (keys, key2nodeProps, indeterminateKeys, props) {
67
67
  if (!props.treeCheckStrictly) {
68
68
  var _a = getCheckedKeysByInitKeys(keys, key2nodeProps), allCheckedKeys = _a.checkedKeys, halfKeys = _a.indeterminateKeys;
69
69
  var checkedKeys_1 = allCheckedKeys;
@@ -159,8 +159,9 @@ function TreeList(props, ref) {
159
159
  var checkedKeys;
160
160
  var getAllCheckedKeys = function (node, keys) {
161
161
  if (keys === void 0) { keys = []; }
162
- if (Array.isArray(node.childrenData) && node.childrenData.length) {
163
- node.childrenData.forEach(function (child) {
162
+ var children = node.childrenData || node.children;
163
+ if (Array.isArray(children) && children.length) {
164
+ children.forEach(function (child) {
164
165
  getAllCheckedKeys(child, keys);
165
166
  });
166
167
  }
@@ -72,13 +72,13 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
72
72
  };
73
73
  import React, { forwardRef, useContext, useEffect, useRef, useState, useImperativeHandle, useMemo, useCallback, } from 'react';
74
74
  import debounce from 'lodash/debounce';
75
- import useStateValue, { parseValue } from './hook/useStateValue';
75
+ import useStateValue, { getInitCheckKeys, parseValue } from './hook/useStateValue';
76
76
  import { normalizeValueToArray } from './utils';
77
77
  import { isArray, isFunction, isNullOrUndefined, isObject } from '../_util/is';
78
78
  import Trigger from '../Trigger';
79
79
  import Tree from '../Tree';
80
80
  import { ConfigContext } from '../ConfigProvider';
81
- import { getAllCheckedKeysByCheck } from '../Tree/util';
81
+ import { getAllCheckedKeysByCheck, getCheckedKeysByInitKeys } from '../Tree/util';
82
82
  import SelectView from '../_class/select-view';
83
83
  import { DefaultFieldNames, } from './interface';
84
84
  import useTreeData from './hook/useTreeData';
@@ -90,6 +90,7 @@ import useMergeProps from '../_util/hooks/useMergeProps';
90
90
  import useIsFirstRender from '../_util/hooks/useIsFirstRender';
91
91
  import useId from '../_util/hooks/useId';
92
92
  import Button from '../Button';
93
+ import Checkbox from '../Checkbox';
93
94
  function isEmptyValue(value) {
94
95
  return (!value ||
95
96
  (isArray(value) && value.length === 0) ||
@@ -308,6 +309,30 @@ var TreeSelect = function (baseProps, ref) {
308
309
  var tryUpdateSelectValue = function (value) {
309
310
  setValue(value, {});
310
311
  };
312
+ var getSelectAllCheckBoxProps = useCallback(function () {
313
+ if (!isMultipleQuickSelectMode || props.treeCheckStrictly) {
314
+ return {
315
+ style: { display: 'none' },
316
+ };
317
+ }
318
+ var allCheckedKeys = getCheckedKeysByInitKeys(normalizeValueToArray(value), key2nodeProps).checkedKeys;
319
+ var rootKeys = treeData.map(function (item) { return item.key; });
320
+ var checked = rootKeys.every(function (key) { return allCheckedKeys.includes(key); });
321
+ var indeterminate = !checked && value.length && rootKeys.some(function (key) { return !allCheckedKeys.includes(key); });
322
+ return {
323
+ disabled: treeData.length === 0,
324
+ checked: checked,
325
+ indeterminate: indeterminate,
326
+ onChange: function (val) {
327
+ if (val) {
328
+ setValue(getInitCheckKeys(normalizeValueToArray(rootKeys), key2nodeProps, indeterminateKeys, props).map(function (x) { return ({ label: x, value: x }); }), {});
329
+ }
330
+ else {
331
+ setValue([], {});
332
+ }
333
+ },
334
+ };
335
+ }, [isMultipleQuickSelectMode, value, treeData]);
311
336
  var renderView = function (eleView) {
312
337
  return (React.createElement(Trigger, __assign({ autoAlignPopupWidth: false, autoAlignPopupMinWidth: true, ref: triggerRef, classNames: "slideDynamicOrigin", trigger: "click", position: "bl", getPopupContainer: props.getPopupContainer, popupAlign: triggerPopupAlign, unmountOnExit: props.unmountOnExit }, props.triggerProps, { className: cs(prefixCls + "-trigger", props.triggerProps && props.triggerProps.className), popup: function () {
313
338
  var _a;
@@ -323,15 +348,14 @@ var TreeSelect = function (baseProps, ref) {
323
348
  React.createElement("div", { style: {
324
349
  flex: 'none',
325
350
  display: 'flex',
326
- justifyContent: 'flex-end',
327
- gap: 12,
328
- padding: '8px 16px 4px',
351
+ justifyContent: 'space-between',
352
+ padding: '8px 16px 4px 8px',
329
353
  borderTop: '1px solid var(--color-fill-3)',
330
354
  } },
331
- React.createElement(Button, { size: "mini", onClick: cancelCheck }, (_b = locale.Select) === null || _b === void 0 ? void 0 : _b.cancelText),
332
- React.createElement(Button, { type: "primary", size: "mini", onClick: function () {
333
- confirmCheck();
334
- } }, (_c = locale.Select) === null || _c === void 0 ? void 0 : _c.okText)))) : (treeListDom);
355
+ React.createElement(Checkbox, __assign({}, getSelectAllCheckBoxProps()), "\u5168\u9009"),
356
+ React.createElement("div", { style: { display: 'flex', gap: 12 } },
357
+ React.createElement(Button, { size: "mini", onClick: cancelCheck }, (_b = locale.Select) === null || _b === void 0 ? void 0 : _b.cancelText),
358
+ React.createElement(Button, { type: "primary", size: "mini", onClick: confirmCheck }, (_c = locale.Select) === null || _c === void 0 ? void 0 : _c.okText))))) : (treeListDom);
335
359
  var wrapStyle = isMultipleQuickSelectMode
336
360
  ? {
337
361
  overflow: 'hidden',
@@ -34,6 +34,7 @@ export declare type VirtualListHandle = {
34
34
  key: Key;
35
35
  options?: ScrollIntoViewOptions;
36
36
  }) => void;
37
+ virtualListScrollHandler: (event: UIEvent<HTMLElement> | null, isInit?: boolean) => void;
37
38
  };
38
39
  declare const VirtualList: React.ForwardRefExoticComponent<VirtualListProps<any> & React.RefAttributes<VirtualListHandle>>;
39
40
  export default VirtualList;
@@ -427,7 +427,14 @@ var VirtualList = React.forwardRef(function (props, ref) {
427
427
  }
428
428
  });
429
429
  },
430
+ virtualListScrollHandler: virtualListScrollHandler,
430
431
  }); }, [data, itemHeight, state]);
432
+ useEffect(function () {
433
+ // 用于触发虚拟列表重计算定位时机
434
+ if (state.status === 'MEASURE_DONE') {
435
+ window.dispatchEvent(new Event('VIRTUAL_LIST_MEASURE_DONE'));
436
+ }
437
+ }, [state.status]);
431
438
  var renderChildren = function (list, startIndex) {
432
439
  return list.map(function (item, index) {
433
440
  var originIndex = startIndex + index;
@@ -1,3 +1,3 @@
1
1
  export declare const NOOP: () => void;
2
2
  export declare function newArray(length: number): any;
3
- export declare function pickTriggerPropsFromRest(rest: any): Pick<any, "onClick" | "tabIndex" | "onFocus" | "onBlur" | "onContextMenu" | "onMouseEnter" | "onMouseLeave" | "onMouseMove">;
3
+ export declare function pickTriggerPropsFromRest(rest: any): Pick<any, "onFocus" | "onBlur" | "onClick" | "tabIndex" | "onContextMenu" | "onMouseEnter" | "onMouseLeave" | "onMouseMove">;
package/es/index.d.ts CHANGED
@@ -139,4 +139,4 @@ export type { WatermarkProps } from './Watermark/interface';
139
139
  export { default as Watermark } from './Watermark';
140
140
  export type { ImageProps, ImagePreviewProps, ImagePreviewActionProps, ImagePreviewGroupProps } from './Image/interface';
141
141
  export { default as Image } from './Image';
142
- export declare const version = "1.4.3";
142
+ export declare const version = "1.5.1";
package/es/index.js CHANGED
@@ -69,4 +69,4 @@ export { default as Upload } from './Upload';
69
69
  export { default as Mentions } from './Mentions';
70
70
  export { default as Watermark } from './Watermark';
71
71
  export { default as Image } from './Image';
72
- export var version = '1.4.3';
72
+ export var version = '1.5.1';
@@ -234,6 +234,7 @@ declare const _default: {
234
234
  cancelText: string;
235
235
  okText: string;
236
236
  filterThisItemOnly: string;
237
+ selectAll: string;
237
238
  };
238
239
  };
239
240
  export default _default;
@@ -173,5 +173,6 @@ export default {
173
173
  cancelText: 'Cancel',
174
174
  okText: 'OK',
175
175
  filterThisItemOnly: 'Filter this item only',
176
+ selectAll: 'Select all',
176
177
  },
177
178
  };
@@ -281,6 +281,7 @@ declare const _default: {
281
281
  cancelText: string;
282
282
  okText: string;
283
283
  filterThisItemOnly: string;
284
+ selectAll: string;
284
285
  };
285
286
  };
286
287
  export default _default;
@@ -220,5 +220,6 @@ export default {
220
220
  cancelText: '取消',
221
221
  okText: '确定',
222
222
  filterThisItemOnly: '仅筛选此项',
223
+ selectAll: '全选',
223
224
  },
224
225
  };
@@ -70,6 +70,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
70
70
  };
71
71
  Object.defineProperty(exports, "__esModule", { value: true });
72
72
  var react_1 = __importStar(require("react"));
73
+ var isEqualWith_1 = __importDefault(require("lodash/isEqualWith"));
73
74
  var classNames_1 = __importDefault(require("../_util/classNames"));
74
75
  var keycode_1 = require("../_util/keycode");
75
76
  var Trigger_1 = __importDefault(require("../Trigger"));
@@ -236,7 +237,6 @@ function Select(baseProps, ref) {
236
237
  }
237
238
  else if (Array.isArray(value)) {
238
239
  setValue(value.length === 0 ? undefined : value[0]);
239
- setProxyValue(value.length === 0 ? undefined : value[0]);
240
240
  }
241
241
  }, [isMultipleMode, value]);
242
242
  (0, react_1.useEffect)(function () {
@@ -536,6 +536,35 @@ function Select(baseProps, ref) {
536
536
  },
537
537
  ],
538
538
  ]));
539
+ // 全选
540
+ var checked = Array.isArray(stateProxyValue) &&
541
+ childrenList.length &&
542
+ childrenList.every(function (child) { return stateProxyValue.includes(child.props.value); });
543
+ var selectAllCheckBoxProps = isMultipleQuickSelectMode && Array.isArray(stateProxyValue)
544
+ ? {
545
+ disabled: childrenList.length === 0,
546
+ checked: checked,
547
+ indeterminate: !checked &&
548
+ childrenList.length &&
549
+ childrenList.some(function (child) { return stateProxyValue.includes(child.props.value); }),
550
+ onChange: function (value) {
551
+ if (value) {
552
+ setProxyValue(function (prev) { return __spreadArray(__spreadArray([], __read(prev.filter(function (i) {
553
+ return !childrenList.some(function (child) { return (0, isEqualWith_1.default)(i, child.props.value); });
554
+ })), false), __read(childrenList.map(function (child) { return child.props.value; })), false); });
555
+ }
556
+ else {
557
+ setProxyValue(function (prev) {
558
+ return ((prev === null || prev === void 0 ? void 0 : prev.filter(function (v) {
559
+ return !childrenList.some(function (child) { return (0, isEqualWith_1.default)(v, child.props.value); });
560
+ })) || []);
561
+ });
562
+ }
563
+ },
564
+ }
565
+ : {
566
+ style: { display: 'none' },
567
+ };
539
568
  var renderPopup = function () {
540
569
  var _a;
541
570
  var _b, _c, _d, _e;
@@ -586,13 +615,14 @@ function Select(baseProps, ref) {
586
615
  }),
587
616
  isMultipleQuickSelectMode && (react_1.default.createElement("div", { style: {
588
617
  display: 'flex',
589
- justifyContent: 'flex-end',
590
- gap: 12,
591
- padding: '8px 16px 4px',
618
+ justifyContent: 'space-between',
619
+ padding: '8px 16px 4px 8px',
592
620
  borderTop: '1px solid var(--color-fill-3)',
593
621
  } },
594
- react_1.default.createElement(index_1.Button, { size: "mini", onClick: cancelCheck }, (_d = locale.Select) === null || _d === void 0 ? void 0 : _d.cancelText),
595
- react_1.default.createElement(index_1.Button, { type: "primary", size: "mini", onClick: confirmCheck }, (_e = locale.Select) === null || _e === void 0 ? void 0 : _e.okText))))) : null;
622
+ react_1.default.createElement(index_1.Checkbox, __assign({}, selectAllCheckBoxProps), "\u5168\u9009"),
623
+ react_1.default.createElement("div", { style: { display: 'flex', gap: 12 } },
624
+ react_1.default.createElement(index_1.Button, { size: "mini", onClick: cancelCheck }, (_d = locale.Select) === null || _d === void 0 ? void 0 : _d.cancelText),
625
+ react_1.default.createElement(index_1.Button, { type: "primary", size: "mini", onClick: confirmCheck }, (_e = locale.Select) === null || _e === void 0 ? void 0 : _e.okText)))))) : null;
596
626
  // Avoid drop-down box jitter when user is creating a selection
597
627
  var isUserCreating = allowCreate && inputValue;
598
628
  // Dropdown-placeholder when there is no options
@@ -1,8 +1,10 @@
1
1
  import React from 'react';
2
2
  import { TableProps } from './interface';
3
+ import { VirtualListHandle } from '../_class/VirtualList';
3
4
  export interface TableInstance {
4
5
  getRootDomElement: () => HTMLDivElement;
5
6
  scrollIntoView: (dataIndex: React.Key) => void;
7
+ refVirtualList: React.MutableRefObject<VirtualListHandle>;
6
8
  }
7
9
  declare const _default: <T>(props: TableProps<T> & {
8
10
  ref?: React.Ref<TableInstance>;
@@ -416,6 +416,7 @@ function Table(baseProps, ref) {
416
416
  }
417
417
  },
418
418
  getRootDOMNode: getRootDomElement,
419
+ refVirtualList: refVirtualList,
419
420
  }); });
420
421
  function getRootDomElement() {
421
422
  return refTable.current;
@@ -11,6 +11,7 @@ export interface TreeSelectState {
11
11
  searchKeys: string[];
12
12
  }
13
13
  export declare const parseValue: (v: valueType, key2nodeProps: any, valueMap?: LabelValue[]) => LabelValue[];
14
+ export declare const getInitCheckKeys: (keys: string[], key2nodeProps: KeyCacheType, indeterminateKeys: any, props: TreeSelectProps) => string[];
14
15
  declare const useStateValue: (props: TreeSelectProps, key2nodeProps: KeyCacheType, indeterminateKeys: MutableRefObject<string[]>) => [LabelValue[], (v: LabelValue[], extra: {
15
16
  trigger?: NodeProps;
16
17
  checked?: boolean;
@@ -39,7 +39,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
39
39
  return (mod && mod.__esModule) ? mod : { "default": mod };
40
40
  };
41
41
  Object.defineProperty(exports, "__esModule", { value: true });
42
- exports.parseValue = void 0;
42
+ exports.getInitCheckKeys = exports.parseValue = void 0;
43
43
  var react_1 = require("react");
44
44
  var isEqualWith_1 = __importDefault(require("lodash/isEqualWith"));
45
45
  var utils_1 = require("../utils");
@@ -96,6 +96,7 @@ var getInitCheckKeys = function (keys, key2nodeProps, indeterminateKeys, props)
96
96
  indeterminateKeys.current = [];
97
97
  return keys;
98
98
  };
99
+ exports.getInitCheckKeys = getInitCheckKeys;
99
100
  var useStateValue = function (props, key2nodeProps, indeterminateKeys) {
100
101
  var multiple = props.multiple || props.treeCheckable;
101
102
  var isMultipleQuickSelectMode = multiple && props.isQuickSingleSelectMode;
@@ -103,7 +104,7 @@ var useStateValue = function (props, key2nodeProps, indeterminateKeys) {
103
104
  var calcValue = function () {
104
105
  var propsValue = props.value || props.defaultValue || [];
105
106
  if (props.treeCheckable) {
106
- var initCheckedKeys = getInitCheckKeys((0, utils_1.normalizeValueToArray)(propsValue), key2nodeProps, indeterminateKeys, props);
107
+ var initCheckedKeys = (0, exports.getInitCheckKeys)((0, utils_1.normalizeValueToArray)(propsValue), key2nodeProps, indeterminateKeys, props);
107
108
  var parsedPropValue = (0, exports.parseValue)(propsValue, key2nodeProps, valueCopy.current);
108
109
  var parsedCheckedValue = (0, exports.parseValue)(initCheckedKeys, key2nodeProps, parsedPropValue);
109
110
  return parsedCheckedValue;
@@ -183,8 +183,9 @@ function TreeList(props, ref) {
183
183
  var checkedKeys;
184
184
  var getAllCheckedKeys = function (node, keys) {
185
185
  if (keys === void 0) { keys = []; }
186
- if (Array.isArray(node.childrenData) && node.childrenData.length) {
187
- node.childrenData.forEach(function (child) {
186
+ var children = node.childrenData || node.children;
187
+ if (Array.isArray(children) && children.length) {
188
+ children.forEach(function (child) {
188
189
  getAllCheckedKeys(child, keys);
189
190
  });
190
191
  }
@@ -114,6 +114,7 @@ var useMergeProps_1 = __importDefault(require("../_util/hooks/useMergeProps"));
114
114
  var useIsFirstRender_1 = __importDefault(require("../_util/hooks/useIsFirstRender"));
115
115
  var useId_1 = __importDefault(require("../_util/hooks/useId"));
116
116
  var Button_1 = __importDefault(require("../Button"));
117
+ var Checkbox_1 = __importDefault(require("../Checkbox"));
117
118
  function isEmptyValue(value) {
118
119
  return (!value ||
119
120
  ((0, is_1.isArray)(value) && value.length === 0) ||
@@ -332,6 +333,30 @@ var TreeSelect = function (baseProps, ref) {
332
333
  var tryUpdateSelectValue = function (value) {
333
334
  setValue(value, {});
334
335
  };
336
+ var getSelectAllCheckBoxProps = (0, react_1.useCallback)(function () {
337
+ if (!isMultipleQuickSelectMode || props.treeCheckStrictly) {
338
+ return {
339
+ style: { display: 'none' },
340
+ };
341
+ }
342
+ var allCheckedKeys = (0, util_1.getCheckedKeysByInitKeys)((0, utils_1.normalizeValueToArray)(value), key2nodeProps).checkedKeys;
343
+ var rootKeys = treeData.map(function (item) { return item.key; });
344
+ var checked = rootKeys.every(function (key) { return allCheckedKeys.includes(key); });
345
+ var indeterminate = !checked && value.length && rootKeys.some(function (key) { return !allCheckedKeys.includes(key); });
346
+ return {
347
+ disabled: treeData.length === 0,
348
+ checked: checked,
349
+ indeterminate: indeterminate,
350
+ onChange: function (val) {
351
+ if (val) {
352
+ setValue((0, useStateValue_1.getInitCheckKeys)((0, utils_1.normalizeValueToArray)(rootKeys), key2nodeProps, indeterminateKeys, props).map(function (x) { return ({ label: x, value: x }); }), {});
353
+ }
354
+ else {
355
+ setValue([], {});
356
+ }
357
+ },
358
+ };
359
+ }, [isMultipleQuickSelectMode, value, treeData]);
335
360
  var renderView = function (eleView) {
336
361
  return (react_1.default.createElement(Trigger_1.default, __assign({ autoAlignPopupWidth: false, autoAlignPopupMinWidth: true, ref: triggerRef, classNames: "slideDynamicOrigin", trigger: "click", position: "bl", getPopupContainer: props.getPopupContainer, popupAlign: triggerPopupAlign, unmountOnExit: props.unmountOnExit }, props.triggerProps, { className: (0, classNames_1.default)(prefixCls + "-trigger", props.triggerProps && props.triggerProps.className), popup: function () {
337
362
  var _a;
@@ -347,15 +372,14 @@ var TreeSelect = function (baseProps, ref) {
347
372
  react_1.default.createElement("div", { style: {
348
373
  flex: 'none',
349
374
  display: 'flex',
350
- justifyContent: 'flex-end',
351
- gap: 12,
352
- padding: '8px 16px 4px',
375
+ justifyContent: 'space-between',
376
+ padding: '8px 16px 4px 8px',
353
377
  borderTop: '1px solid var(--color-fill-3)',
354
378
  } },
355
- react_1.default.createElement(Button_1.default, { size: "mini", onClick: cancelCheck }, (_b = locale.Select) === null || _b === void 0 ? void 0 : _b.cancelText),
356
- react_1.default.createElement(Button_1.default, { type: "primary", size: "mini", onClick: function () {
357
- confirmCheck();
358
- } }, (_c = locale.Select) === null || _c === void 0 ? void 0 : _c.okText)))) : (treeListDom);
379
+ react_1.default.createElement(Checkbox_1.default, __assign({}, getSelectAllCheckBoxProps()), "\u5168\u9009"),
380
+ react_1.default.createElement("div", { style: { display: 'flex', gap: 12 } },
381
+ react_1.default.createElement(Button_1.default, { size: "mini", onClick: cancelCheck }, (_b = locale.Select) === null || _b === void 0 ? void 0 : _b.cancelText),
382
+ react_1.default.createElement(Button_1.default, { type: "primary", size: "mini", onClick: confirmCheck }, (_c = locale.Select) === null || _c === void 0 ? void 0 : _c.okText))))) : (treeListDom);
359
383
  var wrapStyle = isMultipleQuickSelectMode
360
384
  ? {
361
385
  overflow: 'hidden',
@@ -34,6 +34,7 @@ export declare type VirtualListHandle = {
34
34
  key: Key;
35
35
  options?: ScrollIntoViewOptions;
36
36
  }) => void;
37
+ virtualListScrollHandler: (event: UIEvent<HTMLElement> | null, isInit?: boolean) => void;
37
38
  };
38
39
  declare const VirtualList: React.ForwardRefExoticComponent<VirtualListProps<any> & React.RefAttributes<VirtualListHandle>>;
39
40
  export default VirtualList;
@@ -449,7 +449,14 @@ var VirtualList = react_1.default.forwardRef(function (props, ref) {
449
449
  }
450
450
  });
451
451
  },
452
+ virtualListScrollHandler: virtualListScrollHandler,
452
453
  }); }, [data, itemHeight, state]);
454
+ (0, react_1.useEffect)(function () {
455
+ // 用于触发虚拟列表重计算定位时机
456
+ if (state.status === 'MEASURE_DONE') {
457
+ window.dispatchEvent(new Event('VIRTUAL_LIST_MEASURE_DONE'));
458
+ }
459
+ }, [state.status]);
453
460
  var renderChildren = function (list, startIndex) {
454
461
  return list.map(function (item, index) {
455
462
  var originIndex = startIndex + index;
package/lib/index.d.ts CHANGED
@@ -139,4 +139,4 @@ export type { WatermarkProps } from './Watermark/interface';
139
139
  export { default as Watermark } from './Watermark';
140
140
  export type { ImageProps, ImagePreviewProps, ImagePreviewActionProps, ImagePreviewGroupProps } from './Image/interface';
141
141
  export { default as Image } from './Image';
142
- export declare const version = "1.4.3";
142
+ export declare const version = "1.5.1";
package/lib/index.js CHANGED
@@ -147,4 +147,4 @@ var Watermark_1 = require("./Watermark");
147
147
  Object.defineProperty(exports, "Watermark", { enumerable: true, get: function () { return __importDefault(Watermark_1).default; } });
148
148
  var Image_1 = require("./Image");
149
149
  Object.defineProperty(exports, "Image", { enumerable: true, get: function () { return __importDefault(Image_1).default; } });
150
- exports.version = '1.4.3';
150
+ exports.version = '1.5.1';
@@ -234,6 +234,7 @@ declare const _default: {
234
234
  cancelText: string;
235
235
  okText: string;
236
236
  filterThisItemOnly: string;
237
+ selectAll: string;
237
238
  };
238
239
  };
239
240
  export default _default;
@@ -175,5 +175,6 @@ exports.default = {
175
175
  cancelText: 'Cancel',
176
176
  okText: 'OK',
177
177
  filterThisItemOnly: 'Filter this item only',
178
+ selectAll: 'Select all',
178
179
  },
179
180
  };
@@ -281,6 +281,7 @@ declare const _default: {
281
281
  cancelText: string;
282
282
  okText: string;
283
283
  filterThisItemOnly: string;
284
+ selectAll: string;
284
285
  };
285
286
  };
286
287
  export default _default;
@@ -222,5 +222,6 @@ exports.default = {
222
222
  cancelText: '取消',
223
223
  okText: '确定',
224
224
  filterThisItemOnly: '仅筛选此项',
225
+ selectAll: '全选',
225
226
  },
226
227
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@apdesign/web-react",
3
- "version": "1.4.3",
3
+ "version": "1.5.1",
4
4
  "description": "AP Design React UI Library.",
5
5
  "module": "./es/index.js",
6
6
  "main": "./lib/index.js",