vap1 0.0.7 → 0.0.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.
Files changed (83) hide show
  1. package/components/SearchBar/ActionButtons.d.ts +2 -1
  2. package/components/SearchBar/ByKeyword.js +1 -1
  3. package/components/Tables/ApiTableModal.d.ts +2 -2
  4. package/components/Tables/TopTable.js +3 -3
  5. package/components/Tables/TopTableModal.d.ts +2 -2
  6. package/components/Tables/VTable.js +3 -1
  7. package/components/Trees/ActionTree.d.ts +3 -1
  8. package/components/Trees/ActionTree.js +77 -20
  9. package/components/Trees/BaseTree.d.ts +8 -3
  10. package/components/Trees/BaseTree.js +12 -3
  11. package/components/Trees/FTree.js +0 -1
  12. package/components/Trees/STree.js +6 -7
  13. package/components/Trees/index.d.ts +6 -1
  14. package/components/UForm/UForm.js +40 -8
  15. package/components/UForm/UFormModal.js +4 -1
  16. package/components/UForm/UInfoModal.js +3 -0
  17. package/components/UForm/UModal.js +10 -5
  18. package/components/UForm/index.d.ts +8 -3
  19. package/components/Upload/UploadModal.d.ts +2 -2
  20. package/components/Upload/UploadModal.js +5 -1
  21. package/components/Upload/useUpload.d.ts +2 -2
  22. package/components/_adapt/Alert.d.ts +3 -3
  23. package/components/_adapt/Breadcrumb.d.ts +15 -0
  24. package/components/_adapt/Breadcrumb.js +18 -0
  25. package/components/_adapt/Button.d.ts +5 -5
  26. package/components/_adapt/Button.js +2 -0
  27. package/components/_adapt/Collapse.d.ts +7 -7
  28. package/components/_adapt/ConfigProvider.d.ts +6 -0
  29. package/components/_adapt/ConfigProvider.js +10 -0
  30. package/components/_adapt/Drawer.d.ts +3 -3
  31. package/components/_adapt/Dropdown.d.ts +6 -6
  32. package/components/_adapt/FloatButton.d.ts +3 -3
  33. package/components/_adapt/FloatButton.js +1 -0
  34. package/components/_adapt/Form.d.ts +14 -0
  35. package/components/_adapt/Form.js +48 -0
  36. package/components/_adapt/Input.d.ts +17 -0
  37. package/components/_adapt/Input.js +43 -0
  38. package/components/_adapt/InputNumber.d.ts +8 -0
  39. package/components/_adapt/InputNumber.js +60 -0
  40. package/components/_adapt/Menu.d.ts +8 -7
  41. package/components/_adapt/Menu.js +12 -20
  42. package/components/_adapt/Modal.d.ts +9 -7
  43. package/components/_adapt/Modal.js +12 -20
  44. package/components/_adapt/Popconfirm.d.ts +3 -3
  45. package/components/_adapt/Popover.d.ts +3 -3
  46. package/components/_adapt/Progress.d.ts +3 -3
  47. package/components/_adapt/Radio.d.ts +16 -0
  48. package/components/_adapt/Radio.js +24 -0
  49. package/components/_adapt/Select.d.ts +15 -8
  50. package/components/_adapt/Select.js +134 -13
  51. package/components/_adapt/Slider.d.ts +31 -0
  52. package/components/_adapt/Slider.js +5 -0
  53. package/components/_adapt/Table.d.ts +26 -0
  54. package/components/_adapt/Table.js +43 -0
  55. package/components/_adapt/Tabs.d.ts +4 -4
  56. package/components/_adapt/Tag.d.ts +9 -7
  57. package/components/_adapt/Tag.js +4 -3
  58. package/components/_adapt/Tooltip.d.ts +3 -3
  59. package/components/_adapt/TreeSelect.d.ts +13 -0
  60. package/components/_adapt/TreeSelect.js +46 -0
  61. package/components/_adapt/_Antd5.d.ts +11 -0
  62. package/components/_adapt/_Antd5.js +5 -0
  63. package/components/_adapt/notification.d.ts +22 -0
  64. package/components/_adapt/notification.js +5 -0
  65. package/components/_adapt/todo/Image.d.ts +1 -1
  66. package/components/_adapt/todo/Segmented.d.ts +1 -1
  67. package/components/_adapt/utils.d.ts +1 -1
  68. package/components/_adapt/utils.js +1 -0
  69. package/components/_common/AutoComplete.js +1 -1
  70. package/components/_setup/UForm/UFormTree.js +1 -1
  71. package/deps/SpringCloud.d.ts +1 -1
  72. package/hooks/useAjaxQuery.d.ts +5 -8
  73. package/hooks/useAjaxQuery.js +21 -25
  74. package/index.d.ts +43 -30
  75. package/index.js +23 -13
  76. package/package.json +1 -1
  77. package/utils/Const.d.ts +1 -1
  78. package/utils/CustomApp.d.ts +3 -3
  79. package/utils/Global.js +39 -0
  80. package/utils/PageUtil.d.ts +5 -1
  81. package/utils/PageUtil.js +15 -1
  82. package/utils/Renders/StatusRender.d.ts +1 -1
  83. package/utils/TreeUtil.d.ts +9 -0
@@ -1,5 +1,6 @@
1
1
  import React from 'react';
2
- import type { ButtonType, OButtonProps as ButtonProps } from '../_adapt/Button';
2
+ import type { ButtonType } from '../_adapt/_Antd5';
3
+ import type { ButtonProps } from '../_adapt/Button';
3
4
  import type { ButtonSize } from 'antd/es/button';
