@zykj2024/much-library 1.1.6 → 1.1.7-beta.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.
- package/dist/McContainer/demo/generic.d.ts +8 -0
- package/dist/McContainer/demo/generic.js +91 -0
- package/dist/McContainer/index.d.ts +147 -108
- package/dist/McContainer/index.js +16 -7
- package/dist/McEllipsis/demo/base.d.ts +6 -0
- package/dist/McEllipsis/demo/base.js +22 -0
- package/dist/McEllipsis/demo/middle.d.ts +6 -0
- package/dist/McEllipsis/demo/middle.js +24 -0
- package/dist/McEllipsis/demo/table.d.ts +5 -0
- package/dist/McEllipsis/demo/table.js +93 -0
- package/dist/McEllipsis/demo/tooltip-size.d.ts +6 -0
- package/dist/McEllipsis/demo/tooltip-size.js +20 -0
- package/dist/McEllipsis/demo/tooltip.d.ts +6 -0
- package/dist/McEllipsis/demo/tooltip.js +53 -0
- package/dist/McEllipsis/index.css +4 -0
- package/dist/McEllipsis/index.d.ts +40 -0
- package/dist/McEllipsis/index.js +115 -0
- package/dist/McGroupPanel/index.css +8 -3
- package/dist/McGroupPanel/index.d.ts +1 -0
- package/dist/McGroupPanel/index.js +156 -141
- package/dist/McInputNumber/index.d.ts +3 -0
- package/dist/McInputNumber/index.js +16 -9
- package/dist/McListSelect/comps/ListSelect.d.ts +67 -0
- package/dist/McListSelect/comps/ListSelect.js +289 -0
- package/dist/McListSelect/comps/ListSelectPanel.d.ts +138 -0
- package/dist/McListSelect/comps/ListSelectPanel.js +451 -0
- package/dist/McListSelect/comps/SelectedItem.d.ts +17 -0
- package/dist/McListSelect/comps/SelectedItem.js +76 -0
- package/dist/McListSelect/demo/base.d.ts +6 -0
- package/dist/McListSelect/demo/base.js +125 -0
- package/dist/McListSelect/demo/inexistent.d.ts +6 -0
- package/dist/McListSelect/demo/inexistent.js +111 -0
- package/dist/McListSelect/demo/layout.d.ts +6 -0
- package/dist/McListSelect/demo/layout.js +70 -0
- package/dist/McListSelect/demo/other.d.ts +6 -0
- package/dist/McListSelect/demo/other.js +68 -0
- package/dist/McListSelect/demo/panel-inexistent.d.ts +6 -0
- package/dist/McListSelect/demo/panel-inexistent.js +86 -0
- package/dist/McListSelect/index.css +273 -0
- package/dist/McListSelect/index.d.ts +10 -0
- package/dist/McListSelect/index.js +5 -0
- package/dist/McListSelect/mock/index.d.ts +1 -0
- package/dist/McListSelect/mock/index.js +27 -0
- package/dist/McModalProvider/index.d.ts +2 -2
- package/dist/McThemeConfig/layoutStyle.d.ts +1 -1
- package/dist/McThemeConfig/layoutStyle.js +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.js +3 -0
- package/package.json +3 -1
@@ -3,6 +3,7 @@ import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
|
3
3
|
import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
|
4
4
|
var _excluded = ["label", "precision", "value", "onChange", "className"];
|
5
5
|
import { InputNumber } from 'antd';
|
6
|
+
import NP from 'number-precision';
|
6
7
|
import { forwardRef, useEffect, useState } from 'react';
|
7
8
|
import "./index.css";
|
8
9
|
import { jsx as _jsx } from "react/jsx-runtime";
|
@@ -11,7 +12,7 @@ var McInputNumber = /*#__PURE__*/forwardRef(function (props, ref) {
|
|
11
12
|
_props$precision = props.precision,
|
12
13
|
precision = _props$precision === void 0 ? 0 : _props$precision,
|
13
14
|
value = props.value,
|
14
|
-
|
15
|
+
onChange = props.onChange,
|
15
16
|
className = props.className,
|
16
17
|
rest = _objectWithoutProperties(props, _excluded);
|
17
18
|
var _useState = useState(null),
|
@@ -21,6 +22,19 @@ var McInputNumber = /*#__PURE__*/forwardRef(function (props, ref) {
|
|
21
22
|
useEffect(function () {
|
22
23
|
setInputNumberValue(typeof value === 'number' ? value : null);
|
23
24
|
}, [value]);
|
25
|
+
var handleChange = function handleChange(v) {
|
26
|
+
var formattedValue = null;
|
27
|
+
if (v !== null && v !== '') {
|
28
|
+
var num = typeof v === 'string' ? parseFloat(v) : v;
|
29
|
+
if (!isNaN(num)) {
|
30
|
+
formattedValue = NP.round(num, precision);
|
31
|
+
}
|
32
|
+
}
|
33
|
+
if (!props.hasOwnProperty('value')) {
|
34
|
+
setInputNumberValue(formattedValue);
|
35
|
+
}
|
36
|
+
onChange === null || onChange === void 0 || onChange(formattedValue);
|
37
|
+
};
|
24
38
|
return /*#__PURE__*/_jsx(InputNumber, _objectSpread({
|
25
39
|
ref: ref,
|
26
40
|
className: "mc-input-number ".concat(className || ''),
|
@@ -29,14 +43,7 @@ var McInputNumber = /*#__PURE__*/forwardRef(function (props, ref) {
|
|
29
43
|
children: label
|
30
44
|
}),
|
31
45
|
value: inputNumberValue,
|
32
|
-
onChange:
|
33
|
-
// 检查是否为数字,并格式化为最多保留precision位小数,否则清空
|
34
|
-
var _v = typeof v === 'number' ? parseFloat(v.toFixed(precision)) : null;
|
35
|
-
if (!props.hasOwnProperty('value')) {
|
36
|
-
setInputNumberValue(_v);
|
37
|
-
}
|
38
|
-
_onChange === null || _onChange === void 0 || _onChange(_v);
|
39
|
-
},
|
46
|
+
onChange: handleChange,
|
40
47
|
placeholder: "\u8BF7\u8F93\u5165"
|
41
48
|
}, rest));
|
42
49
|
});
|
@@ -0,0 +1,67 @@
|
|
1
|
+
import { FC } from 'react';
|
2
|
+
import '../index.less';
|
3
|
+
import { McListSelectPanelProps } from './ListSelectPanel';
|
4
|
+
/**
|
5
|
+
* @author: wangzt
|
6
|
+
* @description: 下拉列表选择器-仅支持多选
|
7
|
+
*/
|
8
|
+
interface Inexistent {
|
9
|
+
/**
|
10
|
+
* 不存在值的文字描述
|
11
|
+
* @defaultValue '不存在'
|
12
|
+
*/
|
13
|
+
text?: string;
|
14
|
+
/**
|
15
|
+
* 不存在值的文字颜色
|
16
|
+
* @defaultValue '#ff4d4f'
|
17
|
+
*/
|
18
|
+
color?: string;
|
19
|
+
/**
|
20
|
+
* 是否保留原值
|
21
|
+
* @remarks 若为 true,则在执行不存在值的处理逻辑时,不向外抛出 undefined
|
22
|
+
* @defaultValue false
|
23
|
+
*/
|
24
|
+
reserveOriginalValue?: boolean;
|
25
|
+
}
|
26
|
+
export type McListSelectProps = Omit<McListSelectPanelProps, 'PanelInexistent'> & {
|
27
|
+
/**
|
28
|
+
* 查询项的字段名
|
29
|
+
* @remarks 配合 McContainer 组件的查询功能使用
|
30
|
+
*/
|
31
|
+
name?: string;
|
32
|
+
/**
|
33
|
+
* 查询项的标签文字
|
34
|
+
* @remarks 若未设置,样式为表单项形态
|
35
|
+
*/
|
36
|
+
label?: React.ReactNode;
|
37
|
+
/**
|
38
|
+
* 选择框默认文本
|
39
|
+
* @defaultValue '请选择'
|
40
|
+
*/
|
41
|
+
placeholder?: string;
|
42
|
+
/**
|
43
|
+
* 最多显示多少个 tag
|
44
|
+
* @remarks 响应式模式会对性能产生损耗
|
45
|
+
* @defaultValue 1
|
46
|
+
*/
|
47
|
+
maxTagCount?: number | 'responsive';
|
48
|
+
/**
|
49
|
+
* 是否每次展开下拉菜单时都初始化(重置查询)
|
50
|
+
* @defaultValue true
|
51
|
+
*/
|
52
|
+
initOnOpen?: boolean;
|
53
|
+
/**
|
54
|
+
* 是否执行不存在值的处理逻辑
|
55
|
+
* @remarks
|
56
|
+
* - 异步查询时无效
|
57
|
+
* - 为保证该属性的相关功能生效,options 无数据的情况下请配置为空数组 []
|
58
|
+
* @defaultValue false
|
59
|
+
*/
|
60
|
+
inexistent?: boolean | Inexistent;
|
61
|
+
};
|
62
|
+
export type McListSelectRef = {
|
63
|
+
/** 初始化方法(显示下拉菜单并重置查询) */
|
64
|
+
init: () => void;
|
65
|
+
};
|
66
|
+
declare const McListSelect: FC<McListSelectProps>;
|
67
|
+
export default McListSelect;
|
@@ -0,0 +1,289 @@
|
|
1
|
+
import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
|
2
|
+
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
3
|
+
import { Button, Popover, Select } from 'antd';
|
4
|
+
import classNames from 'classnames';
|
5
|
+
import { forwardRef, useEffect, useImperativeHandle, useMemo, useRef, useState } from 'react';
|
6
|
+
import "../index.css";
|
7
|
+
import ListSelectPanel, { isLabelInValue } from "./ListSelectPanel";
|
8
|
+
|
9
|
+
/**
|
10
|
+
* @author: wangzt
|
11
|
+
* @description: 下拉列表选择器-仅支持多选
|
12
|
+
*/
|
13
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
14
|
+
import { jsxs as _jsxs } from "react/jsx-runtime";
|
15
|
+
import { Fragment as _Fragment } from "react/jsx-runtime";
|
16
|
+
var McListSelect = /*#__PURE__*/forwardRef(function (props, ref) {
|
17
|
+
/* 获取label宽度 */
|
18
|
+
var labelRef = useRef();
|
19
|
+
var _useState = useState(11),
|
20
|
+
_useState2 = _slicedToArray(_useState, 2),
|
21
|
+
paddingLeft = _useState2[0],
|
22
|
+
setPaddingLeft = _useState2[1];
|
23
|
+
useEffect(function () {
|
24
|
+
var labelResizeObserver = new ResizeObserver(function (entries) {
|
25
|
+
setPaddingLeft(entries[0].contentRect.width + 11);
|
26
|
+
});
|
27
|
+
labelRef.current && labelResizeObserver.observe(labelRef.current);
|
28
|
+
return function () {
|
29
|
+
return labelResizeObserver.disconnect();
|
30
|
+
};
|
31
|
+
}, []);
|
32
|
+
var label = props.label,
|
33
|
+
_props$placeholder = props.placeholder,
|
34
|
+
placeholder = _props$placeholder === void 0 ? '请选择' : _props$placeholder,
|
35
|
+
maxTagCount = props.maxTagCount,
|
36
|
+
_props$allowClear = props.allowClear,
|
37
|
+
allowClear = _props$allowClear === void 0 ? true : _props$allowClear,
|
38
|
+
title = props.title,
|
39
|
+
options = props.options,
|
40
|
+
fetchOptions = props.fetchOptions,
|
41
|
+
pageSize = props.pageSize,
|
42
|
+
extra = props.extra,
|
43
|
+
immediateInit = props.immediateInit,
|
44
|
+
_props$disabled = props.disabled,
|
45
|
+
disabled = _props$disabled === void 0 ? false : _props$disabled,
|
46
|
+
_props$labelInValue = props.labelInValue,
|
47
|
+
labelInValue = _props$labelInValue === void 0 ? false : _props$labelInValue,
|
48
|
+
_props$initOnOpen = props.initOnOpen,
|
49
|
+
initOnOpen = _props$initOnOpen === void 0 ? true : _props$initOnOpen,
|
50
|
+
_props$inexistent = props.inexistent,
|
51
|
+
inexistent = _props$inexistent === void 0 ? false : _props$inexistent,
|
52
|
+
selectedLayout = props.selectedLayout,
|
53
|
+
value = props.value,
|
54
|
+
onChange = props.onChange,
|
55
|
+
style = props.style,
|
56
|
+
className = props.className;
|
57
|
+
var maxTagCount0 = props.hasOwnProperty('maxTagCount') ? maxTagCount : 1;
|
58
|
+
var inexistent0 = fetchOptions ? false : inexistent;
|
59
|
+
var _ref = typeof inexistent0 === 'boolean' ? {} : inexistent0,
|
60
|
+
_ref$text = _ref.text,
|
61
|
+
text = _ref$text === void 0 ? '不存在' : _ref$text,
|
62
|
+
_ref$color = _ref.color,
|
63
|
+
color = _ref$color === void 0 ? '#ff4d4f' : _ref$color,
|
64
|
+
_ref$reserveOriginalV = _ref.reserveOriginalValue,
|
65
|
+
reserveOriginalValue = _ref$reserveOriginalV === void 0 ? false : _ref$reserveOriginalV;
|
66
|
+
var _useState3 = useState([]),
|
67
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
68
|
+
selectValue = _useState4[0],
|
69
|
+
setSelectValue = _useState4[1];
|
70
|
+
var _useState5 = useState(false),
|
71
|
+
_useState6 = _slicedToArray(_useState5, 2),
|
72
|
+
open = _useState6[0],
|
73
|
+
setOpen = _useState6[1];
|
74
|
+
var _useState7 = useState([]),
|
75
|
+
_useState8 = _slicedToArray(_useState7, 2),
|
76
|
+
panelValue = _useState8[0],
|
77
|
+
setPanelValue = _useState8[1];
|
78
|
+
var valueMap0 = useRef();
|
79
|
+
var changeUndefinedFlag = useRef(false);
|
80
|
+
var panelRef = useRef();
|
81
|
+
|
82
|
+
// 格式化下拉选择器的值
|
83
|
+
var selectValue0 = useMemo(function () {
|
84
|
+
return selectValue.map(function (_ref2) {
|
85
|
+
var _valueMap0$current;
|
86
|
+
var value = _ref2.value,
|
87
|
+
label = _ref2.label;
|
88
|
+
return {
|
89
|
+
value: value,
|
90
|
+
label: label + (inexistent0 && !((_valueMap0$current = valueMap0.current) !== null && _valueMap0$current !== void 0 && _valueMap0$current[value]) ? "\u300C".concat(text, "\u300D") : '')
|
91
|
+
};
|
92
|
+
});
|
93
|
+
}, [selectValue, inexistent0]);
|
94
|
+
|
95
|
+
/* 回显 */
|
96
|
+
var echo = function echo() {
|
97
|
+
// 若已执行向外抛出undefined,则不执行后续代码并重置标记
|
98
|
+
if (changeUndefinedFlag.current) {
|
99
|
+
changeUndefinedFlag.current = false;
|
100
|
+
return;
|
101
|
+
}
|
102
|
+
var inexistentFlag = false;
|
103
|
+
var value1 = (value === null || value === void 0 ? void 0 : value.map(function (item) {
|
104
|
+
var _valueMap0$current2;
|
105
|
+
var v = isLabelInValue(item) ? item.value : item;
|
106
|
+
if ((_valueMap0$current2 = valueMap0.current) !== null && _valueMap0$current2 !== void 0 && _valueMap0$current2[v]) {
|
107
|
+
return valueMap0.current[v];
|
108
|
+
} else {
|
109
|
+
inexistentFlag = true;
|
110
|
+
return isLabelInValue(item) ? item : {
|
111
|
+
value: v,
|
112
|
+
label: v
|
113
|
+
};
|
114
|
+
}
|
115
|
+
})) || [];
|
116
|
+
setSelectValue(value1);
|
117
|
+
// 若当前有不存在的值,则向外抛出undefined并标记
|
118
|
+
if (inexistent0 && !reserveOriginalValue && value && valueMap0.current && inexistentFlag) {
|
119
|
+
changeUndefinedFlag.current = true;
|
120
|
+
onChange === null || onChange === void 0 || onChange(undefined);
|
121
|
+
}
|
122
|
+
};
|
123
|
+
|
124
|
+
/* 监听value变化,触发回显 */
|
125
|
+
useEffect(function () {
|
126
|
+
echo();
|
127
|
+
}, [value]);
|
128
|
+
|
129
|
+
/* 备选项初始化 */
|
130
|
+
var optionsInit = function optionsInit() {
|
131
|
+
// 非异步查询时
|
132
|
+
if (!fetchOptions && options) {
|
133
|
+
// 获取value映射集合
|
134
|
+
var map = {};
|
135
|
+
options === null || options === void 0 || options.forEach(function (item) {
|
136
|
+
return map[item.value] = item;
|
137
|
+
});
|
138
|
+
valueMap0.current = map;
|
139
|
+
// 更新回显数据
|
140
|
+
echo();
|
141
|
+
}
|
142
|
+
};
|
143
|
+
|
144
|
+
/* 监听options变化,触发备选项初始化 */
|
145
|
+
useEffect(function () {
|
146
|
+
optionsInit();
|
147
|
+
}, [options]);
|
148
|
+
|
149
|
+
/* 改变值的方法 */
|
150
|
+
var changeHandle = function changeHandle(v) {
|
151
|
+
// 若inexistent为true且非异步查询时,将不存在的项移除
|
152
|
+
var v1 = v.filter(function (_ref3) {
|
153
|
+
var _valueMap0$current3;
|
154
|
+
var value = _ref3.value;
|
155
|
+
return inexistent0 ? !!((_valueMap0$current3 = valueMap0.current) !== null && _valueMap0$current3 !== void 0 && _valueMap0$current3[value]) : true;
|
156
|
+
});
|
157
|
+
(!props.hasOwnProperty('value') || inexistent0) && setSelectValue(v1);
|
158
|
+
onChange === null || onChange === void 0 || onChange(!!v1.length ? v1.map(function (i) {
|
159
|
+
return labelInValue ? i : i.value;
|
160
|
+
}) : undefined);
|
161
|
+
};
|
162
|
+
useImperativeHandle(ref, function () {
|
163
|
+
return {
|
164
|
+
init: function init() {
|
165
|
+
var _panelRef$current;
|
166
|
+
setOpen(true);
|
167
|
+
(_panelRef$current = panelRef.current) === null || _panelRef$current === void 0 || _panelRef$current.init();
|
168
|
+
}
|
169
|
+
};
|
170
|
+
});
|
171
|
+
return /*#__PURE__*/_jsxs("div", {
|
172
|
+
style: _objectSpread({
|
173
|
+
position: label ? 'relative' : 'static',
|
174
|
+
height: 'auto',
|
175
|
+
'--selector-pl': "".concat(paddingLeft, "px"),
|
176
|
+
'--inexistent-color': color
|
177
|
+
}, style),
|
178
|
+
className: classNames('mc-list-select', maxTagCount0 === 1 && 'mc-list-select--inline', className),
|
179
|
+
children: [label && /*#__PURE__*/_jsx("span", {
|
180
|
+
ref: labelRef,
|
181
|
+
className: classNames('mc-list-select__label', disabled && 'mc-list-select--disabled'),
|
182
|
+
children: label
|
183
|
+
}), /*#__PURE__*/_jsx(Select, {
|
184
|
+
className: "mc-list-select__content",
|
185
|
+
placeholder: placeholder,
|
186
|
+
mode: "multiple",
|
187
|
+
showSearch: false,
|
188
|
+
maxTagCount: maxTagCount0,
|
189
|
+
maxTagPlaceholder: function maxTagPlaceholder(v) {
|
190
|
+
return /*#__PURE__*/_jsx(Popover, {
|
191
|
+
overlayStyle: {
|
192
|
+
maxWidth: 300
|
193
|
+
},
|
194
|
+
content: v.map(function (_ref4, index) {
|
195
|
+
var _ref5;
|
196
|
+
var label = _ref4.label;
|
197
|
+
return /*#__PURE__*/_jsxs("span", {
|
198
|
+
children: [index !== 0 && /*#__PURE__*/_jsx("span", {
|
199
|
+
children: ", "
|
200
|
+
}), /*#__PURE__*/_jsx("span", {
|
201
|
+
style: {
|
202
|
+
color: ((_ref5 = '' + label) === null || _ref5 === void 0 ? void 0 : _ref5.indexOf("\u300C".concat(text, "\u300D"))) === -1 ? 'rgba(0, 0, 0, 0.88)' : color
|
203
|
+
},
|
204
|
+
children: label
|
205
|
+
})]
|
206
|
+
}, index);
|
207
|
+
}),
|
208
|
+
children: /*#__PURE__*/_jsx("span", {
|
209
|
+
children: '+' + v.length
|
210
|
+
})
|
211
|
+
});
|
212
|
+
},
|
213
|
+
allowClear: allowClear,
|
214
|
+
disabled: disabled,
|
215
|
+
open: open,
|
216
|
+
onDropdownVisibleChange: function onDropdownVisibleChange(o) {
|
217
|
+
setOpen(o);
|
218
|
+
if (o) {
|
219
|
+
var _panelRef$current2;
|
220
|
+
setPanelValue(selectValue);
|
221
|
+
initOnOpen && ((_panelRef$current2 = panelRef.current) === null || _panelRef$current2 === void 0 ? void 0 : _panelRef$current2.init());
|
222
|
+
}
|
223
|
+
},
|
224
|
+
labelInValue: true,
|
225
|
+
value: selectValue0,
|
226
|
+
onClear: function onClear() {
|
227
|
+
return changeHandle([]);
|
228
|
+
},
|
229
|
+
onDeselect: function onDeselect(o) {
|
230
|
+
return changeHandle(selectValue.filter(function (_ref6) {
|
231
|
+
var value = _ref6.value;
|
232
|
+
return value !== o.value;
|
233
|
+
}));
|
234
|
+
},
|
235
|
+
dropdownStyle: {
|
236
|
+
width: 'auto',
|
237
|
+
padding: '16px 16px 0'
|
238
|
+
},
|
239
|
+
dropdownRender: function dropdownRender() {
|
240
|
+
return /*#__PURE__*/_jsxs(_Fragment, {
|
241
|
+
children: [/*#__PURE__*/_jsx(ListSelectPanel, {
|
242
|
+
ref: panelRef,
|
243
|
+
title: title,
|
244
|
+
options: options,
|
245
|
+
fetchOptions: fetchOptions,
|
246
|
+
pageSize: pageSize,
|
247
|
+
extra: extra,
|
248
|
+
immediateInit: immediateInit,
|
249
|
+
disabled: disabled,
|
250
|
+
labelInValue: true,
|
251
|
+
allowClear: allowClear,
|
252
|
+
inexistent: inexistent,
|
253
|
+
selectedLayout: selectedLayout,
|
254
|
+
value: panelValue,
|
255
|
+
onChange: function onChange(v) {
|
256
|
+
setPanelValue(v || []);
|
257
|
+
// 异步查询时,更新value映射集合
|
258
|
+
if (fetchOptions) {
|
259
|
+
var map = {};
|
260
|
+
v === null || v === void 0 || v.forEach(function (item) {
|
261
|
+
return map[item.value] = item;
|
262
|
+
});
|
263
|
+
valueMap0.current = Object.assign(valueMap0.current || {}, map);
|
264
|
+
}
|
265
|
+
}
|
266
|
+
}), /*#__PURE__*/_jsxs("div", {
|
267
|
+
className: "mc-list-select__dropdown-footer",
|
268
|
+
children: [/*#__PURE__*/_jsx(Button, {
|
269
|
+
size: "small",
|
270
|
+
onClick: function onClick() {
|
271
|
+
return setOpen(false);
|
272
|
+
},
|
273
|
+
children: "\u53D6\u6D88"
|
274
|
+
}), /*#__PURE__*/_jsx(Button, {
|
275
|
+
type: "primary",
|
276
|
+
size: "small",
|
277
|
+
onClick: function onClick() {
|
278
|
+
changeHandle(panelValue);
|
279
|
+
setOpen(false);
|
280
|
+
},
|
281
|
+
children: "\u786E\u5B9A"
|
282
|
+
})]
|
283
|
+
})]
|
284
|
+
});
|
285
|
+
}
|
286
|
+
})]
|
287
|
+
});
|
288
|
+
});
|
289
|
+
export default McListSelect;
|
@@ -0,0 +1,138 @@
|
|
1
|
+
/// <reference types="react" />
|
2
|
+
import '../index.less';
|
3
|
+
export type BaseValueType = string | number;
|
4
|
+
export interface Option {
|
5
|
+
value: BaseValueType;
|
6
|
+
label: string;
|
7
|
+
disabled?: boolean;
|
8
|
+
[key: string]: any;
|
9
|
+
}
|
10
|
+
export type MapType = Record<BaseValueType, Option>;
|
11
|
+
export type McListSelectFetchOptions = (params: {
|
12
|
+
current: number;
|
13
|
+
pageSize: number;
|
14
|
+
keyword?: string;
|
15
|
+
extra?: any;
|
16
|
+
}) => Promise<{
|
17
|
+
data: Option[];
|
18
|
+
total: number;
|
19
|
+
}>;
|
20
|
+
export interface PanelInexistent {
|
21
|
+
/**
|
22
|
+
* 不存在值的文字描述
|
23
|
+
* @defaultValue '不存在'
|
24
|
+
*/
|
25
|
+
text?: string;
|
26
|
+
/**
|
27
|
+
* 不存在值的文字颜色
|
28
|
+
* @defaultValue '#ff4d4f'
|
29
|
+
*/
|
30
|
+
color?: string;
|
31
|
+
/**
|
32
|
+
* 是否保留不存在的项并禁止其移除
|
33
|
+
* @defaultValue false
|
34
|
+
*/
|
35
|
+
reserved?: boolean;
|
36
|
+
}
|
37
|
+
export type LabelInValueType = {
|
38
|
+
value: BaseValueType;
|
39
|
+
label: string;
|
40
|
+
};
|
41
|
+
type SelectValueType = BaseValueType | LabelInValueType;
|
42
|
+
export declare const isLabelInValue: (value: SelectValueType) => value is LabelInValueType;
|
43
|
+
/**
|
44
|
+
* 列表选择面板组件属性
|
45
|
+
*/
|
46
|
+
export interface McListSelectPanelProps {
|
47
|
+
/**
|
48
|
+
* 面板标题
|
49
|
+
* @defaultValue '可选项'
|
50
|
+
*/
|
51
|
+
title?: React.ReactNode;
|
52
|
+
/**
|
53
|
+
* 可选数据列表
|
54
|
+
*/
|
55
|
+
options?: Option[];
|
56
|
+
/**
|
57
|
+
* 异步分页获取选项的方法
|
58
|
+
* @remarks
|
59
|
+
* - 设置后将忽略原 options 属性
|
60
|
+
* - 不执行不存在值的处理逻辑
|
61
|
+
* - 涉及回显的场景(如表单)建议设置为 true 以对象形式交互
|
62
|
+
*/
|
63
|
+
fetchOptions?: McListSelectFetchOptions;
|
64
|
+
/**
|
65
|
+
* 分页每页数量
|
66
|
+
* @defaultValue 20
|
67
|
+
*/
|
68
|
+
pageSize?: number;
|
69
|
+
/**
|
70
|
+
* 分页查询的额外参数
|
71
|
+
* @remarks 参数变化时会触发 init 方法重置查询
|
72
|
+
*/
|
73
|
+
extra?: any;
|
74
|
+
/**
|
75
|
+
* 是否立即初始化
|
76
|
+
* @defaultValue true
|
77
|
+
* @remarks 使用异步分页且存在 extra 参数时可设为 false,通过 extra 变化触发初始化避免重复
|
78
|
+
*/
|
79
|
+
immediateInit?: boolean;
|
80
|
+
/**
|
81
|
+
* 是否禁用组件
|
82
|
+
* @defaultValue false
|
83
|
+
*/
|
84
|
+
disabled?: boolean;
|
85
|
+
/**
|
86
|
+
* 是否将选项标签等信息包装到值中
|
87
|
+
* @defaultValue false
|
88
|
+
* @remarks 涉及回显的场景(如表单)建议设置为 true
|
89
|
+
*/
|
90
|
+
labelInValue?: boolean;
|
91
|
+
/**
|
92
|
+
* 是否允许清空选择
|
93
|
+
* @defaultValue true
|
94
|
+
*/
|
95
|
+
allowClear?: boolean;
|
96
|
+
/**
|
97
|
+
* 是否处理不存在值
|
98
|
+
* @defaultValue false
|
99
|
+
* @remarks 异步查询时无效
|
100
|
+
*/
|
101
|
+
inexistent?: boolean | PanelInexistent;
|
102
|
+
/**
|
103
|
+
* 已选项布局方式
|
104
|
+
* @defaultValue 'block'
|
105
|
+
* @remarks
|
106
|
+
* - 'block': 每项独占一行
|
107
|
+
* - 'inline': 行内排列
|
108
|
+
* - 'sortable': 每项独占一行且可排序
|
109
|
+
*/
|
110
|
+
selectedLayout?: 'block' | 'inline' | 'sortable';
|
111
|
+
/**
|
112
|
+
* 当前选中的值
|
113
|
+
*/
|
114
|
+
value?: SelectValueType[];
|
115
|
+
/**
|
116
|
+
* 选择变化时的回调函数
|
117
|
+
* @param value - 新选中的值数组
|
118
|
+
*/
|
119
|
+
onChange?: (value?: SelectValueType[]) => void;
|
120
|
+
/**
|
121
|
+
* 自定义样式
|
122
|
+
*/
|
123
|
+
style?: React.CSSProperties;
|
124
|
+
/**
|
125
|
+
* 自定义类名
|
126
|
+
*/
|
127
|
+
className?: string;
|
128
|
+
/**
|
129
|
+
* 组件引用
|
130
|
+
*/
|
131
|
+
ref?: any;
|
132
|
+
}
|
133
|
+
export type McListSelectPanelRef = {
|
134
|
+
/** 初始化方法(重置查询) */
|
135
|
+
init: () => void;
|
136
|
+
};
|
137
|
+
declare const _default: import("react").NamedExoticComponent<McListSelectPanelProps>;
|
138
|
+
export default _default;
|