vap1 0.1.7 → 0.1.9
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/components/Box/Box.js +1 -2
- package/components/SearchBar/ByKeyword.js +2 -6
- package/components/SearchBar/_FieldType.d.ts +1 -1
- package/components/SearchBar/_FieldType.js +8 -2
- package/components/TreeSelect/BaseTreeSelect.d.ts +13 -15
- package/components/TreeSelect/BaseTreeSelect.js +148 -120
- package/components/TreeSelect/DTreeSelect.d.ts +2 -21
- package/components/TreeSelect/DTreeSelect.js +83 -23
- package/components/TreeSelect/FTreeSelect.d.ts +2 -8
- package/components/TreeSelect/FTreeSelect.js +18 -13
- package/components/TreeSelect/STreeSelect.d.ts +3 -12
- package/components/TreeSelect/STreeSelect.js +10 -40
- package/components/TreeSelect/index.d.ts +31 -69
- package/components/Trees/ActionTree.d.ts +2 -9
- package/components/Trees/BaseTree.d.ts +2 -2
- package/components/Trees/BaseTree.js +17 -12
- package/components/Trees/COTree/COSelect.js +1 -1
- package/components/Trees/DTree.d.ts +6 -12
- package/components/Trees/DTree.js +7 -9
- package/components/Trees/FTree.d.ts +7 -16
- package/components/Trees/FTree.js +3 -5
- package/components/Trees/STree.d.ts +2 -1
- package/components/Trees/STree.js +3 -5
- package/components/Trees/index.d.ts +20 -28
- package/components/UForm/_FieldType.d.ts +1 -1
- package/components/UForm/_FieldType.js +4 -1
- package/components/_setup/SearchField/SearchFieldDate.js +2 -2
- package/components/_setup/SearchField/SearchFieldTree.js +149 -189
- package/components/_setup/UForm/UFormTree.d.ts +1 -0
- package/components/_setup/UForm/UFormTree.js +99 -134
- package/index.d.ts +3 -0
- package/index.js +7 -1
- package/package.json +1 -1
- package/utils/TreeUtil.d.ts +2 -1
package/components/Box/Box.js
CHANGED
|
@@ -76,8 +76,7 @@ exports.Box = (0, react_1.forwardRef)((props, ref) => {
|
|
|
76
76
|
if (props.nobg)
|
|
77
77
|
className.push('c-box-nobg');
|
|
78
78
|
const style = Object.assign({}, props.style);
|
|
79
|
-
|
|
80
|
-
className.push('c-box-' + props.mode);
|
|
79
|
+
className.push(props.mode ? ('c-box-' + props.mode) : 'c-box-common');
|
|
81
80
|
if (props.mode == 'inner') {
|
|
82
81
|
if (rootRef.current == null) {
|
|
83
82
|
// style.height = 0;
|
|
@@ -46,9 +46,7 @@ const SearchBarByKeyword = (props) => {
|
|
|
46
46
|
if (props.fields && props.fields.length) {
|
|
47
47
|
inputProps.suffix = react_1.default.createElement(react_1.default.Fragment, null,
|
|
48
48
|
react_1.default.createElement("span", { ref: spanRef, onClick: () => setOpen(true), style: { pointerEvents: props.disabled ? 'none' : 'unset' }, className: 'vicon vicon-menu', title: utils_1.i18n.txt(Const_1.V.INPUT_SEARCH_ADVANCE) }, "\u00A0"),
|
|
49
|
-
react_1.default.createElement(Popover_1.Popover, { open: open,
|
|
50
|
-
// open={true}
|
|
51
|
-
onOpenChange: setOpen, trigger: "click", placement: "bottom", content: react_1.default.createElement(react_1.default.Fragment, null,
|
|
49
|
+
react_1.default.createElement(Popover_1.Popover, { open: open, onOpenChange: setOpen, trigger: "click", placement: "bottom", content: react_1.default.createElement(react_1.default.Fragment, null,
|
|
52
50
|
react_1.default.createElement("h3", null, utils_1.i18n.txt(Const_1.V.INPUT_SEARCH_ADVANCE)),
|
|
53
51
|
react_1.default.createElement("div", { className: 'c-searchbar' },
|
|
54
52
|
react_1.default.createElement(ByField_1.SearchBarByField, Object.assign({}, props, { onSearch: (param) => {
|
|
@@ -56,9 +54,7 @@ const SearchBarByKeyword = (props) => {
|
|
|
56
54
|
setOpen(false);
|
|
57
55
|
},
|
|
58
56
|
// @ts-ignore
|
|
59
|
-
__innerExpand: true, __innerOutside: true })))),
|
|
60
|
-
// autoAdjustOverflow={false}
|
|
61
|
-
overlayClassName: 'c-searchbar-keyword-more', getPopupContainer: () => {
|
|
57
|
+
__innerExpand: true, __innerOutside: true })))), overlayClassName: 'c-searchbar-keyword-more', getPopupContainer: () => {
|
|
62
58
|
const maskEls = document.getElementsByClassName('ant-modal-mask');
|
|
63
59
|
let hasMask = false;
|
|
64
60
|
for (let i = 0, _i = maskEls.length; i < _i; i++) {
|
|
@@ -5,4 +5,4 @@
|
|
|
5
5
|
| text ||
|
|
6
6
|
*
|
|
7
7
|
*/
|
|
8
|
-
export declare const _FieldType: readonly ["text", "number", "select", "multi-select", "radio", "radio-button", "checkbox", "switch", "date", "daterange", "daterange-single", "datetime", "
|
|
8
|
+
export declare const _FieldType: readonly ["text", "number", "select", "multi-select", "radio", "radio-button", "checkbox", "switch", "date", "daterange", "daterange-single", "datetime", "datetimerange", "datetimerange-single", "month", "monthrange", "stree-select", "dtree-select", "ftree-select", "multi-stree-select", "multi-dtree-select", "multi-ftree-select", "autocomplete"];
|
|
@@ -21,10 +21,16 @@ exports._FieldType = [
|
|
|
21
21
|
'daterange',
|
|
22
22
|
'daterange-single',
|
|
23
23
|
'datetime',
|
|
24
|
-
'
|
|
25
|
-
'
|
|
24
|
+
'datetimerange',
|
|
25
|
+
'datetimerange-single',
|
|
26
26
|
'month',
|
|
27
27
|
'monthrange',
|
|
28
|
+
'stree-select',
|
|
29
|
+
'dtree-select',
|
|
30
|
+
'ftree-select',
|
|
31
|
+
'multi-stree-select',
|
|
32
|
+
'multi-dtree-select',
|
|
33
|
+
'multi-ftree-select',
|
|
28
34
|
'autocomplete',
|
|
29
35
|
];
|
|
30
36
|
// * text 文本输入(默认)
|
|
@@ -1,33 +1,31 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import {
|
|
2
|
+
import type { ReactNode, PropsWithChildren } from 'react';
|
|
3
3
|
import type { TreeNodeData } from '../../utils/TreeUtil';
|
|
4
4
|
import type { TreeSelectProps } from 'antd/es/tree-select';
|
|
5
|
-
import type { AntTreeNodeProps } from 'antd/es/tree';
|
|
6
|
-
import type { PropsWithChildren } from 'react';
|
|
7
5
|
import type { BaseTreeSelectProps } from './index';
|
|
8
|
-
import type { PlainObject } from '../../basetype';
|
|
6
|
+
import type { PlainObject, Key } from '../../basetype';
|
|
9
7
|
export type BaseTreeSelectState = {
|
|
10
|
-
baseProps: TreeSelectProps<any>;
|
|
11
8
|
treeData: TreeNodeData[];
|
|
12
9
|
keyField: string;
|
|
10
|
+
iconField?: string | ((item: any) => ReactNode);
|
|
11
|
+
sortField?: string;
|
|
13
12
|
titleField: string;
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
}[];
|
|
13
|
+
rootCode?: Key;
|
|
14
|
+
parentField: string;
|
|
15
|
+
inited: boolean;
|
|
16
|
+
valueField?: string;
|
|
17
|
+
searchValue?: string;
|
|
20
18
|
};
|
|
21
19
|
type BaseTreeSelectContext = {
|
|
20
|
+
baseProps: TreeSelectProps<any>;
|
|
22
21
|
treeState: BaseTreeSelectState;
|
|
23
22
|
setTreeData: (treeData: TreeNodeData[]) => void;
|
|
24
|
-
|
|
25
|
-
|
|
23
|
+
extraProps: TreeSelectProps<any>;
|
|
24
|
+
value: Key[];
|
|
26
25
|
};
|
|
27
26
|
declare const BaseTreeSelectContext: React.Context<BaseTreeSelectContext>;
|
|
28
27
|
export declare const useBaseTree: () => BaseTreeSelectContext;
|
|
29
28
|
export declare const BaseTreeSelect: React.FC<PropsWithChildren<BaseTreeSelectProps>>;
|
|
30
|
-
export declare const getNodeParam: (node: any, state: BaseTreeSelectState, disabledNode: (node: PlainObject) => boolean) =>
|
|
29
|
+
export declare const getNodeParam: (node: any, state: BaseTreeSelectState, disabledNode: (node: PlainObject) => boolean) => any;
|
|
31
30
|
export declare const renderRoot: (props: BaseTreeSelectProps, state: BaseTreeSelectState) => React.ReactNode;
|
|
32
|
-
export declare const getData: (api: string, notCache: boolean) => Promise<PlainObject[]>;
|
|
33
31
|
export {};
|
|
@@ -22,169 +22,197 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
22
22
|
__setModuleDefault(result, mod);
|
|
23
23
|
return result;
|
|
24
24
|
};
|
|
25
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
26
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
27
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
28
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
29
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
30
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
31
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
32
|
-
});
|
|
33
|
-
};
|
|
34
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
35
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
36
|
-
};
|
|
37
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
38
|
-
exports.
|
|
39
|
-
const lodash_1 =
|
|
26
|
+
exports.renderRoot = exports.getNodeParam = exports.BaseTreeSelect = exports.useBaseTree = void 0;
|
|
27
|
+
const lodash_1 = __importStar(require("lodash"));
|
|
40
28
|
const react_1 = __importStar(require("react"));
|
|
41
|
-
const
|
|
29
|
+
const antd_1 = require("antd");
|
|
30
|
+
const HighLight_1 = require("../_common/HighLight");
|
|
31
|
+
;
|
|
32
|
+
const Icon_1 = require("../_adapt/Icon");
|
|
42
33
|
const utils_1 = require("../../utils");
|
|
43
34
|
const hooks_1 = require("../../hooks");
|
|
44
|
-
const _Support_1 = require("../../utils/_Support");
|
|
45
35
|
const BaseTreeSelectContext = (0, react_1.createContext)(null);
|
|
46
36
|
const useBaseTree = () => (0, react_1.useContext)(BaseTreeSelectContext);
|
|
47
37
|
exports.useBaseTree = useBaseTree;
|
|
48
38
|
const BaseTreeSelect = (props) => {
|
|
49
|
-
const clazz = utils_1.StringUtil.className(['c-tree'], props.className);
|
|
50
|
-
const basePropsKeys = [
|
|
51
|
-
'defaultValue',
|
|
52
|
-
'multiple',
|
|
53
|
-
'treeDefaultExpandAll',
|
|
54
|
-
'treeCheckable',
|
|
55
|
-
'disabled',
|
|
56
|
-
'showSearch',
|
|
57
|
-
'style'
|
|
58
|
-
];
|
|
59
|
-
const stateKeys = [
|
|
60
|
-
'rootCode',
|
|
61
|
-
'keyField',
|
|
62
|
-
'valueField',
|
|
63
|
-
// 'parentField'
|
|
64
|
-
];
|
|
65
39
|
const DEFAULT = {
|
|
66
|
-
|
|
67
|
-
dropdownStyle: { maxHeight: 400, overflow: 'auto' },
|
|
68
|
-
showSearch: true,
|
|
69
|
-
allowClear: true,
|
|
70
|
-
className: clazz,
|
|
71
|
-
style: { width: '300px' },
|
|
72
|
-
treeNodeFilterProp: 'title',
|
|
73
|
-
},
|
|
40
|
+
inited: false,
|
|
74
41
|
treeData: [],
|
|
75
|
-
rootCode: '0',
|
|
42
|
+
rootCode: lodash_1.default.has(props, 'rootCode') ? props.rootCode : '0',
|
|
76
43
|
titleField: 'name',
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
44
|
+
iconField: props.iconField,
|
|
45
|
+
keyField: props.keyField || 'id',
|
|
46
|
+
sortField: props.sortField,
|
|
47
|
+
parentField: props.parentField || 'parent',
|
|
81
48
|
};
|
|
82
|
-
lodash_1.default.forEach(stateKeys, (k) => {
|
|
83
|
-
if (props[k] != null) {
|
|
84
|
-
DEFAULT[k] = props[k];
|
|
85
|
-
}
|
|
86
|
-
});
|
|
87
|
-
lodash_1.default.forEach(basePropsKeys, (k) => {
|
|
88
|
-
if (props[k] != null) {
|
|
89
|
-
DEFAULT.baseProps[k] = props[k];
|
|
90
|
-
}
|
|
91
|
-
});
|
|
92
49
|
if (lodash_1.default.isString(props.titleField)) {
|
|
93
50
|
DEFAULT.titleField = props.titleField;
|
|
94
51
|
}
|
|
95
52
|
else {
|
|
96
|
-
let
|
|
97
|
-
if (props.titleField
|
|
98
|
-
|
|
99
|
-
if (utils_1.GLOBAL.CONFIG.APP.LANG == _Support_1.Language.ZH_CN) {
|
|
100
|
-
DEFAULT.titleField = props.titleField.zhCN;
|
|
101
|
-
}
|
|
53
|
+
let sysLang = utils_1.GLOBAL.CONFIG.APP.LANG.replace('-', '');
|
|
54
|
+
if (lodash_1.default.has(props.titleField, sysLang)) {
|
|
55
|
+
DEFAULT.titleField = props.titleField[sysLang];
|
|
102
56
|
}
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
if (utils_1.GLOBAL.CONFIG.APP.LANG == _Support_1.Language.EN_US) {
|
|
106
|
-
DEFAULT.titleField = props.titleField.enUS;
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
if (props.titleField.zhHK) {
|
|
110
|
-
langs.push({ lang: _Support_1.Language.ZH_HK, field: props.titleField.zhHK });
|
|
111
|
-
if (utils_1.GLOBAL.CONFIG.APP.LANG == _Support_1.Language.ZH_HK) {
|
|
112
|
-
DEFAULT.titleField = props.titleField.zhHK;
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
if (langs.length > 1) {
|
|
116
|
-
DEFAULT.langs = langs;
|
|
57
|
+
else {
|
|
58
|
+
DEFAULT.titleField = props.titleField.zhCN || props.titleField.zhHK || props.titleField.enUS || 'title';
|
|
117
59
|
}
|
|
118
60
|
}
|
|
61
|
+
if (props.valueField && props.value != DEFAULT.keyField) {
|
|
62
|
+
DEFAULT.valueField = props.valueField;
|
|
63
|
+
}
|
|
119
64
|
const [state, setState] = (0, hooks_1.useSetState)(DEFAULT);
|
|
120
|
-
const
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
65
|
+
const baseProps = (0, react_1.useMemo)(() => {
|
|
66
|
+
const treeSelectProps = {
|
|
67
|
+
// virtual: false,
|
|
68
|
+
// treeLine: true,
|
|
69
|
+
showSearch: true,
|
|
70
|
+
className: props.className,
|
|
71
|
+
placeholder: props.placeholder,
|
|
72
|
+
allowClear: true,
|
|
73
|
+
dropdownClassName: 'c-treeselect',
|
|
74
|
+
style: { width: '100%' },
|
|
75
|
+
};
|
|
76
|
+
if (props.style)
|
|
77
|
+
treeSelectProps.style = lodash_1.default.merge(treeSelectProps.style, props.style);
|
|
78
|
+
if (lodash_1.default.has(props, 'showSearch'))
|
|
79
|
+
treeSelectProps.showSearch = props.showSearch;
|
|
80
|
+
if (treeSelectProps.showSearch) {
|
|
81
|
+
treeSelectProps.onSearch = (searchValue) => {
|
|
82
|
+
setState({ searchValue: utils_1.StringUtil.trimLower(searchValue) });
|
|
83
|
+
};
|
|
125
84
|
}
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
allCheckedNodes.forEach(({ pos, node }) => {
|
|
132
|
-
nodes.push(Object.assign({ pos }, node.props.data.node));
|
|
133
|
-
});
|
|
85
|
+
if (props.multiple) {
|
|
86
|
+
treeSelectProps.multiple = true;
|
|
87
|
+
treeSelectProps.treeCheckable = true;
|
|
88
|
+
treeSelectProps.maxTagCount = props.maxTagCount || 3;
|
|
89
|
+
// treeSelectProps.maxTagTextLength = props.maxTagTextLength || 5;
|
|
134
90
|
}
|
|
135
|
-
|
|
136
|
-
|
|
91
|
+
treeSelectProps.filterTreeNode = (inputValue, node) => {
|
|
92
|
+
let word = utils_1.StringUtil.trimLower(inputValue);
|
|
93
|
+
;
|
|
94
|
+
if (word.length == 0)
|
|
95
|
+
return true;
|
|
96
|
+
return utils_1.StringUtil.trimLower(node.data[state.titleField]).indexOf(word) >= 0;
|
|
97
|
+
};
|
|
98
|
+
if (lodash_1.default.has(props, 'allowClear'))
|
|
99
|
+
treeSelectProps.allowClear = props.allowClear;
|
|
100
|
+
return treeSelectProps;
|
|
101
|
+
}, []);
|
|
102
|
+
const value = (0, react_1.useMemo)(() => {
|
|
103
|
+
if (props.multiple) {
|
|
104
|
+
if ((0, lodash_1.isArray)(props.value))
|
|
105
|
+
return props.value;
|
|
106
|
+
if (props.value)
|
|
107
|
+
return [props.value];
|
|
108
|
+
return [];
|
|
137
109
|
}
|
|
138
|
-
|
|
139
|
-
|
|
110
|
+
if (props.value == null)
|
|
111
|
+
return [];
|
|
112
|
+
if (lodash_1.default.isNumber(props.value) || lodash_1.default.isString(props.value))
|
|
113
|
+
return [props.value];
|
|
114
|
+
if (lodash_1.default.isArray(props.value) && props.value.length > 0)
|
|
115
|
+
return [props.value[0]];
|
|
116
|
+
return [];
|
|
117
|
+
}, [props.value]);
|
|
118
|
+
const setTreeData = (treeData) => setState({ treeData: [...treeData], inited: true, });
|
|
119
|
+
const extraProps = (0, react_1.useMemo)(() => {
|
|
120
|
+
if (!lodash_1.default.isFunction(props.onChange))
|
|
121
|
+
return {};
|
|
122
|
+
const extProps = {};
|
|
123
|
+
if (props.multiple === true) {
|
|
124
|
+
extProps.onChange = (value, label, extra) => {
|
|
125
|
+
if (!lodash_1.default.isFunction(props.onChange))
|
|
126
|
+
return;
|
|
127
|
+
let selected = [];
|
|
128
|
+
if (lodash_1.default.has(extra, 'allCheckedNodes')) {
|
|
129
|
+
selected = extra.allCheckedNodes.map(item => item.node.props.data);
|
|
130
|
+
}
|
|
131
|
+
const valueField = state.valueField || state.keyField;
|
|
132
|
+
props.onChange(selected.map(item => item[valueField]), selected);
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
else {
|
|
136
|
+
extProps.onChange = (v) => {
|
|
137
|
+
if (v === undefined) {
|
|
138
|
+
props.onChange(undefined, undefined);
|
|
139
|
+
}
|
|
140
|
+
};
|
|
141
|
+
extProps.onSelect = (value, node) => {
|
|
142
|
+
const data = lodash_1.default.has(node, 'props.data') ? node.props.data : null;
|
|
143
|
+
if (data == null) {
|
|
144
|
+
props.onChange(undefined, undefined);
|
|
145
|
+
}
|
|
146
|
+
else {
|
|
147
|
+
const valueField = state.valueField || state.keyField;
|
|
148
|
+
props.onChange(data[valueField], data);
|
|
149
|
+
}
|
|
150
|
+
};
|
|
151
|
+
// props.onChange(selected.map(item => item[valueField]), selected);
|
|
152
|
+
}
|
|
153
|
+
return extProps;
|
|
154
|
+
}, []);
|
|
155
|
+
return react_1.default.createElement(BaseTreeSelectContext.Provider, { value: { value, baseProps, treeState: state, setTreeData, extraProps } }, props.children);
|
|
140
156
|
};
|
|
141
157
|
exports.BaseTreeSelect = BaseTreeSelect;
|
|
142
158
|
const getNodeParam = (node, state, disabledNode) => {
|
|
143
|
-
const { titleField, keyField,
|
|
144
|
-
let param = {
|
|
145
|
-
param.title = node[titleField];
|
|
159
|
+
const { titleField, keyField, iconField, searchValue } = state;
|
|
160
|
+
let param = { value: node[keyField], key: node[keyField], data: node };
|
|
146
161
|
if (lodash_1.default.isFunction(disabledNode)) {
|
|
147
162
|
if (disabledNode(node)) {
|
|
148
163
|
param.disabled = true;
|
|
149
164
|
}
|
|
150
165
|
}
|
|
166
|
+
let title = node[titleField];
|
|
167
|
+
if (searchValue)
|
|
168
|
+
title = react_1.default.createElement(HighLight_1.HighLight, { text: node[titleField], keyword: searchValue });
|
|
169
|
+
if (iconField != null) {
|
|
170
|
+
if (lodash_1.default.isString(iconField)) {
|
|
171
|
+
let icon = node[iconField];
|
|
172
|
+
if (icon) {
|
|
173
|
+
if (icon.indexOf('/') >= 0) {
|
|
174
|
+
param.title = react_1.default.createElement(react_1.default.Fragment, null,
|
|
175
|
+
react_1.default.createElement("span", { className: 'v-icon-bg' },
|
|
176
|
+
react_1.default.createElement("img", { style: { marginTop: -4 }, src: node[iconField] })),
|
|
177
|
+
title);
|
|
178
|
+
}
|
|
179
|
+
else {
|
|
180
|
+
param.title = react_1.default.createElement(react_1.default.Fragment, null,
|
|
181
|
+
react_1.default.createElement(Icon_1.Icon, { type: node[iconField] }),
|
|
182
|
+
title);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
else if (lodash_1.default.isFunction(iconField)) {
|
|
187
|
+
let icon = iconField(node);
|
|
188
|
+
if (icon) {
|
|
189
|
+
param.title = react_1.default.createElement(react_1.default.Fragment, null,
|
|
190
|
+
icon,
|
|
191
|
+
title);
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
if (param.title == null)
|
|
196
|
+
param.title = title;
|
|
151
197
|
return param;
|
|
152
198
|
};
|
|
153
199
|
exports.getNodeParam = getNodeParam;
|
|
154
200
|
const renderNode = (node, state, props) => {
|
|
155
201
|
const param = (0, exports.getNodeParam)(node, state, props.disabledNode);
|
|
156
202
|
if (lodash_1.default.isArray(node.children) && node.children.length) {
|
|
157
|
-
return react_1.default.createElement(
|
|
203
|
+
return react_1.default.createElement(antd_1.TreeSelect.TreeNode, Object.assign({}, param, { isLeaf: false }), renderNodes(node.children, state, props));
|
|
158
204
|
}
|
|
159
205
|
let isLeaf = true;
|
|
160
206
|
if (props.checkField) {
|
|
161
207
|
isLeaf = !node[props.checkField];
|
|
162
208
|
}
|
|
163
|
-
return react_1.default.createElement(
|
|
209
|
+
return react_1.default.createElement(antd_1.TreeSelect.TreeNode, Object.assign({}, param, { isLeaf: isLeaf }));
|
|
164
210
|
};
|
|
165
211
|
const renderNodes = (data, state, props) => data.map((item) => renderNode(item, state, props));
|
|
166
212
|
const renderRoot = (props, state) => renderNodes(state.treeData, state, props);
|
|
167
213
|
exports.renderRoot = renderRoot;
|
|
168
|
-
const
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
else if (lodash_1.default.has(resp, 'list')) {
|
|
174
|
-
data = resp.list;
|
|
175
|
-
}
|
|
176
|
-
else {
|
|
177
|
-
data = [];
|
|
178
|
-
}
|
|
179
|
-
if (lodash_1.default.isArray(data)) {
|
|
180
|
-
return data;
|
|
181
|
-
}
|
|
182
|
-
return [data];
|
|
183
|
-
};
|
|
184
|
-
const getData = (api, notCache) => __awaiter(void 0, void 0, void 0, function* () {
|
|
185
|
-
if (!notCache)
|
|
186
|
-
utils_1.Ajax.SESSION(api);
|
|
187
|
-
const resp = yield utils_1.Ajax.GET(api);
|
|
188
|
-
return getResponseList(resp);
|
|
189
|
-
});
|
|
190
|
-
exports.getData = getData;
|
|
214
|
+
// export const getData = async (api: string, sortField: string) => {
|
|
215
|
+
// Ajax.SESSION(api);
|
|
216
|
+
// const resp = await Ajax.GET(api);
|
|
217
|
+
// return getResponseList(resp, sortField);
|
|
218
|
+
// }
|
|
@@ -1,24 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import type { BaseTreeSelectProps } from './index';
|
|
3
|
-
import type {
|
|
4
|
-
export type
|
|
5
|
-
/**
|
|
6
|
-
* 根节点API 与rootCode 二选一
|
|
7
|
-
*/
|
|
8
|
-
rootApi?: string;
|
|
9
|
-
/**
|
|
10
|
-
* 展开子节点:
|
|
11
|
-
*
|
|
12
|
-
* 方式一:传一个 api 接口地址,必须返回 VData<Array<Object>> 格式
|
|
13
|
-
*
|
|
14
|
-
* 方式二:传一个方法 ,接收一个父节点参数,必须返回 Promise<TreeNodeData[]> (不要返回 children, 仅返回一级)
|
|
15
|
-
*/
|
|
16
|
-
childApi: string | ((parentId: Key) => Promise<PlainObject[]>);
|
|
17
|
-
/**
|
|
18
|
-
* 接口是否缓存
|
|
19
|
-
*/
|
|
20
|
-
notCache?: boolean;
|
|
21
|
-
};
|
|
22
|
-
type DTreeSelectProps = BaseTreeSelectProps & DTreeProps;
|
|
3
|
+
import type { DTreeData } from '../Trees/DTree';
|
|
4
|
+
export type DTreeSelectProps = BaseTreeSelectProps & DTreeData;
|
|
23
5
|
export declare const DTreeSelect: React.FC<DTreeSelectProps>;
|
|
24
|
-
export {};
|
|
@@ -1,4 +1,27 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
2
25
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
26
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
27
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
@@ -13,52 +36,89 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
13
36
|
};
|
|
14
37
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
38
|
exports.DTreeSelect = void 0;
|
|
16
|
-
const react_1 =
|
|
17
|
-
const
|
|
39
|
+
const react_1 = __importStar(require("react"));
|
|
40
|
+
const antd_1 = require("antd");
|
|
18
41
|
const lodash_1 = __importDefault(require("lodash"));
|
|
19
42
|
const BaseTreeSelect_1 = require("./BaseTreeSelect");
|
|
20
43
|
const hooks_1 = require("../../hooks");
|
|
44
|
+
const utils_1 = require("../../utils");
|
|
45
|
+
const ActionTree_1 = require("../Trees/ActionTree");
|
|
46
|
+
;
|
|
47
|
+
const setChildrenByKey = (treeData, keyField, keyValue, children) => {
|
|
48
|
+
for (let node of treeData) {
|
|
49
|
+
if (lodash_1.default.isArray(node.children)) {
|
|
50
|
+
if (node.children.length) {
|
|
51
|
+
let result = setChildrenByKey(node.children, keyField, keyValue, children);
|
|
52
|
+
if (result) {
|
|
53
|
+
return true;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
if (node[keyField] == keyValue) {
|
|
59
|
+
node.children = children;
|
|
60
|
+
return true;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return false;
|
|
65
|
+
};
|
|
21
66
|
const _DTreeSelect = (props) => {
|
|
22
|
-
const { treeState, setTreeData,
|
|
23
|
-
const { rootApi,
|
|
67
|
+
const { baseProps, treeState, setTreeData, extraProps, value } = (0, BaseTreeSelect_1.useBaseTree)();
|
|
68
|
+
const { rootApi, childApi } = props;
|
|
69
|
+
const getChildren = (0, react_1.useCallback)((parent) => __awaiter(void 0, void 0, void 0, function* () {
|
|
70
|
+
let result = [];
|
|
71
|
+
if (lodash_1.default.isString(childApi)) {
|
|
72
|
+
const api = childApi + parent;
|
|
73
|
+
utils_1.Ajax.SESSION(api);
|
|
74
|
+
const resp = yield utils_1.Ajax.GET(api);
|
|
75
|
+
result = (0, ActionTree_1.getResponseList)(resp);
|
|
76
|
+
}
|
|
77
|
+
else if (lodash_1.default.isFunction(childApi)) {
|
|
78
|
+
result = yield childApi(parent);
|
|
79
|
+
}
|
|
80
|
+
if (props.sortField)
|
|
81
|
+
result = lodash_1.default.orderBy(result, props.sortField, 'asc');
|
|
82
|
+
return result;
|
|
83
|
+
}), []);
|
|
24
84
|
(0, hooks_1.useEffectFunction)(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
25
85
|
let treeData = [];
|
|
26
86
|
if (rootApi) {
|
|
27
|
-
|
|
87
|
+
utils_1.Ajax.SESSION(rootApi);
|
|
88
|
+
const resp = yield utils_1.Ajax.GET(rootApi);
|
|
89
|
+
treeData = (0, ActionTree_1.getResponseList)(resp);
|
|
90
|
+
if (props.sortField)
|
|
91
|
+
treeData = lodash_1.default.orderBy(treeData, props.sortField, 'asc');
|
|
28
92
|
}
|
|
29
93
|
else if (lodash_1.default.isFunction(props.childApi)) {
|
|
30
94
|
treeData = yield props.childApi(treeState.rootCode);
|
|
31
95
|
}
|
|
32
96
|
else {
|
|
33
|
-
treeData = yield (
|
|
34
|
-
}
|
|
35
|
-
if (treeData.length == 1) {
|
|
36
|
-
treeData[0].children = yield (0, BaseTreeSelect_1.getData)(childApi + treeData[0][treeState.keyField], notCache);
|
|
97
|
+
treeData = yield getChildren(props.rootCode);
|
|
37
98
|
}
|
|
99
|
+
if (treeData.length == 1)
|
|
100
|
+
treeData[0].children = yield getChildren(treeData[0][treeState.keyField]);
|
|
38
101
|
setTreeData(treeData);
|
|
39
102
|
}), []);
|
|
103
|
+
if (!treeState.inited)
|
|
104
|
+
return utils_1.Const.NONE;
|
|
40
105
|
const treeProps = {};
|
|
41
106
|
if (treeState.treeData.length == 1) {
|
|
42
107
|
// 如果根节点只有一个,则自动展开这个根结点
|
|
43
108
|
const key = treeState.treeData[0][treeState.keyField];
|
|
44
109
|
treeProps.treeDefaultExpandedKeys = [key];
|
|
45
|
-
// treeProps.treeLoadedKeys = [key];
|
|
46
110
|
}
|
|
111
|
+
if (treeState.valueField == null)
|
|
112
|
+
treeProps.value = value;
|
|
47
113
|
const loadData = (dataNode) => __awaiter(void 0, void 0, void 0, function* () {
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
const pathArr = dataNode.pos.split('-');
|
|
53
|
-
pathArr.splice(0, 1);
|
|
54
|
-
let nodePath = pathArr.map(i => `[${i}]`).join('.children');
|
|
55
|
-
const data = lodash_1.default.get(treeState.treeData, nodePath);
|
|
56
|
-
data.children = children;
|
|
57
|
-
setTreeData(treeState.treeData);
|
|
58
|
-
r(undefined);
|
|
59
|
-
}));
|
|
114
|
+
const { data } = dataNode.props;
|
|
115
|
+
const children = yield getChildren(data[treeState.keyField]);
|
|
116
|
+
setChildrenByKey(treeState.treeData, treeState.keyField, data[treeState.keyField], children);
|
|
117
|
+
setTreeData([...treeState.treeData]);
|
|
60
118
|
});
|
|
61
|
-
|
|
119
|
+
if (!treeState.inited)
|
|
120
|
+
return utils_1.Const.NONE;
|
|
121
|
+
return react_1.default.createElement(antd_1.TreeSelect, Object.assign({}, baseProps, treeProps, extraProps, { disabled: props.disabled, loadData: loadData }), (0, BaseTreeSelect_1.renderRoot)(props, treeState));
|
|
62
122
|
};
|
|
63
123
|
const DTreeSelect = (props) => react_1.default.createElement(BaseTreeSelect_1.BaseTreeSelect, Object.assign({}, props),
|
|
64
124
|
react_1.default.createElement(_DTreeSelect, Object.assign({}, props)));
|
|
@@ -1,11 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import type { BaseTreeSelectProps } from './index';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
* 获取数据的接口地址
|
|
6
|
-
*/
|
|
7
|
-
api?: string;
|
|
8
|
-
};
|
|
9
|
-
type FTreeSelectProps = BaseTreeSelectProps & FTreeFetch;
|
|
3
|
+
import type { FTreeData } from '../Trees/FTree';
|
|
4
|
+
export type FTreeSelectProps = BaseTreeSelectProps & Required<FTreeData>;
|
|
10
5
|
export declare const FTreeSelect: React.FC<FTreeSelectProps>;
|
|
11
|
-
export {};
|
|
@@ -14,25 +14,30 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
15
|
exports.FTreeSelect = void 0;
|
|
16
16
|
const react_1 = __importDefault(require("react"));
|
|
17
|
-
const
|
|
17
|
+
const antd_1 = require("antd");
|
|
18
18
|
const BaseTreeSelect_1 = require("./BaseTreeSelect");
|
|
19
19
|
const hooks_1 = require("../../hooks");
|
|
20
|
+
const utils_1 = require("../../utils");
|
|
21
|
+
const ActionTree_1 = require("../Trees/ActionTree");
|
|
20
22
|
const _FTreeSelect = (props) => {
|
|
21
|
-
const { treeState, setTreeData,
|
|
22
|
-
const { api } = props;
|
|
23
|
+
const { baseProps, treeState, setTreeData, extraProps, value } = (0, BaseTreeSelect_1.useBaseTree)();
|
|
23
24
|
(0, hooks_1.useEffectFunction)(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
setTreeData(
|
|
29
|
-
|
|
25
|
+
const { fetchApi } = props;
|
|
26
|
+
utils_1.Ajax.SESSION(fetchApi);
|
|
27
|
+
const resp = yield utils_1.Ajax.GET(fetchApi);
|
|
28
|
+
const data = (0, ActionTree_1.getResponseList)(resp);
|
|
29
|
+
setTreeData(utils_1.TreeUtil.buildFlatTree(props, data));
|
|
30
|
+
;
|
|
31
|
+
}));
|
|
30
32
|
const treeProps = {};
|
|
31
|
-
|
|
32
|
-
|
|
33
|
+
// 如果根节点只有一个,则自动展开这个根结点
|
|
34
|
+
if (treeState.treeData.length == 1)
|
|
33
35
|
treeProps.treeDefaultExpandedKeys = [treeState.treeData[0][treeState.keyField]];
|
|
34
|
-
|
|
35
|
-
|
|
36
|
+
if (treeState.valueField == null)
|
|
37
|
+
treeProps.value = value;
|
|
38
|
+
if (!treeState.inited)
|
|
39
|
+
return utils_1.Const.NONE;
|
|
40
|
+
return react_1.default.createElement(antd_1.TreeSelect, Object.assign({}, baseProps, treeProps, extraProps, { disabled: props.disabled }), (0, BaseTreeSelect_1.renderRoot)(props, treeState));
|
|
36
41
|
};
|
|
37
42
|
const FTreeSelect = (props) => react_1.default.createElement(BaseTreeSelect_1.BaseTreeSelect, Object.assign({}, props),
|
|
38
43
|
react_1.default.createElement(_FTreeSelect, Object.assign({}, props)));
|