4
5
  export type ActButton = {
5
6
  /**
@@ -27,7 +27,7 @@ const SearchBarByKeyword = (props) => {
27
27
  react_1.default.createElement("div", { className: 'c-searchbar' },
28
28
  react_1.default.createElement(ByField_1.SearchBarByField, Object.assign({}, props, {
29
29
  // @ts-ignore
30
- __innerExpand: true, __innerOutside: true })))), rootClassName: 'c-searchbar-keyword-more', getPopupContainer: () => document.getElementById('vap-app-content') },
30
+ __innerExpand: true, __innerOutside: true })))), overlayClassName: 'c-searchbar-keyword-more', getPopupContainer: () => document.getElementById('vap-app-content') },
31
31
  react_1.default.createElement("span", { className: 'vicon vicon-menu', title: utils_1.i18n.txt(Const_1.V.INPUT_SEARCH_ADVANCE) }));
32
32
  }
33
33
  return react_1.default.createElement(antd_1.Input.Search, Object.assign({}, inputProps, { onSearch: keyword => props.onSearch({ keyword_: keyword }), enterButton: utils_1.i18n.txt(Const_1.V.BTN_SEARCH) }));
@@ -1,8 +1,8 @@
1
1
  import React from "react";
2
- import type { VModalProps } from '../_adapt/Modal';
2
+ import type { ModalProps } from '../_adapt/Modal';
3
3
  import type { ApiTableProps } from './ApiTable';
4
4
  import type { ApiModel } from '../../hooks/_list';
5
- export type ApiTableModalProps = ApiTableProps & VModalProps;
5
+ export type ApiTableModalProps = ApiTableProps & ModalProps;
6
6
  export declare const ApiTableModal: React.ForwardRefExoticComponent<import(".").TableDefine & {
7
7
  mode?: import("../Box/Box").BoxMode;
8
8
  columns: import(".").TableColumn[];
@@ -29,7 +29,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
29
29
  exports.TopTable = void 0;
30
30
  const lodash_1 = __importDefault(require("lodash"));
31
31
  const react_1 = __importStar(require("react"));
32
- const antd_1 = require("antd");
32
+ const Table_1 = require("../_adapt/Table");
33
33
  const utils_1 = require("../../utils");
34
34
  const Util_1 = require("./Util");
35
35
  const VTable_1 = require("./VTable");
@@ -127,7 +127,7 @@ const TopTable = props => {
127
127
  tableLayout: 'fixed',
128
128
  rowKey,
129
129
  size: utils_1.GLOBAL.CONFIG.TABLE.SIZE,
130
- // showSorterTooltip: false,
130
+ showSorterTooltip: false,
131
131
  pagination: false,
132
132
  };
133
133
  if (lodash_1.default.isFunction(props.onRowSelect)) {
@@ -137,7 +137,7 @@ const TopTable = props => {
137
137
  }
138
138
  });
139
139
  }
140
- return react_1.default.createElement(antd_1.Table, Object.assign({}, tableProps, props, {
140
+ return react_1.default.createElement(Table_1.Table, Object.assign({}, tableProps, props, {
141
141
  // ref={tableRef}
142
142
  rowClassName: (record, i) => {
143
143
  let clazz = [];
@@ -1,5 +1,5 @@
1
1
  import React from "react";
2
- import type { VModalProps } from '../_adapt/Modal';
2
+ import type { ModalProps } from '../_adapt/Modal';
3
3
  import type { TopTableProps } from './TopTable';
4
- export type TopTableModalProps = TopTableProps & VModalProps;
4
+ export type TopTableModalProps = TopTableProps & ModalProps;
5
5
  export declare const TopTableModal: React.FC<TopTableModalProps>;
@@ -178,7 +178,9 @@ const _VTable = react_1.default.forwardRef((props, ref) => {
178
178
  },
179
179
  };
180
180
  }
181
- return react_1.default.createElement(antd_1.Table, Object.assign({ rowKey: props.rowKey || rowKey, scroll: scroll, tableLayout: "fixed",
181
+ return react_1.default.createElement(antd_1.Table, Object.assign({ rowKey: record => record[props.rowKey || rowKey],
182
+ // scroll={scroll}
183
+ // tableLayout="fixed"
182
184
  // showSorterTooltip={false}
183
185
  size: utils_1.GLOBAL.CONFIG.TABLE.SIZE }, props, tableProps, { className: utils_1.StringUtil.className(['c-table'], props.className), pagination: false, columns: columns, locale: { emptyText: react_1.default.createElement(antd_1.Empty, { style: { marginTop: 24 } }) }, dataSource: list, loading: isQuerying, onChange: (x, y, field) => {
184
186
  if (field.column) {
@@ -45,7 +45,9 @@ export declare const ActionTree: React.ForwardRefExoticComponent<import("../../u
45
45
  defaultExpandAll?: boolean;
46
46
  mustSelect?: boolean;
47
47
  disabled?: boolean;
48
- disabledNode?: (node: PlainObject) => boolean;
48
+ disabledNode?: (node: PlainObject) => boolean; /**
49
+ * 清理缓存方法
50
+ */
49
51
  onSelect?: (key: Key, node: PlainObject, parentNode: PlainObject, crumb: PlainObject[], pos: number[]) => void;
50
52
  searchValue?: string;
51
53
  } & ActionProps & CacheTree & React.RefAttributes<ActionRef>>;
