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.
Files changed (34) hide show
  1. package/components/Box/Box.js +1 -2
  2. package/components/SearchBar/ByKeyword.js +2 -6
  3. package/components/SearchBar/_FieldType.d.ts +1 -1
  4. package/components/SearchBar/_FieldType.js +8 -2
  5. package/components/TreeSelect/BaseTreeSelect.d.ts +13 -15
  6. package/components/TreeSelect/BaseTreeSelect.js +148 -120
  7. package/components/TreeSelect/DTreeSelect.d.ts +2 -21
  8. package/components/TreeSelect/DTreeSelect.js +83 -23
  9. package/components/TreeSelect/FTreeSelect.d.ts +2 -8
  10. package/components/TreeSelect/FTreeSelect.js +18 -13
  11. package/components/TreeSelect/STreeSelect.d.ts +3 -12
  12. package/components/TreeSelect/STreeSelect.js +10 -40
  13. package/components/TreeSelect/index.d.ts +31 -69
  14. package/components/Trees/ActionTree.d.ts +2 -9
  15. package/components/Trees/BaseTree.d.ts +2 -2
  16. package/components/Trees/BaseTree.js +17 -12
  17. package/components/Trees/COTree/COSelect.js +1 -1
  18. package/components/Trees/DTree.d.ts +6 -12
  19. package/components/Trees/DTree.js +7 -9
  20. package/components/Trees/FTree.d.ts +7 -16
  21. package/components/Trees/FTree.js +3 -5
  22. package/components/Trees/STree.d.ts +2 -1
  23. package/components/Trees/STree.js +3 -5
  24. package/components/Trees/index.d.ts +20 -28
  25. package/components/UForm/_FieldType.d.ts +1 -1
  26. package/components/UForm/_FieldType.js +4 -1
  27. package/components/_setup/SearchField/SearchFieldDate.js +2 -2
  28. package/components/_setup/SearchField/SearchFieldTree.js +149 -189
  29. package/components/_setup/UForm/UFormTree.d.ts +1 -0
  30. package/components/_setup/UForm/UFormTree.js +99 -134
  31. package/index.d.ts +3 -0
  32. package/index.js +7 -1
  33. package/package.json +1 -1
  34. package/utils/TreeUtil.d.ts +2 -1
@@ -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
- if (props.mode)
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", "timerange", "timerange-single", "month", "monthrange", "autocomplete"];
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
- 'timerange',
25
- 'timerange-single',
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 { Language } from '../../utils/_Support';
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
- valueField: string;
15
- rootCode?: string | number;
16
- langs: {
17
- lang: Language;
18
- field: string;
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
- onSelect: TreeSelectProps<any>['onSelect'];
25
- onChange: TreeSelectProps<any>['onChange'];
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) => AntTreeNodeProps;
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.getData = exports.renderRoot = exports.getNodeParam = exports.BaseTreeSelect = exports.useBaseTree = void 0;
39
- const lodash_1 = __importDefault(require("lodash"));
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 TreeSelect_1 = require("../_adapt/TreeSelect");
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
- baseProps: {
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
- keyField: 'id',
78
- valueField: null,
79
- // parentField: null,
80
- langs: null,
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 langs = [];
97
- if (props.titleField.zhCN) {
98
- langs.push({ lang: _Support_1.Language.ZH_CN, field: props.titleField.zhCN });
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
- if (props.titleField.enUS) {
104
- langs.push({ lang: _Support_1.Language.EN_US, field: props.titleField.enUS });
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 setTreeData = (treeData) => setState({ treeData: [...treeData] });
121
- const onSelect = (0, react_1.useCallback)((value, info, extra) => {
122
- const data = info.data.node;
123
- if (props.onSelect) {
124
- props.onSelect(value, data[DEFAULT.keyField], data);
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
- }, [state.treeData]);
127
- const onChange = (0, react_1.useCallback)((value, labelList, extra) => {
128
- let nodes = [];
129
- if (value.length > 0) {
130
- const allCheckedNodes = extra.allCheckedNodes;
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
- if (lodash_1.default.isFunction(props.onChange)) {
136
- props.onChange(value, labelList, nodes);
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
- }, [state.treeData]);
139
- return react_1.default.createElement(BaseTreeSelectContext.Provider, { value: { treeState: state, setTreeData, onSelect, onChange } }, props.children);
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, valueField, } = state;
144
- let param = { key: node[keyField], data: { node }, value: node[valueField] };
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(TreeSelect_1.TreeSelect.TreeNode, Object.assign({}, param, { isLeaf: false }), renderNodes(node.children, state, props));
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(TreeSelect_1.TreeSelect.TreeNode, Object.assign({}, param, { isLeaf: isLeaf }));
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 getResponseList = (resp) => {
169
- let data;
170
- if (lodash_1.default.has(resp, 'data')) {
171
- data = resp.data;
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 { Key, PlainObject } from '../../basetype';
4
- export type DTreeProps = {
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 = __importDefault(require("react"));
17
- const TreeSelect_1 = require("../_adapt/TreeSelect");
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, onChange, onSelect } = (0, BaseTreeSelect_1.useBaseTree)();
23
- const { rootApi, notCache, childApi } = props;
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
- treeData = yield (0, BaseTreeSelect_1.getData)(rootApi, notCache);
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 (0, BaseTreeSelect_1.getData)(childApi + treeState.rootCode, notCache);
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
- return new Promise((r) => __awaiter(void 0, void 0, void 0, function* () {
49
- const { node } = dataNode.data;
50
- const API = props.childApi + node[treeState.keyField];
51
- const children = yield (0, BaseTreeSelect_1.getData)(API, notCache);
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
- return react_1.default.createElement(TreeSelect_1.TreeSelect, Object.assign({}, treeState.baseProps, treeProps, { disabled: props.disabled, loadData: loadData, onChange: onChange, onSelect: onSelect }), (0, BaseTreeSelect_1.renderRoot)(props, treeState));
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
- export type FTreeFetch = {
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 TreeSelect_1 = require("../_adapt/TreeSelect");
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, onChange, onSelect } = (0, BaseTreeSelect_1.useBaseTree)();
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
- let treeData = [];
25
- if (api) {
26
- treeData = yield (0, BaseTreeSelect_1.getData)(api, false);
27
- }
28
- setTreeData(treeData);
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
- if (treeState.treeData.length == 1) {
32
- // 如果根节点只有一个,则自动展开这个根结点
33
+ // 如果根节点只有一个,则自动展开这个根结点
34
+ if (treeState.treeData.length == 1)
33
35
  treeProps.treeDefaultExpandedKeys = [treeState.treeData[0][treeState.keyField]];
34
- }
35
- return react_1.default.createElement(TreeSelect_1.TreeSelect, Object.assign({}, treeState.baseProps, treeProps, { disabled: props.disabled, onChange: onChange, onSelect: onSelect }), (0, BaseTreeSelect_1.renderRoot)(props, treeState));
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)));