@aloudata/aloudata-design 2.19.2 → 2.19.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/AldSelect/style/index.less +1 -1
- package/dist/ColorPicker/style/index.less +22 -1
- package/dist/InputSearch/index.d.ts +3 -0
- package/dist/InputSearch/index.js +9 -2
- package/dist/MemberPicker/components/Panel.d.ts +1 -0
- package/dist/MemberPicker/components/Panel.js +4 -1
- package/dist/MemberPicker/components/PanelWrapper.d.ts +2 -1
- package/dist/MemberPicker/components/PanelWrapper.js +9 -3
- package/dist/Table/hooks/useScroll.js +12 -0
- package/dist/TextLink/style/index.less +1 -0
- package/dist/TextLink/style/type.less +0 -16
- package/dist/ald.min.css +1 -1
- package/package.json +1 -1
|
@@ -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
|
-
|
|
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;
|
|
@@ -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);
|
|
@@ -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 {
|