vap1 0.1.7 → 0.1.8
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/SearchBar/ByKeyword.js +2 -6
- package/components/SearchBar/_FieldType.d.ts +1 -1
- package/components/SearchBar/_FieldType.js +2 -2
- package/components/TreeSelect/BaseTreeSelect.d.ts +13 -15
- package/components/TreeSelect/BaseTreeSelect.js +149 -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/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
|
@@ -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", "autocomplete"];
|
|
@@ -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,198 @@ 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
|
+
// import { HighLight, Icon } from '';
|
|
31
|
+
const HighLight_1 = require("../_common/HighLight");
|
|
32
|
+
;
|
|
33
|
+
const Icon_1 = require("../_adapt/Icon");
|
|
42
34
|
const utils_1 = require("../../utils");
|
|
43
35
|
const hooks_1 = require("../../hooks");
|
|
44
|
-
const _Support_1 = require("../../utils/_Support");
|
|
45
36
|
const BaseTreeSelectContext = (0, react_1.createContext)(null);
|
|
46
37
|
const useBaseTree = () => (0, react_1.useContext)(BaseTreeSelectContext);
|
|
47
38
|
exports.useBaseTree = useBaseTree;
|
|
48
39
|
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
40
|
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
|
-
},
|
|
41
|
+
inited: false,
|
|
74
42
|
treeData: [],
|
|
75
|
-
rootCode: '0',
|
|
43
|
+
rootCode: lodash_1.default.has(props, 'rootCode') ? props.rootCode : '0',
|
|
76
44
|
titleField: 'name',
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
45
|
+
iconField: props.iconField,
|
|
46
|
+
keyField: props.keyField || 'id',
|
|
47
|
+
sortField: props.sortField,
|
|
48
|
+
parentField: props.parentField || 'parent',
|
|
81
49
|
};
|
|
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
50
|
if (lodash_1.default.isString(props.titleField)) {
|
|
93
51
|
DEFAULT.titleField = props.titleField;
|
|
94
52
|
}
|
|
95
53
|
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
|
-
}
|
|
54
|
+
let sysLang = utils_1.GLOBAL.CONFIG.APP.LANG.replace('-', '');
|
|
55
|
+
if (lodash_1.default.has(props.titleField, sysLang)) {
|
|
56
|
+
DEFAULT.titleField = props.titleField[sysLang];
|
|
102
57
|
}
|
|
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;
|
|
58
|
+
else {
|
|
59
|
+
DEFAULT.titleField = props.titleField.zhCN || props.titleField.zhHK || props.titleField.enUS || 'title';
|
|
117
60
|
}
|
|
118
61
|
}
|
|
62
|
+
if (props.valueField && props.value != DEFAULT.keyField) {
|
|
63
|
+
DEFAULT.valueField = props.valueField;
|
|
64
|
+
}
|
|
119
65
|
const [state, setState] = (0, hooks_1.useSetState)(DEFAULT);
|
|
120
|
-
const
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
66
|
+
const baseProps = (0, react_1.useMemo)(() => {
|
|
67
|
+
const treeSelectProps = {
|
|
68
|
+
// virtual: false,
|
|
69
|
+
// treeLine: true,
|
|
70
|
+
showSearch: true,
|
|
71
|
+
className: props.className,
|
|
72
|
+
placeholder: props.placeholder,
|
|
73
|
+
allowClear: true,
|
|
74
|
+
dropdownClassName: 'c-treeselect',
|
|
75
|
+
style: { width: '100%' },
|
|
76
|
+
};
|
|
77
|
+
if (props.style)
|
|
78
|
+
treeSelectProps.style = lodash_1.default.merge(treeSelectProps.style, props.style);
|
|
79
|
+
if (lodash_1.default.has(props, 'showSearch'))
|
|
80
|
+
treeSelectProps.showSearch = props.showSearch;
|
|
81
|
+
if (treeSelectProps.showSearch) {
|
|
82
|
+
treeSelectProps.onSearch = (searchValue) => {
|
|
83
|
+
setState({ searchValue: utils_1.StringUtil.trimLower(searchValue) });
|
|
84
|
+
};
|
|
125
85
|
}
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
allCheckedNodes.forEach(({ pos, node }) => {
|
|
132
|
-
nodes.push(Object.assign({ pos }, node.props.data.node));
|
|
133
|
-
});
|
|
86
|
+
if (props.multiple) {
|
|
87
|
+
treeSelectProps.multiple = true;
|
|
88
|
+
treeSelectProps.treeCheckable = true;
|
|
89
|
+
treeSelectProps.maxTagCount = props.maxTagCount || 3;
|
|
90
|
+
// treeSelectProps.maxTagTextLength = props.maxTagTextLength || 5;
|
|
134
91
|
}
|
|
135
|
-
|
|
136
|
-
|
|
92
|
+
treeSelectProps.filterTreeNode = (inputValue, node) => {
|
|
93
|
+
let word = utils_1.StringUtil.trimLower(inputValue);
|
|
94
|
+
;
|
|
95
|
+
if (word.length == 0)
|
|
96
|
+
return true;
|
|
97
|
+
return utils_1.StringUtil.trimLower(node.data[state.titleField]).indexOf(word) >= 0;
|
|
98
|
+
};
|
|
99
|
+
if (lodash_1.default.has(props, 'allowClear'))
|
|
100
|
+
treeSelectProps.allowClear = props.allowClear;
|
|
101
|
+
return treeSelectProps;
|
|
102
|
+
}, []);
|
|
103
|
+
const value = (0, react_1.useMemo)(() => {
|
|
104
|
+
if (props.multiple) {
|
|
105
|
+
if ((0, lodash_1.isArray)(props.value))
|
|
106
|
+
return props.value;
|
|
107
|
+
if (props.value)
|
|
108
|
+
return [props.value];
|
|
109
|
+
return [];
|
|
137
110
|
}
|
|
138
|
-
|
|
139
|
-
|
|
111
|
+
if (props.value == null)
|
|
112
|
+
return [];
|
|
113
|
+
if (lodash_1.default.isNumber(props.value) || lodash_1.default.isString(props.value))
|
|
114
|
+
return [props.value];
|
|
115
|
+
if (lodash_1.default.isArray(props.value) && props.value.length > 0)
|
|
116
|
+
return [props.value[0]];
|
|
117
|
+
return [];
|
|
118
|
+
}, [props.value]);
|
|
119
|
+
const setTreeData = (treeData) => setState({ treeData: [...treeData], inited: true, });
|
|
120
|
+
const extraProps = (0, react_1.useMemo)(() => {
|
|
121
|
+
if (!lodash_1.default.isFunction(props.onChange))
|
|
122
|
+
return {};
|
|
123
|
+
const extProps = {};
|
|
124
|
+
if (props.multiple === true) {
|
|
125
|
+
extProps.onChange = (value, label, extra) => {
|
|
126
|
+
if (!lodash_1.default.isFunction(props.onChange))
|
|
127
|
+
return;
|
|
128
|
+
let selected = [];
|
|
129
|
+
if (lodash_1.default.has(extra, 'allCheckedNodes')) {
|
|
130
|
+
selected = extra.allCheckedNodes.map(item => item.node.props.data);
|
|
131
|
+
}
|
|
132
|
+
const valueField = state.valueField || state.keyField;
|
|
133
|
+
props.onChange(selected.map(item => item[valueField]), selected);
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
else {
|
|
137
|
+
extProps.onChange = (v) => {
|
|
138
|
+
if (v === undefined) {
|
|
139
|
+
props.onChange(undefined, undefined);
|
|
140
|
+
}
|
|
141
|
+
};
|
|
142
|
+
extProps.onSelect = (value, node) => {
|
|
143
|
+
const data = lodash_1.default.has(node, 'props.data') ? node.props.data : null;
|
|
144
|
+
if (data == null) {
|
|
145
|
+
props.onChange(undefined, undefined);
|
|
146
|
+
}
|
|
147
|
+
else {
|
|
148
|
+
const valueField = state.valueField || state.keyField;
|
|
149
|
+
props.onChange(data[valueField], data);
|
|
150
|
+
}
|
|
151
|
+
};
|
|
152
|
+
// props.onChange(selected.map(item => item[valueField]), selected);
|
|
153
|
+
}
|
|
154
|
+
return extProps;
|
|
155
|
+
}, []);
|
|
156
|
+
return react_1.default.createElement(BaseTreeSelectContext.Provider, { value: { value, baseProps, treeState: state, setTreeData, extraProps } }, props.children);
|
|
140
157
|
};
|
|
141
158
|
exports.BaseTreeSelect = BaseTreeSelect;
|
|
142
159
|
const getNodeParam = (node, state, disabledNode) => {
|
|
143
|
-
const { titleField, keyField,
|
|
144
|
-
let param = {
|
|
145
|
-
param.title = node[titleField];
|
|
160
|
+
const { titleField, keyField, iconField, searchValue } = state;
|
|
161
|
+
let param = { value: node[keyField], key: node[keyField], data: node };
|
|
146
162
|
if (lodash_1.default.isFunction(disabledNode)) {
|
|
147
163
|
if (disabledNode(node)) {
|
|
148
164
|
param.disabled = true;
|
|
149
165
|
}
|
|
150
166
|
}
|
|
167
|
+
let title = node[titleField];
|
|
168
|
+
if (searchValue)
|
|
169
|
+
title = react_1.default.createElement(HighLight_1.HighLight, { text: node[titleField], keyword: searchValue });
|
|
170
|
+
if (iconField != null) {
|
|
171
|
+
if (lodash_1.default.isString(iconField)) {
|
|
172
|
+
let icon = node[iconField];
|
|
173
|
+
if (icon) {
|
|
174
|
+
if (icon.indexOf('/') >= 0) {
|
|
175
|
+
param.title = react_1.default.createElement(react_1.default.Fragment, null,
|
|
176
|
+
react_1.default.createElement("span", { className: 'v-icon-bg' },
|
|
177
|
+
react_1.default.createElement("img", { style: { marginTop: -4 }, src: node[iconField] })),
|
|
178
|
+
title);
|
|
179
|
+
}
|
|
180
|
+
else {
|
|
181
|
+
param.title = react_1.default.createElement(react_1.default.Fragment, null,
|
|
182
|
+
react_1.default.createElement(Icon_1.Icon, { type: node[iconField] }),
|
|
183
|
+
title);
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
else if (lodash_1.default.isFunction(iconField)) {
|
|
188
|
+
let icon = iconField(node);
|
|
189
|
+
if (icon) {
|
|
190
|
+
param.title = react_1.default.createElement(react_1.default.Fragment, null,
|
|
191
|
+
icon,
|
|
192
|
+
title);
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
if (param.title == null)
|
|
197
|
+
param.title = title;
|
|
151
198
|
return param;
|
|
152
199
|
};
|
|
153
200
|
exports.getNodeParam = getNodeParam;
|
|
154
201
|
const renderNode = (node, state, props) => {
|
|
155
202
|
const param = (0, exports.getNodeParam)(node, state, props.disabledNode);
|
|
156
203
|
if (lodash_1.default.isArray(node.children) && node.children.length) {
|
|
157
|
-
return react_1.default.createElement(
|
|
204
|
+
return react_1.default.createElement(antd_1.TreeSelect.TreeNode, Object.assign({}, param, { isLeaf: false }), renderNodes(node.children, state, props));
|
|
158
205
|
}
|
|
159
206
|
let isLeaf = true;
|
|
160
207
|
if (props.checkField) {
|
|
161
208
|
isLeaf = !node[props.checkField];
|
|
162
209
|
}
|
|
163
|
-
return react_1.default.createElement(
|
|
210
|
+
return react_1.default.createElement(antd_1.TreeSelect.TreeNode, Object.assign({}, param, { isLeaf: isLeaf }));
|
|
164
211
|
};
|
|
165
212
|
const renderNodes = (data, state, props) => data.map((item) => renderNode(item, state, props));
|
|
166
213
|
const renderRoot = (props, state) => renderNodes(state.treeData, state, props);
|
|
167
214
|
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;
|
|
215
|
+
// export const getData = async (api: string, sortField: string) => {
|
|
216
|
+
// Ajax.SESSION(api);
|
|
217
|
+
// const resp = await Ajax.GET(api);
|
|
218
|
+
// return getResponseList(resp, sortField);
|
|
219
|
+
// }
|
|
@@ -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)));
|
|
@@ -1,14 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
+
import type { STreeData } from '../Trees/STree';
|
|
2
3
|
import type { BaseTreeSelectProps } from './index';
|
|
3
|
-
|
|
4
|
-
export
|
|
5
|
-
/**
|
|
6
|
-
* 树数据
|
|
7
|
-
* */
|
|
8
|
-
treeData: TreeNodeData[];
|
|
9
|
-
/**
|
|
10
|
-
* 是否扁平数据,默认非扁平数据
|
|
11
|
-
*/
|
|
12
|
-
isFlat?: boolean;
|
|
13
|
-
};
|
|
14
|
-
export declare const STreeSelect: React.FC<SSelectTreeProps>;
|
|
4
|
+
export type STreeSelectProps = BaseTreeSelectProps & STreeData;
|
|
5
|
+
export declare const STreeSelect: React.FC<STreeSelectProps>;
|