@apdesign/web-react 1.3.4 → 1.4.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.
- package/dist/arco-icon.min.js +1 -1
- package/dist/arco.development.js +7 -7
- package/dist/arco.min.js +2 -2
- package/es/Button/index.d.ts +3 -3
- package/es/DatePicker/util.d.ts +1 -1
- package/es/Menu/context.d.ts +1 -1
- package/es/Select/select.js +17 -1
- package/es/Tree/index.js +15 -0
- package/es/TreeSelect/hook/useStateValue.d.ts +1 -1
- package/es/TreeSelect/hook/useStateValue.js +44 -3
- package/es/TreeSelect/interface.d.ts +6 -0
- package/es/TreeSelect/tree-list.d.ts +1 -0
- package/es/TreeSelect/tree-list.js +38 -3
- package/es/TreeSelect/tree-select.js +57 -11
- package/es/index.d.ts +1 -1
- package/es/index.js +1 -1
- package/lib/Select/select.js +16 -0
- package/lib/Tree/index.js +15 -0
- package/lib/TreeSelect/hook/useStateValue.d.ts +1 -1
- package/lib/TreeSelect/hook/useStateValue.js +44 -3
- package/lib/TreeSelect/interface.d.ts +6 -0
- package/lib/TreeSelect/tree-list.d.ts +1 -0
- package/lib/TreeSelect/tree-list.js +37 -2
- package/lib/TreeSelect/tree-select.js +57 -11
- package/lib/index.d.ts +1 -1
- package/lib/index.js +1 -1
- package/package.json +1 -1
|
@@ -61,10 +61,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
61
61
|
var react_1 = __importStar(require("react"));
|
|
62
62
|
var Tree_1 = __importDefault(require("../Tree"));
|
|
63
63
|
var is_1 = require("../_util/is");
|
|
64
|
+
var ConfigProvider_1 = require("../ConfigProvider");
|
|
64
65
|
function TreeList(props, ref) {
|
|
65
|
-
var value = props.value, multiple = props.multiple, loadMore = props.loadMore, treeCheckedStrategy = props.treeCheckedStrategy, treeCheckStrictly = props.treeCheckStrictly, treeData = props.treeData, treeProps = props.treeProps, prefixCls = props.prefixCls, treeCheckable = props.treeCheckable;
|
|
66
|
+
var value = props.value, multiple = props.multiple, isQuickSingleSelectMode = props.isQuickSingleSelectMode, loadMore = props.loadMore, treeCheckedStrategy = props.treeCheckedStrategy, treeCheckStrictly = props.treeCheckStrictly, treeData = props.treeData, treeProps = props.treeProps, prefixCls = props.prefixCls, treeCheckable = props.treeCheckable, confirmCheck = props.confirmCheck;
|
|
67
|
+
var locale = (0, react_1.useContext)(ConfigProvider_1.ConfigContext).locale;
|
|
66
68
|
var propsRenderTitle = treeProps && treeProps.renderTitle;
|
|
69
|
+
var propsRenderExtra = treeProps && treeProps.renderExtra;
|
|
67
70
|
var treeRef = (0, react_1.useRef)();
|
|
71
|
+
var isMultipleQuickSelectMode = multiple && isQuickSingleSelectMode;
|
|
68
72
|
var handleCheck = (0, react_1.useCallback)(function (keys, _a) {
|
|
69
73
|
var checkedNodes = _a.checkedNodes, checked = _a.checked, node = _a.node;
|
|
70
74
|
var newValue = keys.map(function (key) {
|
|
@@ -144,6 +148,37 @@ function TreeList(props, ref) {
|
|
|
144
148
|
}
|
|
145
149
|
return title;
|
|
146
150
|
}, [prefixCls, props.inputValue, propsRenderTitle]);
|
|
151
|
+
var renderExtra = (0, react_1.useCallback)(function (nodeProps) {
|
|
152
|
+
var _a;
|
|
153
|
+
if (isMultipleQuickSelectMode) {
|
|
154
|
+
if (propsRenderExtra) {
|
|
155
|
+
console.warn('renderExtra is not recommended for use in quick single select mode');
|
|
156
|
+
}
|
|
157
|
+
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
158
|
+
react_1.default.createElement("span", { className: prefixCls + "-extra-QuickSingleSelect-button", style: {
|
|
159
|
+
position: 'absolute',
|
|
160
|
+
right: 0,
|
|
161
|
+
display: 'none',
|
|
162
|
+
backgroundColor: 'rgb(var(--primary-6))',
|
|
163
|
+
cursor: 'pointer',
|
|
164
|
+
color: 'white',
|
|
165
|
+
padding: '6px',
|
|
166
|
+
fontSize: 12,
|
|
167
|
+
paddingLeft: '20px',
|
|
168
|
+
clipPath: 'polygon(12px 50%, 0% 0%, 100% 0%, 100% 100%, 0% 100%)',
|
|
169
|
+
whiteSpace: 'nowrap',
|
|
170
|
+
}, onClick: function () {
|
|
171
|
+
handleCheck([nodeProps._key], {
|
|
172
|
+
checkedNodes: [],
|
|
173
|
+
checked: true,
|
|
174
|
+
node: { props: nodeProps },
|
|
175
|
+
});
|
|
176
|
+
confirmCheck();
|
|
177
|
+
} }, (_a = locale.Select) === null || _a === void 0 ? void 0 : _a.filterThisItemOnly), propsRenderExtra === null || propsRenderExtra === void 0 ? void 0 :
|
|
178
|
+
propsRenderExtra(nodeProps)));
|
|
179
|
+
}
|
|
180
|
+
return propsRenderExtra === null || propsRenderExtra === void 0 ? void 0 : propsRenderExtra(nodeProps);
|
|
181
|
+
}, [propsRenderExtra, isMultipleQuickSelectMode]);
|
|
147
182
|
var extraProps = (0, react_1.useMemo)(function () {
|
|
148
183
|
return props.treeCheckable
|
|
149
184
|
? {
|
|
@@ -163,6 +198,6 @@ function TreeList(props, ref) {
|
|
|
163
198
|
}, []);
|
|
164
199
|
return (react_1.default.createElement(Tree_1.default, __assign({ ref: treeRef, size: props.size, blockNode: true, filterNode: props.filterNode }, treeProps, { checkable: treeCheckable, multiple: multiple, loadMore: props.loadMore ? handleLoadMore : undefined, checkedStrategy: treeCheckedStrategy, checkStrictly: treeCheckStrictly, onMouseDown: function (e) {
|
|
165
200
|
e.preventDefault();
|
|
166
|
-
} }, extraProps, { treeData: treeData, fieldNames: props.fieldNames, renderTitle: renderTitle, onSelect: onSelect, selectedKeys: selectedKeys })));
|
|
201
|
+
} }, extraProps, { treeData: treeData, fieldNames: props.fieldNames, renderTitle: renderTitle, renderExtra: renderExtra, onSelect: onSelect, selectedKeys: selectedKeys })));
|
|
167
202
|
}
|
|
168
203
|
exports.default = (0, react_1.forwardRef)(TreeList);
|
|
@@ -113,6 +113,7 @@ var classNames_1 = __importDefault(require("../_util/classNames"));
|
|
|
113
113
|
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
|
+
var Button_1 = __importDefault(require("../Button"));
|
|
116
117
|
function isEmptyValue(value) {
|
|
117
118
|
return (!value ||
|
|
118
119
|
((0, is_1.isArray)(value) && value.length === 0) ||
|
|
@@ -122,10 +123,11 @@ var defaultProps = {
|
|
|
122
123
|
bordered: true,
|
|
123
124
|
treeCheckedStrategy: Tree_1.default.SHOW_CHILD,
|
|
124
125
|
fieldNames: interface_1.DefaultFieldNames,
|
|
126
|
+
isQuickSingleSelectMode: true,
|
|
125
127
|
};
|
|
126
128
|
var triggerPopupAlign = { bottom: 4 };
|
|
127
129
|
var TreeSelect = function (baseProps, ref) {
|
|
128
|
-
var _a = (0, react_1.useContext)(ConfigProvider_1.ConfigContext), getPrefixCls = _a.getPrefixCls, renderEmpty = _a.renderEmpty, componentConfig = _a.componentConfig, rtl = _a.rtl;
|
|
130
|
+
var _a = (0, react_1.useContext)(ConfigProvider_1.ConfigContext), getPrefixCls = _a.getPrefixCls, renderEmpty = _a.renderEmpty, componentConfig = _a.componentConfig, rtl = _a.rtl, locale = _a.locale;
|
|
129
131
|
var props = (0, useMergeProps_1.default)(baseProps, defaultProps, componentConfig === null || componentConfig === void 0 ? void 0 : componentConfig.TreeSelect);
|
|
130
132
|
var refIsFirstRender = (0, useIsFirstRender_1.default)();
|
|
131
133
|
var triggerRef = (0, react_1.useRef)();
|
|
@@ -147,8 +149,9 @@ var TreeSelect = function (baseProps, ref) {
|
|
|
147
149
|
// 触发 onInputValueChange 回调的原因
|
|
148
150
|
var refOnInputChangeCallbackReason = (0, react_1.useRef)(null);
|
|
149
151
|
var onInputValueChange = props.onInputValueChange;
|
|
150
|
-
var _f = __read((0, useStateValue_1.default)(props, key2nodeProps, indeterminateKeys), 2), value = _f[0], setValue = _f[1];
|
|
151
152
|
var multiple = props.multiple || props.treeCheckable;
|
|
153
|
+
var isMultipleQuickSelectMode = multiple && props.isQuickSingleSelectMode;
|
|
154
|
+
var _f = __read((0, useStateValue_1.default)(props, key2nodeProps, indeterminateKeys), 5), value = _f[0], setValue = _f[1], realValue = _f[2], confirmSetValue = _f[3], cancelSetValue = _f[4];
|
|
152
155
|
var prefixCls = getPrefixCls('tree-select');
|
|
153
156
|
var isFilterNode = inputValue && !(0, is_1.isFunction)(props.onSearch);
|
|
154
157
|
// Unique ID of this select instance
|
|
@@ -158,6 +161,9 @@ var TreeSelect = function (baseProps, ref) {
|
|
|
158
161
|
if (visible !== popupVisible) {
|
|
159
162
|
setPopupVisible(visible);
|
|
160
163
|
(_a = props.onVisibleChange) === null || _a === void 0 ? void 0 : _a.call(props, visible);
|
|
164
|
+
if (isMultipleQuickSelectMode && !visible) {
|
|
165
|
+
cancelSetValue();
|
|
166
|
+
}
|
|
161
167
|
}
|
|
162
168
|
};
|
|
163
169
|
// 尝试更新 inputValue,并触发 onInputValueChange
|
|
@@ -230,6 +236,13 @@ var TreeSelect = function (baseProps, ref) {
|
|
|
230
236
|
tryUpdatePopupVisible(false);
|
|
231
237
|
}
|
|
232
238
|
}, [setValue, resetInputValue, popupVisible]);
|
|
239
|
+
var cancelCheck = function () {
|
|
240
|
+
tryUpdatePopupVisible(false);
|
|
241
|
+
};
|
|
242
|
+
var confirmCheck = function () {
|
|
243
|
+
confirmSetValue();
|
|
244
|
+
tryUpdatePopupVisible(false);
|
|
245
|
+
};
|
|
233
246
|
var handleRemoveCheckedItem = function (item, index, e) {
|
|
234
247
|
e.stopPropagation();
|
|
235
248
|
if (item.disabled) {
|
|
@@ -237,21 +250,31 @@ var TreeSelect = function (baseProps, ref) {
|
|
|
237
250
|
}
|
|
238
251
|
var itemValue = (0, is_1.isObject)(item.value) ? item.value.value : item.value;
|
|
239
252
|
if (!props.treeCheckable || props.treeCheckStrictly || !key2nodeProps[itemValue]) {
|
|
240
|
-
var newValue =
|
|
253
|
+
var newValue = realValue.filter(function (_, i) { return i !== index; });
|
|
241
254
|
triggerChange(newValue, {
|
|
242
255
|
trigger: key2nodeProps[itemValue] || item,
|
|
243
256
|
checked: false,
|
|
244
257
|
selected: false,
|
|
245
258
|
});
|
|
259
|
+
if (isMultipleQuickSelectMode) {
|
|
260
|
+
setTimeout(function () {
|
|
261
|
+
confirmCheck();
|
|
262
|
+
}, 0);
|
|
263
|
+
}
|
|
246
264
|
return;
|
|
247
265
|
}
|
|
248
|
-
var result = (0, util_1.getAllCheckedKeysByCheck)(itemValue, false, (0, utils_1.normalizeValueToArray)(
|
|
266
|
+
var result = (0, util_1.getAllCheckedKeysByCheck)(itemValue, false, (0, utils_1.normalizeValueToArray)(realValue), key2nodeProps, indeterminateKeys.current);
|
|
249
267
|
indeterminateKeys.current = result.indeterminateKeys;
|
|
250
|
-
triggerChange((0, useStateValue_1.parseValue)(result.checkedKeys, key2nodeProps,
|
|
268
|
+
triggerChange((0, useStateValue_1.parseValue)(result.checkedKeys, key2nodeProps, realValue), {
|
|
251
269
|
trigger: key2nodeProps[itemValue],
|
|
252
270
|
checked: false,
|
|
253
271
|
selected: false,
|
|
254
272
|
});
|
|
273
|
+
if (isMultipleQuickSelectMode) {
|
|
274
|
+
setTimeout(function () {
|
|
275
|
+
confirmCheck();
|
|
276
|
+
}, 0);
|
|
277
|
+
}
|
|
255
278
|
};
|
|
256
279
|
(0, react_1.useEffect)(function () {
|
|
257
280
|
inputValue !== undefined && handleSearch(inputValue);
|
|
@@ -314,12 +337,35 @@ var TreeSelect = function (baseProps, ref) {
|
|
|
314
337
|
var renderView = function (eleView) {
|
|
315
338
|
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 () {
|
|
316
339
|
var _a;
|
|
317
|
-
var _b, _c, _d;
|
|
340
|
+
var _b, _c, _d, _e, _f;
|
|
318
341
|
var dropdownRender = props.dropdownRender;
|
|
319
|
-
var
|
|
320
|
-
|
|
342
|
+
var treeListDom = (react_1.default.createElement(tree_list_1.default, __assign({ prefixCls: prefixCls, ref: treeRef }, props, { inputValue: inputValue, filterNode: filterNode, value: value, onChange: triggerChange, multiple: multiple, treeData: treeData, confirmCheck: confirmCheck })));
|
|
343
|
+
var dom = (isFilterNode && isEmptyValue(searchKeys)) || isEmptyValue(treeData) ? (props.notFoundContent || renderEmpty('TreeSelect')) : isMultipleQuickSelectMode ? (react_1.default.createElement("div", { style: {
|
|
344
|
+
maxHeight: 188,
|
|
345
|
+
display: 'flex',
|
|
346
|
+
flexDirection: 'column',
|
|
347
|
+
} },
|
|
348
|
+
react_1.default.createElement("div", { style: { flex: 1, overflowY: 'auto' } }, treeListDom),
|
|
349
|
+
react_1.default.createElement("div", { style: {
|
|
350
|
+
flex: 'none',
|
|
351
|
+
display: 'flex',
|
|
352
|
+
justifyContent: 'flex-end',
|
|
353
|
+
gap: 12,
|
|
354
|
+
padding: '8px 16px 4px',
|
|
355
|
+
borderTop: '1px solid var(--color-fill-3)',
|
|
356
|
+
} },
|
|
357
|
+
react_1.default.createElement(Button_1.default, { size: "mini", onClick: cancelCheck }, (_b = locale.Select) === null || _b === void 0 ? void 0 : _b.cancelText),
|
|
358
|
+
react_1.default.createElement(Button_1.default, { type: "primary", size: "mini", onClick: function () {
|
|
359
|
+
confirmCheck();
|
|
360
|
+
} }, (_c = locale.Select) === null || _c === void 0 ? void 0 : _c.okText)))) : (treeListDom);
|
|
361
|
+
var wrapStyle = isMultipleQuickSelectMode
|
|
362
|
+
? {
|
|
363
|
+
overflow: 'hidden',
|
|
364
|
+
}
|
|
365
|
+
: {};
|
|
366
|
+
return (react_1.default.createElement("div", { id: instancePopupID, className: (0, classNames_1.default)(prefixCls + "-popup", (_a = {}, _a[prefixCls + "-rtl-popup"] = rtl, _a)), style: __assign(__assign({ maxHeight: ((_d = props.treeProps) === null || _d === void 0 ? void 0 : _d.height) || ((_f = (_e = props.treeProps) === null || _e === void 0 ? void 0 : _e.virtualListProps) === null || _f === void 0 ? void 0 : _f.height)
|
|
321
367
|
? 'unset'
|
|
322
|
-
: '' }, props.dropdownMenuStyle) }, (0, is_1.isFunction)(dropdownRender) ? dropdownRender(dom) : dom));
|
|
368
|
+
: '' }, wrapStyle), props.dropdownMenuStyle) }, (0, is_1.isFunction)(dropdownRender) ? dropdownRender(dom) : dom));
|
|
323
369
|
}, disabled: props.disabled, onVisibleChange: function (visible) {
|
|
324
370
|
tryUpdatePopupVisible(visible);
|
|
325
371
|
// props.onVisibleChange && props.onVisibleChange(visible);
|
|
@@ -340,9 +386,9 @@ var TreeSelect = function (baseProps, ref) {
|
|
|
340
386
|
return props.triggerElement({ value: valueForCallback });
|
|
341
387
|
})()
|
|
342
388
|
: props.triggerElement;
|
|
343
|
-
return !(0, is_1.isNullOrUndefined)(customTriggerElement) ? (renderView(customTriggerElement)) : (react_1.default.createElement(select_view_1.default, __assign({ ref: refSelectView, rtl: rtl, ariaControls: instancePopupID }, props, { popupVisible: popupVisible, value: !multiple && (0, is_1.isArray)(
|
|
389
|
+
return !(0, is_1.isNullOrUndefined)(customTriggerElement) ? (renderView(customTriggerElement)) : (react_1.default.createElement(select_view_1.default, __assign({ ref: refSelectView, rtl: rtl, ariaControls: instancePopupID }, props, { popupVisible: popupVisible, value: !multiple && (0, is_1.isArray)(realValue) ? realValue[0] : realValue, inputValue: inputValue,
|
|
344
390
|
// other
|
|
345
|
-
isEmptyValue: isEmptyValue(
|
|
391
|
+
isEmptyValue: isEmptyValue(realValue), prefixCls: prefixCls, isMultiple: multiple, renderText: renderText, onSort: tryUpdateSelectValue, onRemoveCheckedItem: handleRemoveCheckedItem, onClear: function (e) {
|
|
346
392
|
var _a;
|
|
347
393
|
e.stopPropagation();
|
|
348
394
|
triggerChange([], {});
|
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.
|
|
142
|
+
export declare const version = "1.4.0";
|
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.
|
|
150
|
+
exports.version = '1.4.0';
|