@aloudata/aloudata-design 2.19.2 → 2.19.4

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.
@@ -12,7 +12,7 @@
12
12
  cursor: pointer;
13
13
 
14
14
  &-disabled {
15
- cursor: not-allowed;
15
+ cursor: initial;
16
16
 
17
17
  .beta-ald-select-prefix {
18
18
  svg {
@@ -21,6 +21,11 @@
21
21
  display: flex;
22
22
  flex-wrap: wrap;
23
23
  gap: 12px;
24
+ height: fit-content;
25
+
26
+ .ant-checkbox-wrapper + .ant-checkbox-wrapper {
27
+ margin-left: 0;
28
+ }
24
29
  }
25
30
 
26
31
  .ald-checkout-group-vertical.ant-checkbox-group.ald-checkbox-group.ald-checkbox-group {
@@ -22,10 +22,27 @@
22
22
  cursor: pointer;
23
23
  transition: border 0.5s ease-in-out;
24
24
  border-radius: 4px;
25
+ color: var(--content-primary);
25
26
 
26
27
  &:not(.ald-color-picker-wrapper-disabled):hover {
27
28
  border: 1px solid var(--interaction-border-normal);
28
29
  }
30
+
31
+ &-disabled {
32
+ border: 1px solid var(--interaction-border-neutral-normal);
33
+ background: var(--global-cool-gray-alpha-50);
34
+ color: var(--content-primary);
35
+
36
+ &.ald-color-picker-wrapper-borderless {
37
+ border-color: transparent;
38
+ background: transparent;
39
+ }
40
+
41
+ &:hover {
42
+ border-color: var(--interaction-border-neutral-normal);
43
+ background-color: var(--global-cool-gray-alpha-50);
44
+ }
45
+ }
29
46
  }
30
47
 
31
48
  .ald-color-picker-wrapper-borderless {
@@ -165,5 +182,9 @@
165
182
  }
166
183
 
167
184
  .ald-color-picker-disabled {
168
- opacity: 0.4;
185
+ cursor: initial;
186
+
187
+ .ald-color-picker-wrapper {
188
+ cursor: initial;
189
+ }
169
190
  }
@@ -1,7 +1,10 @@
1
1
  import React from 'react';
2
2
  export default function InputSearch(props: IProps): React.JSX.Element;
3
3
  interface IProps {
4
+ /** 搜索回调,在输入完成时触发(回车、输入法结束、非输入法输入时) */
4
5
  onSearch: (value: string) => void;
6
+ /** 值变化回调(受控模式时推荐使用,每次输入都触发,包括输入法期间) */
7
+ onChange?: (value: string) => void;
5
8
  onBlur?: (value: string, e: React.FocusEvent<HTMLInputElement>) => void;
6
9
  className?: string;
7
10
  debounce?: boolean;
@@ -30,6 +30,7 @@ export default function InputSearch(props) {
30
30
  locale = _useContext.locale;
31
31
  var t = getTranslator(locale);
32
32
  var onSearch = props.onSearch,
33
+ onChange = props.onChange,
33
34
  className = props.className,
34
35
  _props$debounce = props.debounce,
35
36
  debounce = _props$debounce === void 0 ? true : _props$debounce,
@@ -91,6 +92,9 @@ export default function InputSearch(props) {
91
92
  // 非受控模式才更新内部状态
92
93
  if (!isControlled) {
93
94
  setSearchValue(newValue);
95
+ } else {
96
+ onChange === null || onChange === void 0 ? void 0 : onChange(newValue);
97
+ return;
94
98
  }
95
99
  if (!isComposing.current) {
96
100
  // 受控的时候debounce不生效
@@ -100,11 +104,14 @@ export default function InputSearch(props) {
100
104
  onSearch(newValue);
101
105
  }
102
106
  }
103
- }, [debounce, debounceSearch, onSearch, isControlled]);
107
+ }, [debounce, debounceSearch, onSearch, isControlled, onChange]);
104
108
  var handleCompositionStart = useCallback(function () {
105
109
  isComposing.current = true;
106
110
  }, []);
107
111
  var handleCompositionEnd = useCallback(function (e) {
112
+ if (isControlled) {
113
+ return;
114
+ }
108
115
  isComposing.current = false;
109
116
  // 在输入法结束后触发一次搜索
110
117
  var value = e.target.value;
@@ -113,7 +120,7 @@ export default function InputSearch(props) {
113
120
  } else {
114
121
  onSearch(value);
115
122
  }
116
- }, [debounce, debounceSearch, onSearch]);
123
+ }, [debounce, debounceSearch, isControlled, onSearch]);
117
124
  var iconSize = useMemo(function () {
118
125
  if (size === 'middle' || size === 'large') {
119
126
  return 20;
@@ -4,7 +4,6 @@ interface IProps<T> {
4
4
  value: TNode<T>;
5
5
  renderCondition: (value: T) => React.ReactNode;
6
6
  backgroundColor?: string;
7
- key: string;
8
7
  }
9
- export declare function DisplayLogicItem<T>({ value, renderCondition, backgroundColor, key, }: IProps<T>): React.JSX.Element | null;
8
+ export declare function DisplayLogicItem<T>({ value, renderCondition, backgroundColor, }: IProps<T>): React.JSX.Element | null;
10
9
  export {};
@@ -17,8 +17,7 @@ export function DisplayLogicItem(_ref) {
17
17
  var _logicTypeTextMap;
18
18
  var value = _ref.value,
19
19
  renderCondition = _ref.renderCondition,
20
- backgroundColor = _ref.backgroundColor,
21
- key = _ref.key;
20
+ backgroundColor = _ref.backgroundColor;
22
21
  var _useState = useState(0),
23
22
  _useState2 = _slicedToArray(_useState, 2),
24
23
  firstNodeHight = _useState2[0],
@@ -57,7 +56,7 @@ export function DisplayLogicItem(_ref) {
57
56
  return /*#__PURE__*/React.createElement("div", {
58
57
  className: "ald-logic-tree-node-wrap",
59
58
  ref: ref,
60
- key: key
59
+ key: node.id
61
60
  }, /*#__PURE__*/React.createElement("div", {
62
61
  className: "ald-logic-tree-horizontal-line"
63
62
  }), /*#__PURE__*/React.createElement(DisplayLogicItem, {
@@ -7,7 +7,7 @@ function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefine
7
7
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
8
8
  import classNames from 'classnames';
9
9
  import _ from 'lodash';
10
- import React, { useCallback, useContext, useRef, useState } from 'react';
10
+ import React, { useCallback, useContext, useEffect, useRef, useState } from 'react';
11
11
  import { DragPreviewImage, useDrag, useDrop } from 'react-dnd';
12
12
  import { EPutPosition } from "../..";
13
13
  import DragLightLine from "../../../Icon/components/DragLightLine";
@@ -62,6 +62,8 @@ export default function LogicItem(_ref) {
62
62
  }];
63
63
  var type = value.type;
64
64
  var ref = useRef(null);
65
+ var firstResizeObserverRef = useRef(null);
66
+ var lastResizeObserverRef = useRef(null);
65
67
  var _useDrag = useDrag({
66
68
  type: 'LOGIC_ITEM',
67
69
  item: {
@@ -147,6 +149,10 @@ export default function LogicItem(_ref) {
147
149
  drag(drop(ref));
148
150
  var isDragOver = isOver && canDrop && !isRoot;
149
151
  var firstRef = useCallback(function (node) {
152
+ if (firstResizeObserverRef.current) {
153
+ firstResizeObserverRef.current.disconnect();
154
+ firstResizeObserverRef.current = null;
155
+ }
150
156
  if (!node) return;
151
157
  var resizeObserver = new ResizeObserver(function (entries) {
152
158
  var _iterator = _createForOfIteratorHelper(entries),
@@ -166,11 +172,13 @@ export default function LogicItem(_ref) {
166
172
  }
167
173
  });
168
174
  resizeObserver.observe(node);
169
- return function () {
170
- resizeObserver.disconnect();
171
- };
175
+ firstResizeObserverRef.current = resizeObserver;
172
176
  }, []);
173
177
  var lastRef = useCallback(function (node) {
178
+ if (lastResizeObserverRef.current) {
179
+ lastResizeObserverRef.current.disconnect();
180
+ lastResizeObserverRef.current = null;
181
+ }
174
182
  if (!node) return;
175
183
  var resizeObserver = new ResizeObserver(function (entries) {
176
184
  var _iterator2 = _createForOfIteratorHelper(entries),
@@ -190,9 +198,7 @@ export default function LogicItem(_ref) {
190
198
  }
191
199
  });
192
200
  resizeObserver.observe(node);
193
- return function () {
194
- resizeObserver.disconnect();
195
- };
201
+ lastResizeObserverRef.current = resizeObserver;
196
202
  }, []);
197
203
  var onAddCondition = function onAddCondition() {
198
204
  var id = value.id;
@@ -214,6 +220,18 @@ export default function LogicItem(_ref) {
214
220
  var id = value.id;
215
221
  changeRecordData(id, data);
216
222
  };
223
+ useEffect(function () {
224
+ return function () {
225
+ if (firstResizeObserverRef.current) {
226
+ firstResizeObserverRef.current.disconnect();
227
+ firstResizeObserverRef.current = null;
228
+ }
229
+ if (lastResizeObserverRef.current) {
230
+ lastResizeObserverRef.current.disconnect();
231
+ lastResizeObserverRef.current = null;
232
+ }
233
+ };
234
+ }, []);
217
235
  var isEn = locale === ELangType.EN;
218
236
  if (type === ENodeType.LOGIC) {
219
237
  var nodes = value.nodes,
@@ -22,6 +22,7 @@ interface IPanelProps {
22
22
  originNode: ReactNode;
23
23
  }) => ReactNode;
24
24
  renderSelectedTag?: (user: IUser | IUserGroup, originNode: ReactNode) => ReactNode;
25
+ filterItem?: (item: IUser | IUserGroup) => boolean;
25
26
  }
26
27
  export declare const userDisplayNameIsRepeated: (userList: TUser, displayName?: string) => boolean;
27
28
  export default function Panel(props: IPanelProps): React.JSX.Element;
@@ -46,7 +46,8 @@ export default function Panel(props) {
46
46
  footer = props.footer,
47
47
  onCancel = props.onCancel,
48
48
  renderItem = props.renderItem,
49
- renderSelectedTag = props.renderSelectedTag;
49
+ renderSelectedTag = props.renderSelectedTag,
50
+ filterItem = props.filterItem;
50
51
  var _useState = useState([]),
51
52
  _useState2 = _slicedToArray(_useState, 2),
52
53
  selectedUsers = _useState2[0],
@@ -97,6 +98,7 @@ export default function Panel(props) {
97
98
  var userSelection = /*#__PURE__*/React.createElement(MemberSelection, {
98
99
  className: 'ald-member-picker-member-selection-multiple',
99
100
  userList: dataList.filter(isUser),
101
+ filterItem: filterItem,
100
102
  width: (panelwidth - 6) / 2,
101
103
  selectedUsers: selectedUsers.filter(isUser),
102
104
  onChange: onSelectionChange,
@@ -109,6 +111,7 @@ export default function Panel(props) {
109
111
  var userGroupSelection = /*#__PURE__*/React.createElement(UserGroupSelection, {
110
112
  className: 'ald-member-picker-member-selection-multiple',
111
113
  userGroupList: dataList.filter(isUserGroup),
114
+ filterItem: filterItem,
112
115
  width: (panelwidth - 6) / 2,
113
116
  selectedUsersGroup: selectedUsers.filter(isUserGroup),
114
117
  onChange: onSelectionChange,
@@ -20,6 +20,7 @@ interface IProps {
20
20
  originNode: ReactNode;
21
21
  }) => ReactNode;
22
22
  renderSelectedTag?: (user: IUser | IUserGroup, originNode: ReactNode) => ReactNode;
23
+ filterItem?: (item: IUser | IUserGroup) => boolean;
23
24
  }
24
- export declare const PanelWrapper: ({ type, value, multiple, dropdownWidth, onChange, onCancel, className, footer, lockedIds, renderItem, renderSelectedTag, }: IProps) => React.JSX.Element;
25
+ export declare const PanelWrapper: ({ type, value, multiple, dropdownWidth, onChange, onCancel, className, footer, lockedIds, renderItem, renderSelectedTag, filterItem, }: IProps) => React.JSX.Element;
25
26
  export default PanelWrapper;
@@ -26,7 +26,8 @@ export var PanelWrapper = function PanelWrapper(_ref) {
26
26
  _ref$lockedIds = _ref.lockedIds,
27
27
  lockedIds = _ref$lockedIds === void 0 ? [] : _ref$lockedIds,
28
28
  renderItem = _ref.renderItem,
29
- renderSelectedTag = _ref.renderSelectedTag;
29
+ renderSelectedTag = _ref.renderSelectedTag,
30
+ filterItem = _ref.filterItem;
30
31
  var _useContext = useContext(LocaleContext),
31
32
  locale = _useContext.locale;
32
33
  var t = getTranslator(locale);
@@ -88,12 +89,17 @@ export var PanelWrapper = function PanelWrapper(_ref) {
88
89
  loading = _useRequest.loading,
89
90
  run = _useRequest.run;
90
91
  var totalUserList = useMemo(function () {
91
- var totalUsers = searchUserList.concat(selectedUserList);
92
+ var totalUsers = searchUserList.concat(selectedUserList).filter(function (item) {
93
+ if (filterItem) {
94
+ return filterItem(item);
95
+ }
96
+ return true;
97
+ });
92
98
  return _.uniqBy(totalUsers, function (data) {
93
99
  if (data.type === EUserType.USER) return data.userId;
94
100
  return data.groupId;
95
101
  });
96
- }, [searchUserList, selectedUserList]);
102
+ }, [searchUserList, selectedUserList, filterItem]);
97
103
  useEffect(function () {
98
104
  run();
99
105
  }, [run, searchString]);
@@ -51,6 +51,18 @@ export default function useScroll(props) {
51
51
  if (!elem) {
52
52
  return;
53
53
  }
54
+
55
+ // 先检查表格是否真的需要横向滚动
56
+ var DEVIATION = 2;
57
+ var needsHorizontalScroll = elem.scrollWidth > elem.clientWidth + DEVIATION;
58
+ if (!needsHorizontalScroll) {
59
+ // 表格宽度足够,不需要横向滚动,隐藏左右两侧阴影
60
+ setIsPingLeft(false);
61
+ setIsPingRight(false);
62
+ return;
63
+ }
64
+
65
+ // 表格需要横向滚动,根据滚动位置判断是否显示阴影
54
66
  var scrollLeft = elem.scrollLeft;
55
67
  if (scrollLeft <= 0) {
56
68
  setIsPingLeft(false);
@@ -288,8 +288,9 @@ function Table(props, ref) {
288
288
  return 48;
289
289
  },
290
290
  // estimate row height for accurate scrollbar dragging
291
+ // 没有测量出 bodyRef.current 的高度时,返回 null,避免虚拟化器从 DOM 获取异常高度
291
292
  getScrollElement: function getScrollElement() {
292
- return bodyRef.current;
293
+ return totalSize ? bodyRef.current : null;
293
294
  },
294
295
  // measure dynamic row height, except in firefox because it measures table border height incorrectly
295
296
  measureElement: typeof window !== 'undefined' && navigator.userAgent.indexOf('Firefox') === -1 ? function (element) {
@@ -10,5 +10,6 @@
10
10
  &.ald-text-link-disabled {
11
11
  pointer-events: none;
12
12
  cursor: default;
13
+ opacity: 0.5;
13
14
  }
14
15
  }
@@ -20,14 +20,6 @@
20
20
  color: var(--interaction-default-selected);
21
21
  }
22
22
  }
23
-
24
- &.ald-text-link-disabled {
25
- color: var(--alias-colors-text-disabled);
26
-
27
- .ald-icon {
28
- color: var(--alias-colors-icon-disabled);
29
- }
30
- }
31
23
  }
32
24
 
33
25
  .ald-text-link-secondary {
@@ -52,14 +44,6 @@
52
44
  color: var(--interaction-default-selected);
53
45
  }
54
46
  }
55
-
56
- &.ald-text-link-disabled {
57
- color: var(--alias-colors-text-disabled);
58
-
59
- .ald-icon {
60
- color: var(--alias-colors-icon-disabled);
61
- }
62
- }
63
47
  }
64
48
 
65
49
  .ald-text-link-show-underline {