@pointcloud/pcloud-components 0.0.1 → 0.1.2
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/README.md +47 -47
- package/dist/esm/AdvancedFilter/FormFilter.d.ts +2 -1
- package/dist/esm/AdvancedFilter/FormFilter.js +47 -83
- package/dist/esm/AdvancedFilter/index.js +76 -107
- package/dist/esm/AdvancedFilter/styles/index.less +2 -1
- package/dist/esm/ConfigProvider/index.d.ts +1 -1
- package/dist/esm/ConfigProvider/index.js +5 -8
- package/dist/esm/DCascader/index.d.ts +28 -0
- package/dist/esm/DCascader/index.js +196 -0
- package/dist/esm/DCascader/index.less +20 -0
- package/dist/esm/DInput/index.d.ts +19 -0
- package/dist/esm/DInput/index.js +102 -0
- package/dist/esm/DSelect/index.d.ts +25 -0
- package/dist/esm/DSelect/index.js +160 -0
- package/dist/esm/DTable/index.d.ts +39 -0
- package/dist/esm/DTable/index.js +217 -0
- package/dist/esm/DTable/index.less +62 -0
- package/dist/esm/DTreeSelect/index.d.ts +26 -0
- package/dist/esm/DTreeSelect/index.js +174 -0
- package/dist/esm/DTreeSelect/index.less +9 -0
- package/dist/esm/ErrorBoundary/index.d.ts +2 -1
- package/dist/esm/ErrorBoundary/index.js +14 -25
- package/dist/esm/ErrorBoundary/index.less +2 -1
- package/dist/esm/LabelValue/index.d.ts +1 -1
- package/dist/esm/LabelValue/index.js +19 -26
- package/dist/esm/LabelValue/styles/index.less +2 -1
- package/dist/esm/Loading/index.d.ts +1 -1
- package/dist/esm/Loading/index.js +0 -3
- package/dist/esm/Loading/loading.d.ts +2 -1
- package/dist/esm/Loading/loading.js +17 -29
- package/dist/esm/Loading/styles/index.less +2 -1
- package/dist/esm/NoData/index.d.ts +2 -1
- package/dist/esm/NoData/index.js +18 -24
- package/dist/esm/NoData/styles/index.less +2 -1
- package/dist/esm/commonStyle/index.less +1 -0
- package/dist/esm/index.d.ts +10 -0
- package/dist/esm/index.js +6 -1
- package/dist/umd/pcloud-components.min.css +1 -1
- package/dist/umd/pcloud-components.min.js +1 -114
- package/package.json +5 -6
- package/dist/cjs/AdvancedFilter/FormFilter.d.ts +0 -5
- package/dist/cjs/AdvancedFilter/FormFilter.js +0 -158
- package/dist/cjs/AdvancedFilter/demos/demo1.d.ts +0 -3
- package/dist/cjs/AdvancedFilter/demos/demo1.js +0 -56
- package/dist/cjs/AdvancedFilter/demos/demo2.d.ts +0 -3
- package/dist/cjs/AdvancedFilter/demos/demo2.js +0 -63
- package/dist/cjs/AdvancedFilter/demos/demo3.d.ts +0 -3
- package/dist/cjs/AdvancedFilter/demos/demo3.js +0 -113
- package/dist/cjs/AdvancedFilter/index.d.ts +0 -5
- package/dist/cjs/AdvancedFilter/index.js +0 -114
- package/dist/cjs/AdvancedFilter/interface.d.ts +0 -97
- package/dist/cjs/AdvancedFilter/interface.js +0 -17
- package/dist/cjs/AdvancedFilter/styles/index.less +0 -115
- package/dist/cjs/ErrorBoundary/index.d.ts +0 -6
- package/dist/cjs/ErrorBoundary/index.js +0 -45
- package/dist/cjs/ErrorBoundary/index.less +0 -42
- package/dist/cjs/LabelValue/demos/demo1.d.ts +0 -3
- package/dist/cjs/LabelValue/demos/demo1.js +0 -35
- package/dist/cjs/LabelValue/demos/demo2.d.ts +0 -3
- package/dist/cjs/LabelValue/demos/demo2.js +0 -36
- package/dist/cjs/LabelValue/demos/demo3.d.ts +0 -3
- package/dist/cjs/LabelValue/demos/demo3.js +0 -36
- package/dist/cjs/LabelValue/index.d.ts +0 -16
- package/dist/cjs/LabelValue/index.js +0 -50
- package/dist/cjs/LabelValue/interface.d.ts +0 -29
- package/dist/cjs/LabelValue/interface.js +0 -17
- package/dist/cjs/LabelValue/styles/index.less +0 -18
- package/dist/cjs/index.d.ts +0 -4
- package/dist/cjs/index.js +0 -38
- package/dist/esm/AdvancedFilter/demos/demo1.d.ts +0 -2
- package/dist/esm/AdvancedFilter/demos/demo1.js +0 -25
- package/dist/esm/AdvancedFilter/demos/demo2.d.ts +0 -2
- package/dist/esm/AdvancedFilter/demos/demo2.js +0 -39
- package/dist/esm/AdvancedFilter/demos/demo3.d.ts +0 -2
- package/dist/esm/AdvancedFilter/demos/demo3.js +0 -86
- package/dist/esm/LabelValue/demos/demo1.d.ts +0 -2
- package/dist/esm/LabelValue/demos/demo1.js +0 -9
- package/dist/esm/LabelValue/demos/demo2.d.ts +0 -2
- package/dist/esm/LabelValue/demos/demo2.js +0 -10
- package/dist/esm/LabelValue/demos/demo3.d.ts +0 -2
- package/dist/esm/LabelValue/demos/demo3.js +0 -10
- package/dist/esm/Loading/demos/demo1.d.ts +0 -2
- package/dist/esm/Loading/demos/demo1.js +0 -17
- package/dist/esm/Loading/demos/demo2.d.ts +0 -2
- package/dist/esm/Loading/demos/demo2.js +0 -18
- package/dist/esm/NoData/demos/demo1.d.ts +0 -2
- package/dist/esm/NoData/demos/demo1.js +0 -12
- package/dist/esm/NoData/demos/demo2.d.ts +0 -2
- package/dist/esm/NoData/demos/demo2.js +0 -14
- package/dist/umd/images/logo.png +0 -0
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { DefaultOptionType, CascaderProps, CascaderRef } from 'antd/lib/cascader';
|
|
3
|
+
import './index.less';
|
|
4
|
+
/**
|
|
5
|
+
*
|
|
6
|
+
* 如何只显示选中的子节点
|
|
7
|
+
*/
|
|
8
|
+
export declare type DCascaderProps = Omit<CascaderProps<any>, 'options' | 'loadData' | 'loading'> & {
|
|
9
|
+
/** antd的options属性,同onSearch属性,可以是一个options数组,或一个返回等价options数组的promise */
|
|
10
|
+
options?: DefaultOptionType[] | ((value?: string, option?: DefaultOptionType, options?: DefaultOptionType[]) => Promise<DefaultOptionType[] | any[]>);
|
|
11
|
+
/** antd的loadData属性,动态加载子级列表数据,默认使用options所提供的方法,如果传入null,则表示不进行动态加载,该方法要求返回一个options数组或与其等价的Promise */
|
|
12
|
+
loadData?: ((value?: string, option?: DefaultOptionType, options?: DefaultOptionType[]) => Promise<DefaultOptionType[] | any[]>) | null;
|
|
13
|
+
/** 等同antd的loadData属性,用于监听antd loadData事件*/
|
|
14
|
+
onLoadData?: (value?: string, option?: DefaultOptionType, options?: DefaultOptionType[]) => void;
|
|
15
|
+
/** antd的loading属性,是否显示加载中:传入数字表示延迟加载,单位毫秒,0等同于false */
|
|
16
|
+
loading?: boolean | number;
|
|
17
|
+
};
|
|
18
|
+
declare const DCascader: React.ForwardRefExoticComponent<Omit<CascaderProps<any>, "options" | "loading" | "loadData"> & {
|
|
19
|
+
/** antd的options属性,同onSearch属性,可以是一个options数组,或一个返回等价options数组的promise */
|
|
20
|
+
options?: DefaultOptionType[] | ((value?: string, option?: DefaultOptionType, options?: DefaultOptionType[]) => Promise<DefaultOptionType[] | any[]>) | undefined;
|
|
21
|
+
/** antd的loadData属性,动态加载子级列表数据,默认使用options所提供的方法,如果传入null,则表示不进行动态加载,该方法要求返回一个options数组或与其等价的Promise */
|
|
22
|
+
loadData?: ((value?: string, option?: DefaultOptionType, options?: DefaultOptionType[]) => Promise<DefaultOptionType[] | any[]>) | null | undefined;
|
|
23
|
+
/** 等同antd的loadData属性,用于监听antd loadData事件*/
|
|
24
|
+
onLoadData?: ((value?: string, option?: DefaultOptionType, options?: DefaultOptionType[]) => void) | undefined;
|
|
25
|
+
/** antd的loading属性,是否显示加载中:传入数字表示延迟加载,单位毫秒,0等同于false */
|
|
26
|
+
loading?: number | boolean | undefined;
|
|
27
|
+
} & React.RefAttributes<CascaderRef>>;
|
|
28
|
+
export default DCascader;
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
|
|
2
|
+
var _excluded = ["className", "popupClassName", "fieldNames", "options", "onChange", "loadData", "onLoadData", "loading"];
|
|
3
|
+
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
4
|
+
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
5
|
+
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
6
|
+
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
7
|
+
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
8
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
9
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
10
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
11
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
12
|
+
function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
13
|
+
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
14
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
15
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
16
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
17
|
+
function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
|
|
18
|
+
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
19
|
+
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
|
|
20
|
+
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
|
21
|
+
/*
|
|
22
|
+
* @Author : wangfeihu
|
|
23
|
+
* @Date : 2023-05-18 13:35:38
|
|
24
|
+
* @LastEditors : wangfeihu
|
|
25
|
+
* @LastEditTime : 2023-05-26 16:18:55
|
|
26
|
+
* @Description : 基于antd的Cascader组件
|
|
27
|
+
*/
|
|
28
|
+
import React, { useRef, forwardRef, useState, useEffect, useMemo, useContext } from 'react';
|
|
29
|
+
import { Cascader } from 'antd';
|
|
30
|
+
import { ConfigContext } from "../ConfigProvider";
|
|
31
|
+
import "./index.less";
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
*
|
|
35
|
+
* 如何只显示选中的子节点
|
|
36
|
+
*/
|
|
37
|
+
|
|
38
|
+
function InternalCascader(props, ref) {
|
|
39
|
+
var _props$className = props.className,
|
|
40
|
+
className = _props$className === void 0 ? '' : _props$className,
|
|
41
|
+
_props$popupClassName = props.popupClassName,
|
|
42
|
+
popupClassName = _props$popupClassName === void 0 ? '' : _props$popupClassName,
|
|
43
|
+
fieldNames = props.fieldNames,
|
|
44
|
+
initOptions = props.options,
|
|
45
|
+
onChange = props.onChange,
|
|
46
|
+
loadData = props.loadData,
|
|
47
|
+
onLoadData = props.onLoadData,
|
|
48
|
+
initLoading = props.loading,
|
|
49
|
+
otherProps = _objectWithoutProperties(props, _excluded);
|
|
50
|
+
var _useContext = useContext(ConfigContext),
|
|
51
|
+
getPrefixCls = _useContext.getPrefixCls;
|
|
52
|
+
var _useState = useState([]),
|
|
53
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
54
|
+
options = _useState2[0],
|
|
55
|
+
setOptions = _useState2[1];
|
|
56
|
+
var _useState3 = useState(typeof initLoading === 'boolean' ? initLoading : true),
|
|
57
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
58
|
+
loading = _useState4[0],
|
|
59
|
+
setLoading = _useState4[1];
|
|
60
|
+
var loadingParamsRef = useRef(null); // 数据加载同步处理引用
|
|
61
|
+
var loadingRef = useRef({
|
|
62
|
+
timer: null,
|
|
63
|
+
status: 'done'
|
|
64
|
+
}); // options加载状态引用
|
|
65
|
+
var timestamp = new Date().getTime();
|
|
66
|
+
var _className = "".concat(getPrefixCls('cascader'), " d-cascader-").concat(timestamp, " ").concat(className);
|
|
67
|
+
var _popupClassName = "".concat(getPrefixCls('cascader-dropdown'), " d-cascader-dropdown-").concat(timestamp, " ").concat(popupClassName);
|
|
68
|
+
var _fieldNames = _objectSpread({
|
|
69
|
+
label: 'label',
|
|
70
|
+
value: 'value',
|
|
71
|
+
children: 'children'
|
|
72
|
+
}, fieldNames);
|
|
73
|
+
var _loadingState = getDelayTime(loading, 600); // loading: 默认600ms,false或0表示不开启
|
|
74
|
+
|
|
75
|
+
var _loading = typeof initLoading === 'boolean' ? initLoading : loading;
|
|
76
|
+
|
|
77
|
+
// 将外部传入的options转化为统一的异步请求方法
|
|
78
|
+
var getOptionsFun = useMemo(function () {
|
|
79
|
+
return typeof initOptions === 'function' ? initOptions : function () {
|
|
80
|
+
return Promise.resolve(initOptions || []);
|
|
81
|
+
};
|
|
82
|
+
}, [initOptions]);
|
|
83
|
+
var updateOptions = function updateOptions(fun, value) {
|
|
84
|
+
// 设置加载中状态
|
|
85
|
+
if (_loadingState > 0) {
|
|
86
|
+
loadingRef.current.status = 'loading';
|
|
87
|
+
clearTimeout(loadingRef.current.timer);
|
|
88
|
+
loadingRef.current.timer = setTimeout(function () {
|
|
89
|
+
loadingRef.current.status === 'loading' && setLoading(true);
|
|
90
|
+
}, _loadingState);
|
|
91
|
+
}
|
|
92
|
+
// 发起请求
|
|
93
|
+
loadingParamsRef.current = value;
|
|
94
|
+
fun === null || fun === void 0 ? void 0 : fun(value).then(function (response) {
|
|
95
|
+
if (loadingParamsRef.current === value) {
|
|
96
|
+
setOptions(response);
|
|
97
|
+
setLoading(false);
|
|
98
|
+
loadingRef.current.status = 'done';
|
|
99
|
+
}
|
|
100
|
+
}).catch(function () {
|
|
101
|
+
if (loadingParamsRef.current === value) {
|
|
102
|
+
setLoading(false);
|
|
103
|
+
loadingRef.current.status = 'done';
|
|
104
|
+
}
|
|
105
|
+
});
|
|
106
|
+
};
|
|
107
|
+
var _loadData = function _loadData(selectedOptions) {
|
|
108
|
+
var targetOption = selectedOptions[selectedOptions.length - 1];
|
|
109
|
+
onLoadData && onLoadData(targetOption[_fieldNames.value], targetOption, selectedOptions);
|
|
110
|
+
var _getOptions = typeof initOptions === 'function' ? initOptions : null;
|
|
111
|
+
var loadFn = loadData === null ? loadData : loadData || _getOptions;
|
|
112
|
+
if (typeof loadFn === 'function') {
|
|
113
|
+
loadFn === null || loadFn === void 0 ? void 0 : loadFn(targetOption[_fieldNames.value], targetOption, selectedOptions).then(function (response) {
|
|
114
|
+
targetOption[_fieldNames.children] = response;
|
|
115
|
+
targetOption.loading = false;
|
|
116
|
+
setOptions(_toConsumableArray(options));
|
|
117
|
+
}).catch(function () {
|
|
118
|
+
targetOption.loading = false;
|
|
119
|
+
setOptions(_toConsumableArray(options));
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
};
|
|
123
|
+
var _onChange = function _onChange(value, selectedOptions) {
|
|
124
|
+
return onChange === null || onChange === void 0 ? void 0 : onChange(value, selectedOptions);
|
|
125
|
+
};
|
|
126
|
+
|
|
127
|
+
// 初始加载数据
|
|
128
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
129
|
+
useEffect(function () {
|
|
130
|
+
return updateOptions(getOptionsFun);
|
|
131
|
+
}, [getOptionsFun]);
|
|
132
|
+
|
|
133
|
+
// 操作dom设置下拉菜单样式,使下拉菜单宽度与选择框保持一致
|
|
134
|
+
useEffect(function () {
|
|
135
|
+
var dSelectDropDom = document.querySelector(".d-cascader-dropdown-".concat(timestamp));
|
|
136
|
+
if (dSelectDropDom) {
|
|
137
|
+
updateDropDom(dSelectDropDom, timestamp);
|
|
138
|
+
} else {
|
|
139
|
+
var observer = new MutationObserver(function (mutations) {
|
|
140
|
+
var _ref = mutations[0] || {},
|
|
141
|
+
addedNodes = _ref.addedNodes;
|
|
142
|
+
for (var i = 0; i < addedNodes.length; i++) {
|
|
143
|
+
if (typeof addedNodes[i]['querySelector'] === 'function') {
|
|
144
|
+
var _dSelectDropDom = addedNodes[i]['querySelector'](".d-cascader-dropdown-".concat(timestamp));
|
|
145
|
+
if (_dSelectDropDom) {
|
|
146
|
+
observer.disconnect();
|
|
147
|
+
updateDropDom(_dSelectDropDom, timestamp);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
});
|
|
152
|
+
observer.observe(document.body, {
|
|
153
|
+
childList: true
|
|
154
|
+
});
|
|
155
|
+
return function () {
|
|
156
|
+
return observer === null || observer === void 0 ? void 0 : observer.disconnect();
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
}, [timestamp]);
|
|
160
|
+
return /*#__PURE__*/React.createElement(Cascader, _extends({}, otherProps, {
|
|
161
|
+
ref: ref,
|
|
162
|
+
fieldNames: _fieldNames,
|
|
163
|
+
loadData: _loadData,
|
|
164
|
+
className: _className,
|
|
165
|
+
popupClassName: _popupClassName,
|
|
166
|
+
options: options,
|
|
167
|
+
loading: _loading,
|
|
168
|
+
onChange: _onChange
|
|
169
|
+
}));
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
// 获取延时时间,默认800ms,true代表默认时间,false代表0
|
|
173
|
+
function getDelayTime(value) {
|
|
174
|
+
var defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 800;
|
|
175
|
+
if (value === true) {
|
|
176
|
+
return defaultValue;
|
|
177
|
+
} else if (value === false) {
|
|
178
|
+
return 0;
|
|
179
|
+
} else {
|
|
180
|
+
return typeof value === 'number' ? Number(value) || 0 : defaultValue;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
function updateDropDom(dSelectDropDom, timestamp) {
|
|
184
|
+
var dSelectDom = document.querySelector(".d-cascader-".concat(timestamp));
|
|
185
|
+
var dSelectDropFirstMenu = dSelectDropDom.querySelector('ul.ant-cascader-menu');
|
|
186
|
+
if (dSelectDom) {
|
|
187
|
+
// 获取选择框宽度并恢复其初始样式
|
|
188
|
+
dSelectDropDom.style.minWidth = "".concat(dSelectDom.clientWidth, "px");
|
|
189
|
+
dSelectDropFirstMenu.style.minWidth = "".concat(dSelectDom.clientWidth, "px");
|
|
190
|
+
// className && dSelectDom.setAttribute('class', className.replace(`d-cascader-${timestamp}`, ''));
|
|
191
|
+
// dSelectDropDom.setAttribute('class', dSelectDropDom.className.replace(`d-cascader-dropdown-${timestamp}`, ''));
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
var DCascader = /*#__PURE__*/forwardRef(InternalCascader);
|
|
196
|
+
export default DCascader;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
@import '../commonStyle/index.less';
|
|
2
|
+
.@{prefix}-cascader-dropdown .ant-cascader-menu {
|
|
3
|
+
&::-webkit-scrollbar {
|
|
4
|
+
width: 8px;
|
|
5
|
+
height: 8px;
|
|
6
|
+
}
|
|
7
|
+
// 轨道拖动部分的背景颜色
|
|
8
|
+
&::-webkit-scrollbar-thumb {
|
|
9
|
+
background-color: rgba(0, 0, 0, 0.5);
|
|
10
|
+
border-radius: 8px;
|
|
11
|
+
}
|
|
12
|
+
// 轨道背景颜色
|
|
13
|
+
&::-webkit-scrollbar-track {
|
|
14
|
+
border-radius: 2px;
|
|
15
|
+
}
|
|
16
|
+
// x、y两条轨道的交叉处
|
|
17
|
+
&::-webkit-scrollbar-corner {
|
|
18
|
+
background-color: #f1f1f1;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import React, { ChangeEvent } from 'react';
|
|
2
|
+
import { InputProps, InputRef } from 'antd';
|
|
3
|
+
export declare type DInputProps = Omit<InputProps, 'onChange'> & {
|
|
4
|
+
/** 输入框内容变化时的回调 */
|
|
5
|
+
onChange?: (value: string, event: ChangeEvent<HTMLInputElement>) => void;
|
|
6
|
+
/** 是否启用合成输入 */
|
|
7
|
+
enableCompose?: boolean;
|
|
8
|
+
/** 是否开启防抖: true表示800毫秒,false或0表示不开启 */
|
|
9
|
+
debounce?: boolean | number;
|
|
10
|
+
};
|
|
11
|
+
declare const DInput: React.ForwardRefExoticComponent<Omit<InputProps, "onChange"> & {
|
|
12
|
+
/** 输入框内容变化时的回调 */
|
|
13
|
+
onChange?: ((value: string, event: ChangeEvent<HTMLInputElement>) => void) | undefined;
|
|
14
|
+
/** 是否启用合成输入 */
|
|
15
|
+
enableCompose?: boolean | undefined;
|
|
16
|
+
/** 是否开启防抖: true表示800毫秒,false或0表示不开启 */
|
|
17
|
+
debounce?: number | boolean | undefined;
|
|
18
|
+
} & React.RefAttributes<InputRef>>;
|
|
19
|
+
export default DInput;
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
var _excluded = ["className", "onChange", "onCompositionStart", "onCompositionEnd", "value", "debounce", "enableCompose"];
|
|
2
|
+
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
3
|
+
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
4
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
5
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
6
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
7
|
+
function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
|
|
8
|
+
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
9
|
+
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
|
|
10
|
+
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
|
11
|
+
/*
|
|
12
|
+
* @Author : wangfeihu
|
|
13
|
+
* @Date : 2023-05-16 10:08:26
|
|
14
|
+
* @LastEditors : wangfeihu
|
|
15
|
+
* @LastEditTime : 2023-05-26 09:44:03
|
|
16
|
+
* @Description : 基于antd的Input组件
|
|
17
|
+
*/
|
|
18
|
+
import React, { useRef, forwardRef, useState, useContext } from 'react';
|
|
19
|
+
import { Input } from 'antd';
|
|
20
|
+
import { ConfigContext } from "../ConfigProvider";
|
|
21
|
+
function InternalInput(props, ref) {
|
|
22
|
+
var _props$className = props.className,
|
|
23
|
+
className = _props$className === void 0 ? '' : _props$className,
|
|
24
|
+
onChange = props.onChange,
|
|
25
|
+
onCompositionStart = props.onCompositionStart,
|
|
26
|
+
onCompositionEnd = props.onCompositionEnd,
|
|
27
|
+
initValue = props.value,
|
|
28
|
+
_props$debounce = props.debounce,
|
|
29
|
+
debounce = _props$debounce === void 0 ? false : _props$debounce,
|
|
30
|
+
_props$enableCompose = props.enableCompose,
|
|
31
|
+
enableCompose = _props$enableCompose === void 0 ? true : _props$enableCompose,
|
|
32
|
+
otherProps = _objectWithoutProperties(props, _excluded);
|
|
33
|
+
var _useContext = useContext(ConfigContext),
|
|
34
|
+
getPrefixCls = _useContext.getPrefixCls;
|
|
35
|
+
var _useState = useState(initValue),
|
|
36
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
37
|
+
value = _useState2[0],
|
|
38
|
+
setValue = _useState2[1];
|
|
39
|
+
var _useState3 = useState(false),
|
|
40
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
41
|
+
composeFlag = _useState4[0],
|
|
42
|
+
setComposeFlag = _useState4[1];
|
|
43
|
+
var debounceRef = useRef();
|
|
44
|
+
var _className = "".concat(getPrefixCls('input'), " ").concat(className);
|
|
45
|
+
|
|
46
|
+
// debounce: 默认800ms,false或0表示不开启
|
|
47
|
+
var _debounce = getDebounceTime(debounce);
|
|
48
|
+
var emitChange = function emitChange(_value, e) {
|
|
49
|
+
if (_debounce > 0) {
|
|
50
|
+
clearTimeout(debounceRef.current);
|
|
51
|
+
debounceRef.current = setTimeout(function () {
|
|
52
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(_value, e);
|
|
53
|
+
}, _debounce);
|
|
54
|
+
} else {
|
|
55
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(_value, e);
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
// 监听用户onChange事件(如果正在进行合成输入,则不响应用户事件)
|
|
60
|
+
var _onChange = function _onChange(e) {
|
|
61
|
+
var _value = e.target.value;
|
|
62
|
+
setValue(_value);
|
|
63
|
+
if (!composeFlag) emitChange(_value, e);
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
// 监听合成输入开始事件(执行用户事件并置合成标记为true)
|
|
67
|
+
var _onCompositionStart = function _onCompositionStart(e) {
|
|
68
|
+
onCompositionStart === null || onCompositionStart === void 0 ? void 0 : onCompositionStart(e);
|
|
69
|
+
enableCompose && setComposeFlag(true);
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
// 监听合成输入结束事件(执行用户事件并置合成标记为false,同时触发用户onChange事件)
|
|
73
|
+
var _onCompositionEnd = function _onCompositionEnd(e) {
|
|
74
|
+
onCompositionEnd === null || onCompositionEnd === void 0 ? void 0 : onCompositionEnd(e);
|
|
75
|
+
if (enableCompose) {
|
|
76
|
+
setComposeFlag(false);
|
|
77
|
+
emitChange(e.target.value, e);
|
|
78
|
+
}
|
|
79
|
+
};
|
|
80
|
+
return /*#__PURE__*/React.createElement(Input, _extends({}, otherProps, {
|
|
81
|
+
className: _className,
|
|
82
|
+
ref: ref,
|
|
83
|
+
value: value,
|
|
84
|
+
onChange: _onChange,
|
|
85
|
+
onCompositionStart: _onCompositionStart,
|
|
86
|
+
onCompositionEnd: _onCompositionEnd
|
|
87
|
+
}));
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
// 获取防抖超时时间,debounce: 默认800ms,false或0表示不开启
|
|
91
|
+
function getDebounceTime(debounce) {
|
|
92
|
+
var defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 800;
|
|
93
|
+
if (debounce === true) {
|
|
94
|
+
return defaultValue;
|
|
95
|
+
} else if (debounce === false) {
|
|
96
|
+
return 0;
|
|
97
|
+
} else {
|
|
98
|
+
return typeof debounce === 'number' ? debounce : defaultValue;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
var DInput = /*#__PURE__*/forwardRef(InternalInput);
|
|
102
|
+
export default DInput;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { SelectProps } from 'antd';
|
|
3
|
+
import { DefaultOptionType } from 'antd/lib/select';
|
|
4
|
+
import { BaseSelectRef } from 'rc-select/lib/BaseSelect';
|
|
5
|
+
export declare type DSelectProps = Omit<SelectProps, 'options' | 'onSearch' | 'loading'> & {
|
|
6
|
+
/** antd的onSearch属性,onSearch有效时showSearch自动为true */
|
|
7
|
+
onSearch?: (params?: any) => Promise<DefaultOptionType[] | any[]>;
|
|
8
|
+
/** antd的options属性,可以是一个options数组,或一个返回等价options数组的promise */
|
|
9
|
+
options?: DefaultOptionType[] | DSelectProps['onSearch'];
|
|
10
|
+
/** antd的loading属性,是否显示加载中:传入数字表示延迟加载,单位毫秒,0等同于false */
|
|
11
|
+
loading?: boolean | number;
|
|
12
|
+
/** 是否开启防抖: true表示800毫秒,true表示默认值,false或0表示不开启 */
|
|
13
|
+
debounce?: boolean | number;
|
|
14
|
+
};
|
|
15
|
+
declare const DSelect: React.ForwardRefExoticComponent<Omit<SelectProps<any, DefaultOptionType>, "onSearch" | "options" | "loading"> & {
|
|
16
|
+
/** antd的onSearch属性,onSearch有效时showSearch自动为true */
|
|
17
|
+
onSearch?: ((params?: any) => Promise<DefaultOptionType[] | any[]>) | undefined;
|
|
18
|
+
/** antd的options属性,可以是一个options数组,或一个返回等价options数组的promise */
|
|
19
|
+
options?: DefaultOptionType[] | DSelectProps['onSearch'];
|
|
20
|
+
/** antd的loading属性,是否显示加载中:传入数字表示延迟加载,单位毫秒,0等同于false */
|
|
21
|
+
loading?: number | boolean | undefined;
|
|
22
|
+
/** 是否开启防抖: true表示800毫秒,true表示默认值,false或0表示不开启 */
|
|
23
|
+
debounce?: number | boolean | undefined;
|
|
24
|
+
} & React.RefAttributes<BaseSelectRef>>;
|
|
25
|
+
export default DSelect;
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
|
|
2
|
+
var _excluded = ["className", "popupClassName", "fieldNames", "searchValue", "filterOption", "options", "onSearch", "loading", "debounce"];
|
|
3
|
+
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
4
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
5
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
6
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
7
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
8
|
+
function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
9
|
+
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
10
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
11
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
12
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
13
|
+
function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
|
|
14
|
+
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
15
|
+
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
|
|
16
|
+
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
|
17
|
+
/*
|
|
18
|
+
* @Author : wangfeihu
|
|
19
|
+
* @Date : 2023-05-17 08:41:25
|
|
20
|
+
* @LastEditors : wangfeihu
|
|
21
|
+
* @LastEditTime : 2023-05-26 14:44:38
|
|
22
|
+
* @Description : 基于antd的Select组件
|
|
23
|
+
*/
|
|
24
|
+
import React, { forwardRef, useEffect, useRef, useState, useMemo, useContext } from 'react';
|
|
25
|
+
import { Select } from 'antd';
|
|
26
|
+
import { ConfigContext } from "../ConfigProvider";
|
|
27
|
+
function InternalSelect(props, ref) {
|
|
28
|
+
var _props$className = props.className,
|
|
29
|
+
className = _props$className === void 0 ? '' : _props$className,
|
|
30
|
+
_props$popupClassName = props.popupClassName,
|
|
31
|
+
popupClassName = _props$popupClassName === void 0 ? '' : _props$popupClassName,
|
|
32
|
+
fieldNames = props.fieldNames,
|
|
33
|
+
searchValue = props.searchValue,
|
|
34
|
+
filterOption = props.filterOption,
|
|
35
|
+
initOptions = props.options,
|
|
36
|
+
onSearch = props.onSearch,
|
|
37
|
+
initLoading = props.loading,
|
|
38
|
+
_props$debounce = props.debounce,
|
|
39
|
+
debounce = _props$debounce === void 0 ? false : _props$debounce,
|
|
40
|
+
otherProps = _objectWithoutProperties(props, _excluded);
|
|
41
|
+
var _useContext = useContext(ConfigContext),
|
|
42
|
+
getPrefixCls = _useContext.getPrefixCls;
|
|
43
|
+
var _useState = useState([]),
|
|
44
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
45
|
+
options = _useState2[0],
|
|
46
|
+
setOptions = _useState2[1];
|
|
47
|
+
var _useState3 = useState(typeof initLoading === 'boolean' ? initLoading : true),
|
|
48
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
49
|
+
loading = _useState4[0],
|
|
50
|
+
setLoading = _useState4[1];
|
|
51
|
+
var _className = "".concat(getPrefixCls('select'), " ").concat(className);
|
|
52
|
+
var _popupClassName = "".concat(getPrefixCls('select-dropdown'), " ").concat(popupClassName);
|
|
53
|
+
var debounceRef = useRef(null); // 防抖处理引用
|
|
54
|
+
var loadingRef = useRef({
|
|
55
|
+
timer: null,
|
|
56
|
+
status: 'done'
|
|
57
|
+
});
|
|
58
|
+
var loadingParamsRef = useRef(null); // 数据加载同步处理引用
|
|
59
|
+
|
|
60
|
+
var _fieldNames = _objectSpread({
|
|
61
|
+
label: 'label',
|
|
62
|
+
value: 'value',
|
|
63
|
+
children: 'children'
|
|
64
|
+
}, fieldNames);
|
|
65
|
+
var _showSearch = !!onSearch;
|
|
66
|
+
var _debounce = getDelayTime(debounce);
|
|
67
|
+
var _loadingState = getDelayTime(initLoading, 600);
|
|
68
|
+
var _loading = typeof initLoading === 'boolean' ? initLoading : loading;
|
|
69
|
+
var _filterOption = getFilterOption(!_showSearch, filterOption, _fieldNames);
|
|
70
|
+
var getOptions = useMemo(function () {
|
|
71
|
+
return typeof initOptions === 'function' ? initOptions : function (params) {
|
|
72
|
+
return Promise.resolve(initOptions || []);
|
|
73
|
+
};
|
|
74
|
+
}, [initOptions]);
|
|
75
|
+
var _onSearch = function _onSearch(value) {
|
|
76
|
+
if (onSearch) {
|
|
77
|
+
if (_debounce > 0) {
|
|
78
|
+
clearTimeout(debounceRef.current);
|
|
79
|
+
debounceRef.current = setTimeout(function () {
|
|
80
|
+
updateOptions(onSearch, value);
|
|
81
|
+
}, _debounce);
|
|
82
|
+
} else {
|
|
83
|
+
updateOptions(onSearch, value);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
};
|
|
87
|
+
var updateOptions = function updateOptions(fun, value) {
|
|
88
|
+
// 设置加载中状态
|
|
89
|
+
if (_loadingState > 0) {
|
|
90
|
+
loadingRef.current.status = 'loading';
|
|
91
|
+
clearTimeout(loadingRef.current.timer);
|
|
92
|
+
loadingRef.current.timer = setTimeout(function () {
|
|
93
|
+
loadingRef.current.status === 'loading' && setLoading(true);
|
|
94
|
+
}, _loadingState);
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
// 记录请求参数,清空options
|
|
98
|
+
loadingParamsRef.current = value;
|
|
99
|
+
setOptions([]);
|
|
100
|
+
|
|
101
|
+
// 发起请求
|
|
102
|
+
fun === null || fun === void 0 ? void 0 : fun(value).then(function (response) {
|
|
103
|
+
if (loadingParamsRef.current === value) {
|
|
104
|
+
setOptions(response);
|
|
105
|
+
setLoading(false);
|
|
106
|
+
loadingRef.current.status = 'done';
|
|
107
|
+
}
|
|
108
|
+
}).catch(function () {
|
|
109
|
+
if (loadingParamsRef.current === value) {
|
|
110
|
+
setLoading(false);
|
|
111
|
+
loadingRef.current.status = 'done';
|
|
112
|
+
}
|
|
113
|
+
});
|
|
114
|
+
};
|
|
115
|
+
|
|
116
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
117
|
+
useEffect(function () {
|
|
118
|
+
return updateOptions(getOptions, searchValue);
|
|
119
|
+
}, [getOptions, searchValue]);
|
|
120
|
+
return /*#__PURE__*/React.createElement(Select, _extends({
|
|
121
|
+
allowClear: true,
|
|
122
|
+
filterOption: _filterOption,
|
|
123
|
+
showSearch: _showSearch,
|
|
124
|
+
searchValue: searchValue
|
|
125
|
+
}, otherProps, {
|
|
126
|
+
ref: ref,
|
|
127
|
+
className: _className,
|
|
128
|
+
popupClassName: _popupClassName,
|
|
129
|
+
fieldNames: _fieldNames,
|
|
130
|
+
onSearch: _showSearch ? _onSearch : undefined,
|
|
131
|
+
loading: _loading,
|
|
132
|
+
options: options
|
|
133
|
+
}));
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
// 获取延时时间,默认800ms,true代表默认时间,false代表0
|
|
137
|
+
function getDelayTime(value) {
|
|
138
|
+
var defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 800;
|
|
139
|
+
if (value === true) {
|
|
140
|
+
return defaultValue;
|
|
141
|
+
} else if (value === false) {
|
|
142
|
+
return 0;
|
|
143
|
+
} else {
|
|
144
|
+
return typeof value === 'number' ? Number(value) || 0 : defaultValue;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
// 获取默认本地搜索方法
|
|
149
|
+
function getFilterOption(showSearch, filterOption, fieldNames) {
|
|
150
|
+
if (filterOption) {
|
|
151
|
+
return filterOption;
|
|
152
|
+
} else {
|
|
153
|
+
return showSearch && function (value, option) {
|
|
154
|
+
var _option$fieldNames$la;
|
|
155
|
+
return (_option$fieldNames$la = option[fieldNames.label]) === null || _option$fieldNames$la === void 0 ? void 0 : _option$fieldNames$la.includes(value);
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
var DSelect = /*#__PURE__*/forwardRef(InternalSelect);
|
|
160
|
+
export default DSelect;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { TableProps } from 'antd';
|
|
3
|
+
import { ColumnType } from 'antd/lib/table';
|
|
4
|
+
import './index.less';
|
|
5
|
+
export declare type DTableSourceProps = {
|
|
6
|
+
records: TableProps<any>['dataSource'];
|
|
7
|
+
total: number;
|
|
8
|
+
loading?: boolean;
|
|
9
|
+
};
|
|
10
|
+
export declare type TableParamsProps = {
|
|
11
|
+
current?: number;
|
|
12
|
+
size?: number;
|
|
13
|
+
[key: string]: any;
|
|
14
|
+
};
|
|
15
|
+
export declare type DTableProps = TableProps<any> & {
|
|
16
|
+
/** 表格列的基础默认配置,默认所有列居中,表头文字超出显示省略号,详见 antd columns */
|
|
17
|
+
columnsProp?: ColumnType<any>;
|
|
18
|
+
/** 操作列配置,可以是一个普通列配置对象,也可以是一个columns的 render 函数 */
|
|
19
|
+
actionColumn?: ColumnType<any> | ColumnType<any>['render'];
|
|
20
|
+
/** 表格数据的加载函数,在表格创建、分页变化、额外参数变化时自动运行,如果设置该属性,则 dataSource 失效 */
|
|
21
|
+
loadMore?: (params?: TableParamsProps) => Promise<DTableSourceProps>;
|
|
22
|
+
/** 加载数据失败时是否显示错误信息(仅loadMore可用时生效) */
|
|
23
|
+
showErrorMsg?: boolean | ((err: any) => string);
|
|
24
|
+
/** 额外的请求参数,(仅loadMore可用时生效) */
|
|
25
|
+
extraParams?: TableParamsProps;
|
|
26
|
+
};
|
|
27
|
+
declare const DTable: React.ForwardRefExoticComponent<TableProps<any> & {
|
|
28
|
+
/** 表格列的基础默认配置,默认所有列居中,表头文字超出显示省略号,详见 antd columns */
|
|
29
|
+
columnsProp?: ColumnType<any> | undefined;
|
|
30
|
+
/** 操作列配置,可以是一个普通列配置对象,也可以是一个columns的 render 函数 */
|
|
31
|
+
actionColumn?: ColumnType<any> | ColumnType<any>['render'];
|
|
32
|
+
/** 表格数据的加载函数,在表格创建、分页变化、额外参数变化时自动运行,如果设置该属性,则 dataSource 失效 */
|
|
33
|
+
loadMore?: ((params?: TableParamsProps) => Promise<DTableSourceProps>) | undefined;
|
|
34
|
+
/** 加载数据失败时是否显示错误信息(仅loadMore可用时生效) */
|
|
35
|
+
showErrorMsg?: boolean | ((err: any) => string) | undefined;
|
|
36
|
+
/** 额外的请求参数,(仅loadMore可用时生效) */
|
|
37
|
+
extraParams?: TableParamsProps | undefined;
|
|
38
|
+
} & React.RefAttributes<HTMLDivElement>>;
|
|
39
|
+
export default DTable;
|