@@ -81,6 +81,7 @@ const _Actiontree = (0, react_1.forwardRef)((props, ref) => {
81
81
  canUpdate: false,
82
82
  canUpdateRoot: false,
83
83
  canDelete: false,
84
+ canDeleteRoot: false,
84
85
  canSort: false,
85
86
  notCache: false,
86
87
  };
@@ -99,8 +100,11 @@ const _Actiontree = (0, react_1.forwardRef)((props, ref) => {
99
100
  if (props.canUpdateRoot)
100
101
  action.canUpdateRoot = true;
101
102
  }
102
- if (props.canDelete)
103
+ if (props.canDelete) {
103
104
  action.canDelete = true;
105
+ if (props.canDeleteRoot)
106
+ action.canDeleteRoot = true;
107
+ }
104
108
  if (props.canSort && treeState.sortField)
105
109
  action.canSort = true;
106
110
  }
@@ -393,9 +397,8 @@ const _Actiontree = (0, react_1.forwardRef)((props, ref) => {
393
397
  let rootPath = '';
394
398
  let arr;
395
399
  const { idForApiField } = props;
396
- const { keyField, parentField, titleField, treeData } = treeState;
400
+ const { keyField, parentField, titleField, treeData, } = treeState;
397
401
  const { api, objectName } = action;
398
- const idField = idForApiField || keyField;
399
402
  if (root.length == 0) {
400
403
  arr = lodash_1.default.concat([], treeData);
401
404
  }
@@ -404,8 +407,7 @@ const _Actiontree = (0, react_1.forwardRef)((props, ref) => {
404
407
  rootPath = nodePath + '.children';
405
408
  arr = lodash_1.default.concat([], lodash_1.default.get(treeData, rootPath));
406
409
  }
407
- const delId = node[idField];
408
- const resp = yield utils_1.Ajax.DELETE(api, { ids: delId });
410
+ const resp = yield utils_1.Ajax.DELETE(api, { ids: node[idForApiField || keyField] });
409
411
  if (resp.code != '0') {
410
412
  antd_1.message.error(txt(Const_1.V.ACT_DELETE_FAIL_NAMED, `${objectName} : ${node[titleField]}`));
411
413
  return;
@@ -413,10 +415,10 @@ const _Actiontree = (0, react_1.forwardRef)((props, ref) => {
413
415
  props.clearCache(node[parentField]);
414
416
  let tree = lodash_1.default.concat([], treeData);
415
417
  if (rootPath) {
416
- lodash_1.default.set(tree, rootPath, utils_1.ArrayUtil.del(lodash_1.default.get(tree, rootPath), delId, keyField));
418
+ lodash_1.default.set(tree, rootPath, utils_1.ArrayUtil.del(lodash_1.default.get(tree, rootPath), node[keyField], keyField));
417
419
  }
418
420
  else {
419
- tree = utils_1.ArrayUtil.del(tree, delId, keyField);
421
+ tree = utils_1.ArrayUtil.del(tree, node[keyField], keyField);
420
422
  }
421
423
  setTreeData(tree);
422
424
  antd_1.message.success(txt(Const_1.V.ACT_DELETE_SUCCESS_NAMED, `${objectName} : ${node[titleField]}`));
@@ -501,12 +503,64 @@ const _Actiontree = (0, react_1.forwardRef)((props, ref) => {
501
503
  setTreeData(tree);
502
504
  antd_1.message.success(txt(Const_1.V.TREE_SORT_SUCCESS));
503
505
  });
504
- return react_1.default.createElement(ActionTreeContext.Provider, { value: {
505
- action,
506
- showAdd, showEdit, del, up, down,
507
- } },
506
+ const ADD_TITLE = () => {
507
+ // console.log(modals.modalState)
508
+ const { pos, node } = modals.modalState.extra || {};
509
+ if (!action.canSort) {
510
+ if (pos == INSER_POS.INNER) {
511
+ return react_1.default.createElement("span", null,
512
+ "\u6DFB\u52A0 ",
513
+ react_1.default.createElement("b", null, action.objectName),
514
+ " (\u4ECE\u5C5E\u4E8E ",
515
+ react_1.default.createElement("b", null, node[treeState.titleField]),
516
+ ") ");
517
+ }
518
+ return react_1.default.createElement("span", null,
519
+ "\u5728\u6839\u8282\u70B9\u6DFB\u52A0 ",
520
+ react_1.default.createElement("b", null, action.objectName));
521
+ }
522
+ switch (pos) {
523
+ case INSER_POS.TOP:
524
+ return react_1.default.createElement("span", null,
525
+ "\u5728\u9876\u90E8\u6DFB\u52A0 ",
526
+ react_1.default.createElement("b", null, action.objectName));
527
+ case INSER_POS.BOTTOM:
528
+ return react_1.default.createElement("span", null,
529
+ "\u5728\u5E95\u90E8\u6DFB\u52A0 ",
530
+ react_1.default.createElement("b", null, action.objectName));
531
+ case INSER_POS.INNER:
532
+ return react_1.default.createElement("span", null,
533
+ "\u6DFB\u52A0 ",
534
+ react_1.default.createElement("b", null, action.objectName),
535
+ " (\u4ECE\u5C5E\u4E8E ",
536
+ react_1.default.createElement("b", null, node[treeState.titleField]),
537
+ ") ");
538
+ case INSER_POS.BEFORE:
539
+ return react_1.default.createElement("span", null,
540
+ "\u5728 ",
541
+ react_1.default.createElement("b", null, node[treeState.titleField]),
542
+ " \u524D\u9762\u6DFB\u52A0 ",
543
+ react_1.default.createElement("b", null, action.objectName));
544
+ case INSER_POS.AFTER:
545
+ return react_1.default.createElement("span", null,
546
+ "\u5728 ",
547
+ react_1.default.createElement("b", null, node[treeState.titleField]),
548
+ " \u540E\u9762\u6DFB\u52A0 ",
549
+ react_1.default.createElement("b", null, action.objectName));
550
+ default:
551
+ return react_1.default.createElement("span", null,
552
+ "\u6DFB\u52A0 ",
553
+ react_1.default.createElement("b", null, action.objectName));
554
+ }
555
+ };
556
+ return react_1.default.createElement(ActionTreeContext.Provider, { value: { action, showAdd, showEdit, del, up, down, } },
508
557
  props.children,
509
- react_1.default.createElement(UFormModal_1.UFormModal, Object.assign({ autoTitle: { field: treeState.titleField, label: action.objectName } }, modals.modalState.modalProps, { fields: FIELDS.current, default: getDefault(), onOk: data => {
558
+ react_1.default.createElement(UFormModal_1.UFormModal, Object.assign({ title: modals.modalState.isEdit ? react_1.default.createElement("span", null,
559
+ " ",
560
+ txt(Const_1.V.ACT_UPDATE),
561
+ action.objectName,
562
+ " : ",
563
+ react_1.default.createElement("b", null, treeState.titleField)) : ADD_TITLE() }, modals.modalState.modalProps, { fields: FIELDS.current, default: getDefault(), onOk: data => {
510
564
  modals.hide();
511
565
  if (modals.modalState.isEdit) {
512
566
  update(data, modals.modalState.extra.position);
@@ -521,14 +575,17 @@ const _Actiontree = (0, react_1.forwardRef)((props, ref) => {
521
575
  */
522
576
  exports.ActionTree = (0, react_1.forwardRef)((props, ref) => react_1.default.createElement(BaseTree_1.BaseTree, Object.assign({}, props),
523
577
  react_1.default.createElement(_Actiontree, Object.assign({}, props, { ref: ref }))));
524
- const getActionParam = (node, position, state, search, disabledNode, context, parentLen) => {
525
- const param = (0, BaseTree_1.getNodeParam)(node, position, state, search, disabledNode);
578
+ const getActionParam = (node, position, state, search, disabledNode, folderChecker, context, parentLen) => {
579
+ const param = (0, BaseTree_1.getNodeParam)(node, position, state, search, disabledNode, folderChecker);
526
580
  const isRoot = position.length == 1;
527
581
  if (param.disabled)
528
582
  return param;
529
- const { action: { canAdd, canAddRoot, canUpdate, canUpdateRoot, canDelete, canSort } } = context;
583
+ const { action: { canAdd, canAddRoot, canUpdate, canUpdateRoot, canDelete, canDeleteRoot, canSort } } = context;
584
+ if (param.selectable === false && (canAdd || canDelete || canSort || canUpdate)) {
585
+ param.selectable = true;
586
+ }
530
587
  const actions = [];
531
- if (canAdd) {
588
+ if (canAdd && (!lodash_1.default.isFunction(folderChecker) || folderChecker(node))) {
532
589
  if (!canSort || !canAddRoot && isRoot) {
533
590
  actions.push(react_1.default.createElement(Dropdown_1.Dropdown, { trigger: ["click"], menu: {
534
591
  items: [
@@ -560,7 +617,7 @@ const getActionParam = (node, position, state, search, disabledNode, context, pa
560
617
  actions.push(react_1.default.createElement(Icon_1.Icon, { type: "arrow-down", title: txt(Const_1.V.ACT_UPDATE_TITLE_NAMED, node[state.titleField]), onClick: () => context.down(node, position) }));
561
618
  }
562
619
  }
563
- if (!isRoot && canDelete) {
620
+ if (canDelete && (!isRoot || canDeleteRoot)) {
564
621
  actions.push(react_1.default.createElement(Popconfirm_1.Popconfirm, { onConfirm: () => context.del(node, position), title: txt(Const_1.V.ACT_DELETE_CONFIRM, node[state.titleField]) },
565
622
  react_1.default.createElement("span", { onClick: (e) => utils_1.PageUtil.stopEvent(e), className: "vicon vicon-delete vicon-clickable", title: txt(Const_1.V.ACT_DELETE) + ' ' + node[state.titleField] })));
566
623
  }
@@ -575,7 +632,7 @@ const getActionParam = (node, position, state, search, disabledNode, context, pa
575
632
  const renderNode = (props, node, position, state, search, context, parentLen) => {
576
633
  if (search.keyword && !search.match.has(position.join('-')))
577
634
  return utils_1.Const.NONE;
578
- const param = getActionParam(node, position, state, search, props.disabledNode, context, parentLen);
635
+ const param = getActionParam(node, position, state, search, props.disabledNode, props.folderChecker, context, parentLen);
579
636
  if (lodash_1.default.isArray(node.children) && node.children.length) {
580
637
  return react_1.default.createElement(antd_1.Tree.TreeNode, Object.assign({ isLeaf: false }, param), renderNodes(props, state, node.children, position, search, context));
581
638
  }
@@ -590,7 +647,7 @@ const renderNode = (props, node, position, state, search, context, parentLen) =>
590
647
  };
591
648
  const renderNodes = (props, state, data, position, search, context) => data.map((item, idx) => renderNode(props, item, [...position, idx], state, search, context, data.length));
592
649
  const renderRoot = (props, state, context) => {
593
- const { search, treeData } = state;
650
+ const { search, treeData, folderChecker } = state;
594
651
  if (search.keyword) {
595
652
  if (search.match.size == 0)
596
653
  return react_1.default.createElement(antd_1.Tree.TreeNode, { isLeaf: true, title: react_1.default.createElement(antd_1.Empty, { description: txt(Const_1.V.TXT_FIND_NULL, search.word) }), selectable: false, className: "c-tree-empty" });
@@ -616,7 +673,7 @@ const renderRoot = (props, state, context) => {
616
673
  else if (canAdd && treeData.length == 1) {
617
674
  // 说明 兼容树业务:有些项目技术上使用一个根节点,
618
675
  // 当根节点只有一个时,则在业务上认为此节点为固定根节点
619
- const param = getActionParam(treeData[0], [0], state, search, props.disabledNode, context, 1);
676
+ const param = getActionParam(treeData[0], [0], state, search, props.disabledNode, props.folderChecker, context, 1);
620
677
  const childs = (treeData[0].children || []);
621
678
  return react_1.default.createElement(antd_1.Tree.TreeNode, Object.assign({}, param),
622
679
  react_1.default.createElement(antd_1.Tree.TreeNode, { isLeaf: true, className: 'c-tree-add-root', selectable: false, checkable: false, selected: false, title: react_1.default.createElement("a", { onClick: evt => {
@@ -4,7 +4,7 @@ import type { BaseTreeOpts, SearchResult, TreeNodeData } from '../../utils/TreeU
4
4
  import type { AntTreeNodeProps, TreeProps } from 'antd/es/tree';
5
5
  import type { PropsWithChildren, ReactNode } from 'react';
6
6
  import type { BaseTreeProps } from './index';
7
- import type { PlainObject } from '../../basetype';
7
+ import type { Key, PlainObject } from '../../basetype';
8
8
  export type BaseTreeState = Required<BaseTreeOpts> & {
9
9
  className: string;
10
10
  baseProps: TreeProps;
@@ -19,13 +19,18 @@ export type BaseTreeState = Required<BaseTreeOpts> & {
19
19
  field: string;
20
20
  }[];
21
21
  };
22
+ type OnSelectFunction = (selectedKeys: Key[], info: {
23
+ selected?: boolean;
24
+ selectedNodes: any[];
25
+ nativeEvent?: MouseEvent;
26
+ }, tree?: PlainObject[]) => void;
22
27
  type BaseTreeContext = {
23
28
  treeState: BaseTreeState;
24
- onSelect: TreeProps['onSelect'];
29
+ onSelect: OnSelectFunction;
25
30
  setTreeData: (treeData: TreeNodeData[]) => void;
26
31
  };
27
32
  declare const BaseTreeContext: React.Context<BaseTreeContext>;
28
33
  export declare const useBaseTree: () => BaseTreeContext;
29
34
  export declare const BaseTree: React.FC<PropsWithChildren<BaseTreeProps>>;
30
- export declare const getNodeParam: (node: any, position: number[], state: BaseTreeState, search: SearchResult, disabledNode: (node: PlainObject) => boolean) => AntTreeNodeProps;
35
+ export declare const getNodeParam: (node: any, position: number[], state: BaseTreeState, search: SearchResult, disabledNode: (node: PlainObject) => boolean, folderChecker: (node: PlainObject) => boolean) => AntTreeNodeProps;
31
36
  export {};
@@ -60,6 +60,7 @@ const BaseTree = (props) => {
60
60
  sortField: null,
61
61
  parentField: null,
62
62
  langs: null,
63
+ folderChecker: null,
63
64
  };
64
65
  if (props.rootCode)
65
66
  DEFAULT.rootCode = props.rootCode;
@@ -71,6 +72,9 @@ const BaseTree = (props) => {
71
72
  DEFAULT.sortField = props.sortField;
72
73
  if (props.parentField)
73
74
  DEFAULT.parentField = props.parentField;
75
+ if (props.folderChecker)
76
+ DEFAULT.folderChecker = props.folderChecker;
77
+ // DEFAULT.
74
78
  // if(props.searchValue) DEFAULT.searchValue = props.searchValue;
75
79
  // Support I18N Title Field
76
80
  if (lodash_1.default.isString(props.titleField)) {
@@ -115,7 +119,7 @@ const BaseTree = (props) => {
115
119
  }, [state.treeData]);
116
120
  const setTreeData = (treeData) => setState({ treeData: [...treeData] });
117
121
  (0, react_1.useEffect)(() => searchByKeyWord(props.searchValue), [props.searchValue]);
118
- const onSelect = (0, react_1.useCallback)((selectedKeys, evt) => {
122
+ const onSelect = (0, react_1.useCallback)((selectedKeys, evt, tree) => {
119
123
  utils_1.PageUtil.stopEvent(evt === null || evt === void 0 ? void 0 : evt.nativeEvent);
120
124
  if (props.mustSelect && selectedKeys.length == 0)
121
125
  return;
@@ -137,7 +141,7 @@ const BaseTree = (props) => {
137
141
  let key = '';
138
142
  for (let idx of position) {
139
143
  key += `[${idx}]`;
140
- // crumb.push(_.omit(_.get(tree || state.treeData, key), 'children'));
144
+ crumb.push(lodash_1.default.omit(lodash_1.default.get(tree || state.treeData, key), 'children'));
141
145
  key += `.children`;
142
146
  }
143
147
  props.onSelect(selectedKeys[0], crumb[crumb.length - 1], crumb.length > 1 ? crumb[crumb.length - 2] : null, crumb, position);
@@ -146,7 +150,7 @@ const BaseTree = (props) => {
146
150
  return react_1.default.createElement(BaseTreeContext.Provider, { value: { treeState: state, onSelect, setTreeData } }, props.children);
147
151
  };
148
152
  exports.BaseTree = BaseTree;
149
- const getNodeParam = (node, position, state, search, disabledNode) => {
153
+ const getNodeParam = (node, position, state, search, disabledNode, folderChecker) => {
150
154
  const { titleField, keyField, iconField, } = state;
151
155
  let param = { key: node[keyField], data: { node, position } };
152
156
  if (search.keyword) {
@@ -160,6 +164,11 @@ const getNodeParam = (node, position, state, search, disabledNode) => {
160
164
  param.disabled = true;
161
165
  }
162
166
  }
167
+ else if (lodash_1.default.isFunction(folderChecker)) {
168
+ if (folderChecker(node)) {
169
+ param.selectable = false;
170
+ }
171
+ }
163
172
  if (iconField != null) {
164
173
  if (lodash_1.default.isString(iconField)) {
165
174
  let icon = node[iconField];
@@ -59,7 +59,6 @@ const _Ftree = (props) => {
59
59
  const tree = utils_1.TreeUtil.buildFlatTree(treeState, (0, ActionTree_1.getResponseList)(rootResp));
60
60
  setTreeData(tree);
61
61
  if (props.mustSelect && tree.length > 0) {
62
- //@ts-ignore
63
62
  onSelect([tree[0][treeState.keyField]], { selectedNodes: [{ data: { node: tree[0], position: [0] } }] }, tree);
64
63
  }
65
64
  setInit(true);
@@ -56,11 +56,10 @@ const _Stree = (props) => {
56
56
  }
57
57
  setTreeData(tree);
58
58
  if (props.mustSelect && tree.length > 0) {
59
- // @ts-ignore
60
59
  onSelect([tree[0][treeState.keyField]], { selectedNodes: [{ data: { node: tree[0], position: [0] } }] }, tree);
61
60
  }
62
61
  setInit(true);
63
- }, []);
62
+ }, [props.treeData]);
64
63
  if (!init)
65
64
  return utils_1.Const.NONE;
66
65
  const treeProps = {};
@@ -73,20 +72,20 @@ const _Stree = (props) => {
73
72
  }
74
73
  return react_1.default.createElement(antd_1.Tree, Object.assign({}, treeState.baseProps, treeProps, { className: treeState.className, disabled: props.disabled, selectedKeys: treeState.selectedKeys, onSelect: onSelect }), renderRoot(props, treeState));
75
74
  };
76
- const renderNode = (node, position, state, search, disabledNode) => {
75
+ const renderNode = (node, position, state, search, disabledNode, folderChecker) => {
77
76
  if (search.keyword && !search.match.has(position.join('-')))
78
77
  return utils_1.Const.NONE;
79
- const param = (0, BaseTree_1.getNodeParam)(node, position, state, search, disabledNode);
78
+ const param = (0, BaseTree_1.getNodeParam)(node, position, state, search, disabledNode, folderChecker);
80
79
  if (lodash_1.default.isArray(node.children) && node.children.length) {
81
- return react_1.default.createElement(antd_1.Tree.TreeNode, Object.assign({}, param, { isLeaf: false }), renderNodes(node.children, position, state, search, disabledNode));
80
+ return react_1.default.createElement(antd_1.Tree.TreeNode, Object.assign({}, param, { isLeaf: false }), renderNodes(node.children, position, state, search, disabledNode, folderChecker));
82
81
  }
83
82
  return react_1.default.createElement(antd_1.Tree.TreeNode, Object.assign({}, param, { isLeaf: true }));
84
83
  };
85
- const renderNodes = (data, position, state, search, disabledNode) => data.map((item, idx) => renderNode(item, [...position, idx], state, search, disabledNode));
84
+ const renderNodes = (data, position, state, search, disabledNode, folderChecker) => data.map((item, idx) => renderNode(item, [...position, idx], state, search, disabledNode, folderChecker));
86
85
  const renderRoot = (props, state) => {
87
86
  const { search } = state;
88
87
  if (search.keyword && search.match.size == 0) {
89
88
  return react_1.default.createElement(antd_1.Tree.TreeNode, { isLeaf: true, title: react_1.default.createElement(antd_1.Empty, { description: utils_1.i18n.txt(Const_1.V.TXT_FIND_NULL, search.word) }), selectable: false, className: "c-tree-empty" });
90
89
  }
91
- return state.treeData.map((node, idx) => renderNode(node, [idx], state, search, props.disabledNode));
90
+ return state.treeData.map((node, idx) => renderNode(node, [idx], state, search, props.disabledNode, props.folderChecker));
92
91
  };
@@ -49,7 +49,8 @@ export type BaseTreeProps = BaseTreeOpts & {
49
49
  * */
50
50
  disabled?: boolean;
51
51
  /**
52
- * 是否禁用结点,返回true为禁用
52
+ * 是否禁用结点,返回true为禁用,
53
+ * 说明:如果是要禁用文件夹,建议使用 folderChecker
53
54
  */
54
55
  disabledNode?: (node: PlainObject) => boolean;
55
56
  /**
@@ -100,6 +101,10 @@ export type ActionProps = {
100
101
  * 是否可以删除节点
101
102
  */
102
103
  canDelete?: boolean;
104
+ /**
105
+ * 是否可以删除根节点(第一层的节点)
106
+ */
107
+ canDeleteRoot?: boolean;
103
108
  /**
104
109
  * 是否支持排序
105
110
  */
@@ -147,6 +147,7 @@ const renderFormField = (state, field, form, update, data) => {
147
147
  if (hiddenFields.current.has(field.field)) {
148
148
  return react_1.default.createElement(antd_1.Form.Item, { style: { display: 'none' } }, form.getFieldDecorator(field.field)(react_1.default.createElement(input.component, {
149
149
  form,
150
+ // initValue:
150
151
  field,
151
152
  disabled: disableFields.current.has(field.field),
152
153
  options: (0, _FormUtils_1.getOptions)(optionFields.current.has(field.field) ? optionFields.current.get(field.field) : (field.options || []), field, data)
@@ -154,7 +155,7 @@ const renderFormField = (state, field, form, update, data) => {
154
155
  }
155
156
  const [required, rules] = (0, _FormUtils_1.requireStatus)(field, requireFields.current, disableFields.current, hiddenFields.current);
156
157
  const options = {
157
- // initialValue: form.getFieldValue(field.field),
158
+ initialValue: form.getFieldValue(field.field),
158
159
  validateFirst: true,
159
160
  rules,
160
161
  getValueFromEvent: (value, extra) => onChangeEvent(state, field, form, update, value, extra),
@@ -346,9 +347,11 @@ const _FormField = (props) => {
346
347
  const { form } = props;
347
348
  const update = (0, useUpdate_1.useUpdate)();
348
349
  (0, react_1.useEffect)(() => {
350
+ // console.log('dfdsaupdate')
349
351
  const values = (0, exports.initValue)(props);
350
352
  props.initRef.current = values;
351
- form.setFieldsValue(values);
353
+ console.log(values);
354
+ form.setFieldsValue(props.initRef.current);
352
355
  props.fields.map(field => {
353
356
  if (field == null || field == false)
354
357
  return;
@@ -358,10 +361,12 @@ const _FormField = (props) => {
358
361
  if (lodash_1.default.isArray(field.link) && field.link.length > 0)
359
362
  setTimeout(() => onChangeEvent(props.state, field, form, update, values[field.field]), 2);
360
363
  });
364
+ // console.log('google')
361
365
  update();
362
366
  }, []);
363
- if (props.initRef.current === null)
364
- return utils_1.Const.NONE;
367
+ // console.log(props.initRef.current)
368
+ // return Const.NONE
369
+ // if (props.initRef.current === null) return Const.NONE;
365
370
  const data = form.getFieldsValue();
366
371
  return props.fields.map(field => {
367
372
  if (field == null || field === false)
@@ -392,8 +397,7 @@ const _FormGroup = (props) => {
392
397
  });
393
398
  update();
394
399
  }, []);
395
- if (props.initRef.current === null)
396
- return utils_1.Const.NONE;
400
+ // if (props.initRef.current === null) return Const.NONE;
397
401
  const data = form.getFieldsValue();
398
402
  return props.fields.map(group => {
399
403
  if (group == null || group === false)
@@ -449,12 +453,39 @@ const _UForm = (0, react_1.forwardRef)((props, ref) => {
449
453
  checkMultiple(item);
450
454
  }
451
455
  });
456
+ // initRef.current = initValue({ ...props, state })
457
+ // if (state.isGroup) {
458
+ // props.fields.map(group => {
459
+ // if (group == null || group == false) return;
460
+ // (group as UFormFieldGroup).fields.map(field => {
461
+ // // @ts-ignore
462
+ // if (field == null || field == false) return;
463
+ // if (!_.has(initRef.current, field.field) || initRef.current[field.field] === null || initRef.current[field.field] === undefined) return;
464
+ // // setFieldsValue 要 render 后才能get ,延时执行 link事件
465
+ // // if (_.isArray(field.link) && field.link.length > 0) setTimeout(() => onChangeEvent(state, field, form, update, values[field.field]), 2);
466
+ // })
467
+ // })
468
+ // } else {
469
+ // props.fields.map(field => {
470
+ // if (field == null || field == false) return;
471
+ // if (!_.has(initRef.current, field.field) || initRef.current[field.field] === null || initRef.current[field.field] === undefined) return;
472
+ // // setFieldsValue 要 render 后才能get ,延时执行 link事件
473
+ // // if (_.isArray(field.link) && field.link.length > 0) setTimeout(() => onChangeEvent(props.state, field, form, update, values[field.field]), 2);
474
+ // })
475
+ // }
476
+ // form.setFieldsValue(initRef.current, () => setChecked(true))
452
477
  setChecked(true);
453
478
  }, []);
454
- return checked && react_1.default.createElement(antd_1.Form
479
+ if (!checked)
480
+ return utils_1.Const.NONE;
481
+ // console.log(initRef)
482
+ // console.log('fdsafd')
483
+ return react_1.default.createElement(antd_1.Form
484
+ // defaultValue={initRef.current}
455
485
  // initialValues={props.default}
456
486
  // size={props.size || GLOBAL.CONFIG.FORM.SIZE}
457
487
  , {
488
+ // defaultValue={initRef.current}
458
489
  // initialValues={props.default}
459
490
  // size={props.size || GLOBAL.CONFIG.FORM.SIZE}
460
491
  className: state.isGroup ? 'c-form c-form-group' : 'c-form', style: { width: state.width }, form: form },
@@ -470,6 +501,7 @@ class _UFormAdaptor extends react_1.default.Component {
470
501
  // 3.0 适配层
471
502
  const UFormAdaptor = (0, react_1.memo)((0, react_1.forwardRef)((props, ref) => {
472
503
  const FROM = antd_1.Form.create()(_UFormAdaptor);
504
+ // <ConfigProvider ></ConfigProvider>
473
505
  return react_1.default.createElement(FROM, Object.assign({}, props, { aref: ref }));
474
506
  }));
475
507
  /**
@@ -480,5 +512,5 @@ const UFormAdaptor = (0, react_1.memo)((0, react_1.forwardRef)((props, ref) => {
480
512
  * 3. 支持 ref 控制方法
481
513
  * 4. filed 支持更多提示,验证方法
482
514
  */
483
- exports.UForm = react_1.default.forwardRef((props, ref) => react_1.default.createElement(FormWrapper_1.FormWrapper, Object.assign({ isInfo: false }, props),
515
+ exports.UForm = (0, react_1.forwardRef)((props, ref) => react_1.default.createElement(FormWrapper_1.FormWrapper, Object.assign({ isInfo: false }, props),
484
516
  react_1.default.createElement(UFormAdaptor, Object.assign({}, props, { ref: ref }))));
@@ -48,6 +48,9 @@ const FormWrapper_1 = require("./FormWrapper");
48
48
  const FORM_FIELDS = ['layout', 'fields', 'groupType', 'isEdit', 'tip', 'default', 'data', 'mode', 'size'];
49
49
  const UFormModal = (props) => {
50
50
  const ref = (0, react_1.useRef)(null);
51
+ const [open, afterClose] = (0, Modal_1.useDestoryModal)(props);
52
+ if (!open)
53
+ return utils_1.Const.NONE;
51
54
  let modalProps = {
52
55
  onOk: () => __awaiter(void 0, void 0, void 0, function* () {
53
56
  const result = yield ref.current.validate();
@@ -143,7 +146,7 @@ const UFormModal = (props) => {
143
146
  });
144
147
  }
145
148
  }
146
- return react_1.default.createElement(Modal_1.Modal, Object.assign({ maskClosable: utils_1.GLOBAL.CONFIG.FORM.maskClosable, destroyOnClose: true }, lodash_1.default.omit(props, FORM_FIELDS), { className: utils_1.StringUtil.className(['u-form-modal'], props.className), onCancel: () => props.onCancel() }, modalProps),
149
+ return react_1.default.createElement(Modal_1.Modal, Object.assign({ maskClosable: utils_1.GLOBAL.CONFIG.FORM.maskClosable, destroyOnClose: true, afterClose: afterClose }, lodash_1.default.omit(props, FORM_FIELDS), { className: utils_1.StringUtil.className(['u-form-modal'], props.className), onCancel: () => props.onCancel() }, modalProps),
147
150
  react_1.default.createElement(UForm_1.UForm, Object.assign({}, lodash_1.default.pick(props, FORM_FIELDS), { ref: ref })));
148
151
  };
149
152
  exports.UFormModal = UFormModal;
@@ -13,6 +13,9 @@ const Const_1 = require("../_setup/Const");
13
13
  const FormWrapper_1 = require("./FormWrapper");
14
14
  const FORM_FIELDS = ['layout', 'fields', 'groupType', 'isEdit', 'tip', 'default', 'data', 'mode', 'hideBorder', 'theme'];
15
15
  const UInfoModal = (props) => {
16
+ const [open, afterClose] = (0, Modal_1.useDestoryModal)(props);
17
+ if (!open)
18
+ return utils_1.Const.NONE;
16
19
  const param = lodash_1.default.omit(props, FORM_FIELDS);
17
20
  if (!lodash_1.default.has(props, 'title') && lodash_1.default.has(props, 'autoTitle')) {
18
21
  let name = null;
@@ -8,17 +8,22 @@ const react_1 = __importDefault(require("react"));
8
8
  const lodash_1 = __importDefault(require("lodash"));
9
9
  const UFormModal_1 = require("./UFormModal");
10
10
  const UInfoModal_1 = require("./UInfoModal");
11
+ const Modal_1 = require("../_adapt/Modal");
12
+ const utils_1 = require("../../utils");
11
13
  const UModal = (props) => {
14
+ const [open, afterClose] = (0, Modal_1.useDestoryModal)(props);
15
+ if (!open)
16
+ return utils_1.Const.NONE;
12
17
  // 指定模式时,以指定的模式为准
13
18
  if (lodash_1.default.has(props, 'mode')) {
14
19
  if (props.mode == 'INFO')
15
- return react_1.default.createElement(UInfoModal_1.UInfoModal, Object.assign({}, props));
16
- return react_1.default.createElement(UFormModal_1.UFormModal, Object.assign({}, props));
20
+ return react_1.default.createElement(UInfoModal_1.UInfoModal, Object.assign({ afterClose: afterClose }, props));
21
+ return react_1.default.createElement(UFormModal_1.UFormModal, Object.assign({ afterClose: afterClose }, props));
17
22
  }
18
23
  if (props.isEdit)
19
- return react_1.default.createElement(UFormModal_1.UFormModal, Object.assign({}, props));
24
+ return react_1.default.createElement(UFormModal_1.UFormModal, Object.assign({ afterClose: afterClose }, props));
20
25
  if (props.data && lodash_1.default.keys(props.data).length)
21
- return react_1.default.createElement(UInfoModal_1.UInfoModal, Object.assign({}, props));
22
- return react_1.default.createElement(UFormModal_1.UFormModal, Object.assign({}, props));
26
+ return react_1.default.createElement(UInfoModal_1.UInfoModal, Object.assign({ afterClose: afterClose }, props));
27
+ return react_1.default.createElement(UFormModal_1.UFormModal, Object.assign({ afterClose: afterClose }, props));
23
28
  };
24
29
  exports.UModal = UModal;
@@ -6,8 +6,8 @@ export { UInfoModal } from './UInfoModal';
6
6
  export { UModal } from './UModal';
7
7
  export { UDescriptions } from './UDescriptions';
8
8
  import type { BaseOption, PlainObject, BaseItem } from '../../basetype';
9
- import type { VModalProps } from '../_adapt/Modal';
10
- import type { OButtonProps as ButtonProps } from '../_adapt/Button';
9
+ import type { ModalProps } from '../_adapt/Modal';
10
+ import type { ButtonProps } from '../_adapt/Button';
11
11
  import type { ValidationRule } from 'antd/es/form/Form';
12
12
  /**
13
13
  * 表单布局方式 simple = 1 列 (比较宽松) | common = 2 列 (常规) | compress = 3列 (紧凑)
@@ -22,6 +22,7 @@ export type UFormLayout = 'common' | 'simple' | 'compress';
22
22
  export type GroupType = 'default' | 'tabs' | 'collapse';
23
23
  export type LinkValue = string | number | boolean;
24
24
  import type { _FieldType } from './_FieldType';
25
+ import type { SizeType } from '../_adapt/_Antd5';
25
26
  /**
26
27
  * 联动结果 : 改变目标字段的交互属性
27
28
  * 所有属性为可选,需要改变几项属性,则只返回包含几个属性的对象,
@@ -223,6 +224,10 @@ export type UFromProps = {
223
224
  * 表单宽度,仅支持数字,一般不传,需要时使用,
224
225
  */
225
226
  width?: number;
227
+ /**
228
+ * 表单大小
229
+ */
230
+ size?: SizeType;
226
231
  /**
227
232
  * 说明:
228
233
  *
@@ -286,7 +291,7 @@ export type UFromAction = ButtonProps & {
286
291
  * 新版本 ModalProps 只支持 open 且必传,
287
292
  * 不使用 deprecated 属性
288
293
  */
289
- export type UModalProps = UFromProps & Omit<VModalProps, 'children'> & {
294
+ export type UModalProps = UFromProps & Omit<ModalProps, 'children'> & {
290
295
  /**
291
296
  * open 为必填项,不使用废弃的 visable 属性
292
297
  */